Ketika beberapa gerbang masuk melayani instans Classic Load Balancer (CLB) yang berbeda tetapi memerlukan pengaturan Pendengar yang sama, mengonfigurasi setiap gerbang secara terpisah menyebabkan duplikasi dan risiko deviasi. Di Service Mesh (ASM), Anda dapat memberikan label bersama pada beberapa Penerapan gerbang masuk dan menyetel label yang sama di bidang spec.selector pada satu resource Gateway. Dengan demikian, satu konfigurasi gerbang Istio dapat melayani semua gerbang masuk yang sesuai.
Topik ini menjelaskan cara menambahkan label bersama ke gerbang masuk dan mengonfigurasi pemilih Gateway agar satu gerbang Istio berlaku untuk beberapa gerbang masuk.
Cara kerja pemilih gerbang
Resource Gateway menggunakan spec.selector untuk mencocokkan label pada Pod gerbang masuk. Setiap gerbang masuk yang Pod-nya memiliki label yang sesuai akan menerima konfigurasi Gateway tersebut.
Sebagai contoh, jika dua Penerapan gerbang masuk keduanya memiliki label key1: value1, maka Gateway dengan selector: {key1: value1} akan berlaku untuk keduanya:
Rekaman A DNS (xxx.xxx.cn)
|-- Instans CLB 1 --> Gerbang masuk 1 --\
| +--> Gateway (selector: key1: value1) --> VirtualService
\-- Instans CLB 2 --> Gerbang masuk 2 --/Resource Gateway hanya mengonfigurasi proxy agar mendengarkan pada Port tertentu (Lapisan 4–6). Resource ini tidak menentukan aturan routing Lapisan 7. Untuk mengarahkan traffic ke layanan backend, bind gerbang tersebut ke virtual service. Untuk detail referensi, lihat dokumentasi Istio mengenai Gateway dan VirtualService.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki instans ASM versi v1.13.4.46 atau lebih baru. Lihat Buat instans ASM
Menambahkan kluster ke instans ASM. Lihat Tambahkan kluster ke instans ASM
Men-deploy minimal dua gerbang masuk. Lihat Buat gerbang masuk
Men-deploy aplikasi di instans ASM. Lihat Deploy aplikasi di instans ASM
Langkah 1: Tambahkan label bersama ke setiap gerbang masuk
Tambahkan label yang sama ke setiap gerbang masuk yang harus berbagi gerbang Istio.
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.
Di halaman Mesh Management, klik nama instans ASM.
Di panel navigasi sebelah kiri, pilih ASM Gateways > Ingress Gateway.
Di halaman Ingress Gateway, temukan gerbang masuk pertama lalu klik YAML.
Pada dialog Edit, tambahkan bidang
podLabelsdi bawahspec, lalu klik OK.... spec: podLabels: key1: value1 ...Ulangi langkah 4–5 untuk setiap gerbang masuk tambahan yang harus berbagi gerbang Istio yang sama.
Verifikasi label
Jalankan perintah berikut untuk memastikan bahwa Pod setiap gerbang masuk memiliki label yang diharapkan:
kubectl get pods -n istio-system --show-labels | grep <ingress-gateway-name>Ganti <ingress-gateway-name> dengan nama Penerapan gerbang masuk Anda. Output harus menyertakan key1=value1 di kolom label. Contoh output:
ingress-gateway-1-xxx 1/1 Running 0 2d app=istio-ingressgateway,key1=value1,...Langkah 2: Konfigurasikan pemilih Gateway
Arahkan gerbang Istio ke gerbang masuk berlabel dengan menyetel spec.selector ke label yang sama.
Di halaman detail instans ASM, pilih ASM Gateways > Gateway di panel navigasi sebelah kiri.
Di halaman Gateway, temukan gerbang Istio target lalu klik YAML di kolom Actions.
Pada dialog Edit, atur bidang
selectoragar sesuai dengan label yang ditambahkan di Langkah 1, lalu klik OK. Karena kedua gerbang masuk kini memilikikey1: value1, resource Gateway tunggal ini berlaku untuk keduanya.apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: bookinfo-gateway namespace: default spec: selector: key1: value1 servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
Verifikasi binding Gateway
Jalankan perintah berikut untuk memastikan resource Gateway dikonfigurasi dengan benar:
kubectl get gateway bookinfo-gateway -n default -o yamlPeriksa apakah spec.selector menampilkan key1: value1 dan spec.servers mencantumkan Port dan protokol yang diharapkan. Contoh output:
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
name: bookinfo-gateway
namespace: default
spec:
selector:
key1: value1
servers:
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTPLangkah selanjutnya
Resource Gateway hanya mengonfigurasi Pendengar. Untuk mengarahkan traffic ke layanan backend, buat virtual service yang mereferensikan gerbang ini. Lihat Kelola virtual service.
Untuk detail mengenai bidang CRD Gateway dan gerbang masuk, lihat Bidang CRD untuk gerbang ASM.