Menyiapkan Pod Google Kubernetes Engine menggunakan injeksi Envoy otomatis
Ringkasan
Dalam mesh layanan, kode aplikasi Anda tidak perlu mengetahui konfigurasi jaringan Anda. Sebagai gantinya, aplikasi Anda berkomunikasi melalui bidang data, yang dikonfigurasi oleh bidang kontrol yang menangani jaringan layanan. Dalam panduan ini, Cloud Service Mesh adalah bidang kontrol Anda dan file bantuan Envoy {i>proxy<i} adalah bidang data Anda.
Injektor mobil sespan Envoy memudahkan penambahan file bantuan Envoy melakukan proxy ke Pod Google Kubernetes Engine. Saat injector sidecar Envoy menambahkan proxy, injector tersebut juga menyiapkan proxy tersebut untuk menangani traffic aplikasi dan terhubung ke Cloud Service Mesh untuk konfigurasi.
Panduan ini memandu Anda melakukan pengaturan sederhana Cloud Service Mesh dengan Google Kubernetes Engine. Langkah-langkah ini memberikan fondasi yang dapat Anda lanjutkan ke tingkat kasus penggunaan, seperti mesh layanan yang diperluas ke berbagai Google Kubernetes Engine cluster, dan mungkin, VM Compute Engine. Anda juga dapat menggunakan petunjuk ini jika Anda mengonfigurasi Cloud Service Mesh dengan VPC Bersama.
Proses penyiapan melibatkan:
- Membuat cluster GKE untuk workload Anda.
- Menginstal injector sidecar Envoy dan mengaktifkan injeksi.
- Men-deploy klien contoh dan memverifikasi injeksi.
- Men-deploy layanan Kubernetes untuk pengujian.
- Mengonfigurasi Cloud Service Mesh dengan Cloud Load Balancing komponen untuk mengarahkan lalu lintas ke layanan pengujian.
- Memverifikasi konfigurasi dengan mengirim permintaan dari klien contoh ke layanan pengujian.
Prasyarat
Sebelum mengikuti petunjuk dalam panduan ini, selesaikan prasyarat tugas yang dijelaskan dalam Bersiaplah untuk menyiapkan API pemilihan rute layanan dengan Envoy dan workload tanpa proxy.
Untuk informasi tentang versi Envoy yang didukung, lihat Catatan rilis Cloud Service Mesh.
Prasyarat tambahan dengan VPC Bersama
Jika Anda menyiapkan Cloud Service Mesh di lingkungan VPC Bersama, pastikan hal berikut.
- Anda memiliki izin dan peran yang benar untuk VPC Bersama.
- Anda telah menyiapkan project dan penagihan yang benar.
- Anda telah mengaktifkan penagihan di project.
- Anda telah mengaktifkan Cloud Service Mesh dan GKE API di masing-masing termasuk project host.
- Anda telah menyiapkan akun layanan yang benar untuk setiap project.
- Anda telah membuat jaringan VPC dan subnet.
- Anda telah mengaktifkan VPC Bersama.
Untuk mengetahui informasi selengkapnya, lihat VPC Bersama.
Mengonfigurasi peran IAM
Contoh konfigurasi peran IAM ini mengasumsikan bahwa host project untuk VPC Bersama memiliki dua subnet dan ada dua layanan project di VPC Bersama.
Di Cloud Shell, buat folder kerja (
WORKDIR)
tempat Anda membuat file yang terkait dengan bagian ini:mkdir -p ~/td-shared-vpc cd ~/td-shared-vpc export WORKDIR=$(pwd)
Mengonfigurasi izin IAM dalam project host agar layanan project dapat menggunakan resource di VPC bersama.
Pada langkah ini, Anda akan mengonfigurasi izin akses IAM sehingga
subnet-1
dapat diakses oleh project layanan 1 dansubnet-2
dapat diakses berdasarkan project layanan 2. Anda menetapkan peran Compute Network User IAM (roles/compute.networkUser
) ke akun layanan default compute Compute Engine dan akun layanan Google Cloud API di setiap project layanan untuk setiap subnet.Untuk project layanan 1, konfigurasikan izin IAM untuk
subnet-1
:export SUBNET_1_ETAG=$(gcloud beta compute networks subnets get-iam-policy subnet-1 --project ${HOST_PROJECT} --region ${REGION_1} --format=json | jq -r '.etag') cat > subnet-1-policy.yaml <<EOF bindings: - members: - serviceAccount:${SVC_PROJECT_1_API_SA} - serviceAccount:${SVC_PROJECT_1_GKE_SA} role: roles/compute.networkUser etag: ${SUBNET_1_ETAG} EOF gcloud beta compute networks subnets set-iam-policy subnet-1 \ subnet-1-policy.yaml \ --project ${HOST_PROJECT} \ --region ${REGION_1}
Untuk project layanan 2, konfigurasikan izin IAM untuk
subnet-2
:export SUBNET_2_ETAG=$(gcloud beta compute networks subnets get-iam-policy subnet-2 --project ${HOST_PROJECT} --region ${REGION_2} --format=json | jq -r '.etag') cat > subnet-2-policy.yaml <<EOF bindings: - members: - serviceAccount:${SVC_PROJECT_2_API_SA} - serviceAccount:${SVC_PROJECT_2_GKE_SA} role: roles/compute.networkUser etag: ${SUBNET_2_ETAG} EOF gcloud beta compute networks subnets set-iam-policy subnet-2 \ subnet-2-policy.yaml \ --project ${HOST_PROJECT} \ --region ${REGION_2}
Untuk setiap project layanan, Anda harus memberikan izin Peran IAM Pengguna Agen Layanan Host Kubernetes Engine (
roles/container.hostServiceAgentUser
) ke GKE akun layanan di project host:gcloud projects add-iam-policy-binding ${HOST_PROJECT} \ --member serviceAccount:${SVC_PROJECT_1_GKE_SA} \ --role roles/container.hostServiceAgentUser gcloud projects add-iam-policy-binding ${HOST_PROJECT} \ --member serviceAccount:${SVC_PROJECT_2_GKE_SA} \ --role roles/container.hostServiceAgentUser
Peran ini memungkinkan akun layanan GKE project layanan menggunakan akun layanan GKE project host untuk mengonfigurasi resource jaringan bersama.
Untuk setiap project layanan, berikan akun layanan default Compute Engine peran IAM Compute Network Viewer (
roles/compute.networkViewer
) di project host.gcloud projects add-iam-policy-binding ${SVC_PROJECT_1} \ --member serviceAccount:${SVC_PROJECT_1_COMPUTE_SA} \ --role roles/compute.networkViewer gcloud projects add-iam-policy-binding ${SVC_PROJECT_2} \ --member serviceAccount:${SVC_PROJECT_2_COMPUTE_SA} \ --role roles/compute.networkViewer
Saat proxy sidecar Envoy terhubung ke layanan xDS (Traffic Director API), proxy akan menggunakan akun layanan host virtual machine (VM) Compute Engine atau instance node GKE. Akun layanan harus memiliki izin IAM level project
compute.globalForwardingRules.get
. Peran Compute Network Viewer sudah cukup untuk langkah ini.
Membuat cluster GKE untuk workload Anda
Cluster GKE harus memenuhi persyaratan berikut untuk mendukung Mesh Layanan Cloud:
- Dukungan grup endpoint jaringan harus diaktifkan. Untuk mengetahui informasi dan contoh selengkapnya, lihat Grup endpoint jaringan mandiri.
- Akun layanan untuk node/pod GKE Anda harus memiliki untuk mengakses Traffic Director API. Untuk mengetahui informasi selengkapnya tentang izin yang diperlukan, lihat Mengaktifkan akun layanan untuk mengakses Traffic Director API.
Membuat cluster GKE
Buat cluster GKE bernama traffic-director-cluster
di zona pilihan Anda, misalnya, us-central1-a
.
gcloud container clusters create traffic-director-cluster \ --zone ZONE \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --enable-ip-alias
Mengarahkan kubectl ke cluster yang baru dibuat
Ubah konteks saat ini untuk kubectl
ke cluster yang baru dibuat dengan mengeluarkan
perintah berikut:
gcloud container clusters get-credentials traffic-director-cluster \ --zone ZONE
Menginstal injector sidecar Envoy
Bagian berikut memberikan petunjuk untuk menginstal injector sidecar Envoy. Saat injektor file bantuan diaktifkan, injektor ini akan otomatis men-deploy file bantuan proxy untuk beban kerja Google Kubernetes Engine baru dan lama. Karena Utusan injektor file bantuan berjalan di dalam cluster GKE, Anda harus menginstalnya sekali untuk setiap cluster jika Anda menggunakan Cloud Service Mesh untuk mendukung multi-cluster jaringan tambahan.
Mendownload sidecar injector
Download dan ekstrak injector sidecar Envoy.
wget https://storage.googleapis.com/traffic-director/td-sidecar-injector-xdsv3.tgz tar -xzvf td-sidecar-injector-xdsv3.tgz cd td-sidecar-injector-xdsv3
Mengonfigurasi sidecar injector
Jika Anda menggunakan API yang lebih lama, konfigurasi injektor file bantuan dengan mengedit
file specs/01-configmap.yaml
menjadi:
- Isi
TRAFFICDIRECTOR_GCP_PROJECT_NUMBER
dengan menggantiYOUR_PROJECT_NUMBER_HERE
dengan nomor project Anda. Nomor project adalah ID numerik untuk project Anda. Untuk informasi tentang mendapatkan daftar semua proyek Anda, lihat Mengidentifikasi project. - Isi
TRAFFICDIRECTOR_NETWORK_NAME
dengan menggantiYOUR_NETWORK_NAME_HERE
dengan nama jaringan Virtual Private Cloud Google Cloud yang ingin Anda gunakan dengan Cloud Service Mesh. Catat nama jaringan VPC ini, karena Anda akan memerlukannya nanti saat mengonfigurasi Cloud Service Mesh.
Jika Anda menggunakan API perutean layanan yang baru, yang sedang dalam tahap pratinjau:
- Isi
TRAFFICDIRECTOR_MESH_NAME
dengan mengganti "" dengan nama mesh layanan, untuk mendapatkan konfigurasi mesh layanan.- Perhatikan bahwa jika mengonfigurasi
Gateway
, Anda tidak menggunakan injektor sidecar. Anda men-deploy proxy Envoy sebagai Pod.
- Perhatikan bahwa jika mengonfigurasi
Misalnya, file mungkin terlihat seperti ini:
$ cat specs/01-configmap.yaml
apiVersion: v1 kind: ConfigMap metadata: name: istio namespace: istio-system data: mesh: |- defaultConfig: discoveryAddress: trafficdirector.googleapis.com:443 # Envoy proxy port to listen on for the admin interface. proxyAdminPort: 15000 proxyMetadata: # Google Cloud Project number where Cloud Service Mesh resources are configured. # This is a numeric identifier of your project (e.g. "111222333444"). # You can get a list of all your projects with their corresponding numbers by # using "gcloud projects list" command or looking it up under "Project info" # section of your Google Cloud console. # If left empty, configuration will be attempted to be fetched for the Google Cloud # project associated with service credentials. # Leaving empty is not recommended as it is not guaranteed to work in future # releases. TRAFFICDIRECTOR_GCP_PROJECT_NUMBER: "YOUR_PROJECT_NUMBER_HERE" # Google Cloud VPC network name for which the configuration is requested (This is the VPC # network name referenced in the forwarding rule in Google Cloud API). If left empty, # configuration will be attempted to be fetched for the VPC network over which # the request to Cloud Service Mesh (trafficdirector.googleapis.com) is sent out. # Leaving empty is not recommended as it is not guaranteed to work in future # releases. TRAFFICDIRECTOR_NETWORK_NAME: "default"
Anda juga dapat mengaktifkan logging dan pelacakan secara opsional untuk setiap proxy yang dimasukkan secara otomatis. Untuk informasi selengkapnya tentang konfigurasi ini, tinjau
Mengonfigurasi atribut tambahan untuk proxy file bantuan.
Saat Anda menggunakan injektor file bantuan, nilai TRAFFICDIRECTOR_ACCESS_LOG_PATH
hanya dapat disetel ke file
dalam direktori /etc/envoy/
. Misalnya,
direktori /etc/envoy/access.log
adalah lokasi yang valid.
Perlu diketahui bahwa TRAFFICDIRECTOR_INTERCEPTION_PORT
tidak boleh dikonfigurasi dalam
ConfigMap
, karena sudah dikonfigurasi oleh injektor file bantuan.
Menginstal injektor file bantuan ke cluster GKE Anda
Deploy injektor file bantuan.
kubectl apply -f specs/
Pastikan injektor file bantuan sedang berjalan.
kubectl get pods -A | grep istiod
Tindakan ini akan menampilkan output yang mirip dengan berikut ini:
istio-system istiod-6b475bfdf9-79965 1/1 Running 0 11s
Membuka port yang diperlukan di cluster pribadi
Jika Anda mengikuti petunjuk di Menyiapkan keamanan layanan Cloud Service Mesh dengan Envoy, Anda dapat melewati bagian ini dan melanjutkan ke bagian berikutnya, Mengaktifkan injeksi file bantuan.
Jika menginstal injector sidecar Envoy di cluster pribadi, Anda perlu membuka port TCP 9443 dalam aturan firewall ke node master agar webhook berfungsi dengan benar.
Langkah-langkah berikut menjelaskan cara mengupdate aturan firewall yang diperlukan. Perhatikan bahwa
perintah update
menggantikan aturan firewall yang ada, jadi Anda harus memastikan
untuk menyertakan port default 443 (HTTPS
) dan 10250 (kubelet
) serta
port baru yang ingin Anda buka.
Temukan rentang sumber (
master-ipv4-cidr
) cluster. Dalam , gantiCLUSTER_NAME
dengan nama cluster, yaitutraffic-director-cluster
:FIREWALL_RULE_NAME=$(gcloud compute firewall-rules list \ --filter="name~gke-CLUSTER_NAME-[0-9a-z]*-master" \ --format="value(name)")
Perbarui aturan firewall untuk membuka port TCP 9443 guna mengaktifkan injeksi otomatis:
gcloud compute firewall-rules update ${FIREWALL_RULE_NAME} \ --allow tcp:10250,tcp:443,tcp:9443
Mengaktifkan injeksi sidecar
Perintah berikut mengaktifkan injeksi untuk namespace default
. Tujuan
injektor file bantuan menginjeksikan container file bantuan ke pod yang dibuat di bawah ini
ruang nama:
kubectl label namespace default istio-injection=enabled
Anda dapat memverifikasi bahwa namespace default
diaktifkan dengan benar dengan menjalankan perintah berikut:
kubectl get namespace -L istio-injection
Ini akan menampilkan:
NAME STATUS AGE ISTIO-INJECTION default Active 7d16h enabled istio-system Active 7d15h
Jika Anda mengonfigurasi keamanan layanan untuk Cloud Service Mesh dengan Envoy, kembali ke bagian Menyiapkan layanan pengujian dalam panduan penyiapan tersebut.
Men-deploy klien contoh dan memverifikasi injeksi
Bagian ini menunjukkan cara men-deploy pod contoh yang menjalankan Busybox, yang menyediakan antarmuka sederhana untuk menjangkau layanan pengujian. Dalam penerapan nyata, Anda akan men-deploy aplikasi klien Anda sendiri.
kubectl create -f demo/client_sample.yaml
Pod Busybox terdiri dari dua penampung. Penampung pertama adalah klien berdasarkan image Busybox dan penampung kedua adalah proxy Envoy yang dimasukkan oleh injector sidecar. Anda bisa mendapatkan informasi lebih lanjut tentang pod dengan menjalankan perintah berikut:
kubectl describe pods -l run=client
Tindakan ini akan menampilkan:
… Init Containers: # Istio-init sets up traffic interception for the pod. Istio-init: … Containers: # busybox is the client container that runs application code. busybox: … # Envoy is the container that runs the injected Envoy proxy. envoy: …
Men-deploy layanan Kubernetes untuk pengujian
Bagian berikut memberikan petunjuk untuk menyiapkan layanan pengujian yang yang Anda gunakan nanti dalam panduan ini untuk memberikan verifikasi konfigurasi secara menyeluruh.
Mengonfigurasi layanan GKE dengan NEG
Layanan GKE harus diekspos melalui grup endpoint jaringan
(NEG) agar Anda dapat mengonfigurasinya sebagai backend dari backend Cloud Service Mesh
layanan. Tambahkan anotasi NEG ke spesifikasi layanan Kubernetes Anda,
pilih sebuah nama (dengan mengganti NEG-NAME
pada contoh di bawah) sehingga Anda dapat menemukan
dengan mudah nantinya. Anda memerlukan nama tersebut saat melampirkan NEG ke layanan backend Cloud Service Mesh. Untuk mengetahui informasi selengkapnya tentang anotasi NEG, lihat
Penamaan NEG.
... metadata: annotations: cloud.google.com/neg: '{"exposed_ports": {"80":{"name": "service-test-neg"}}}' spec: ports: - port: 80 name: service-test protocol: TCP targetPort: 8000
Anotasi ini membuat NEG mandiri yang berisi endpoint yang sesuai dengan alamat IP dan port pod layanan. Untuk informasi lebih lanjut dan contoh, lihat Grup endpoint jaringan mandiri.
Layanan contoh berikut mencakup anotasi NEG. Layanan ini berfungsi
nama host melalui HTTP pada port 80
. Gunakan perintah berikut untuk mendapatkan
dan men-deploy-nya ke cluster GKE Anda.
wget -q -O - \ https://storage.googleapis.com/traffic-director/demo/trafficdirector_service_sample.yaml \ | kubectl apply -f -
Pastikan layanan baru dibuat dan pod aplikasi berjalan:
kubectl get svc
Outputnya akan mirip dengan berikut ini:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service-test ClusterIP 10.71.9.71 none 80/TCP 41m [..skip..]
Pastikan pod aplikasi yang terkait dengan layanan ini telah berjalan:
kubectl get pods
NAME READY STATUS RESTARTS AGE app1-6db459dcb9-zvfg2 2/2 Running 0 6m busybox-5dcf86f4c7-jvvdd 2/2 Running 0 10m [..skip..]
Menyimpan nama NEG
Temukan NEG yang dibuat dari contoh di atas dan catat namanya untuk konfigurasi Cloud Service Mesh di bagian berikutnya.
gcloud compute network-endpoint-groups list
Hasil dari kueri tersebut adalah sebagai berikut:
NAME LOCATION ENDPOINT_TYPE SIZE service-test-neg ZONE GCE_VM_IP_PORT 1
Simpan nama NEG dalam variabel NEG_NAME:
NEG_NAME=$(gcloud compute network-endpoint-groups list \ | grep service-test | awk '{print $1}')
Mengonfigurasi Cloud Service Mesh dengan komponen Cloud Load Balancing
Bagian ini mengonfigurasi Cloud Service Mesh menggunakan resource load balancing Compute Engine. Tindakan ini memungkinkan proxy sidecar klien contoh menerima konfigurasi dari Cloud Service Mesh. Permintaan keluar dari klien contoh ditangani oleh proxy file bantuan dan diarahkan ke layanan pengujian.
Anda harus mengonfigurasi komponen berikut:
- Health check. Untuk mengetahui informasi selengkapnya tentang health check, baca Konsep Health Check dan Membuat Health Check.
- Layanan backend. Untuk informasi lebih lanjut tentang layanan backend, baca Layanan Backend.
- Peta aturan pemilihan rute. Termasuk di antaranya membuat aturan penerusan, target HTTP dan peta URL. Untuk informasi selengkapnya, baca Menggunakan aturan penerusan untuk Cloud Service Mesh, Menggunakan proxy target untuk Cloud Service Mesh, dan Menggunakan peta URL.
Membuat aturan health check dan firewall
Gunakan petunjuk berikut untuk membuat health check dan aturan firewall yang diperlukan untuk pemeriksaan health check. Untuk informasi selengkapnya, lihat Aturan firewall untuk health check.
Konsol
- Buka halaman Health checks di konsol Google Cloud.
Buka halaman Health check - Klik Create Health Check.
- Untuk nama, masukkan
td-gke-health-check
. - Untuk protokol, pilih HTTP.
Klik Create.
Buka halaman Firewall policies di Konsol Google Cloud.
Buka halaman Kebijakan firewallKlik Create firewall rules.
Pada halaman Create a firewall rule, berikan informasi berikut:
- Nama: Berikan nama untuk aturan. Untuk contoh ini, gunakan
fw-allow-health-checks
. - Network: Pilih jaringan VPC.
- Prioritas: Masukkan angka untuk prioritas. Angka yang lebih rendah memiliki prioritas yang lebih tinggi. Pastikan aturan firewall memiliki prioritas yang lebih tinggi daripada aturan lain yang mungkin menolak traffic masuk.
- Direction of traffic: Pilih Ingress.
- Tindakan saat kecocokan: Pilih Izinkan.
- Targets: Pilih All instances in the network.
- Filter sumber: Pilih jenis rentang IP yang benar.
- Rentang IP sumber:
35.191.0.0/16,130.211.0.0/22
- Filter tujuan: Pilih jenis IP.
- Protocols and ports: Klik Specified ports and protocols,
lalu centang
tcp
. TCP adalah protokol dasar untuk semua protokol health check. - Klik Create.
- Nama: Berikan nama untuk aturan. Untuk contoh ini, gunakan
gcloud
Membuat health check.
gcloud compute health-checks create http td-gke-health-check \ --use-serving-port
Buat aturan firewall untuk mengizinkan rentang alamat IP health checker.
gcloud compute firewall-rules create fw-allow-health-checks \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --rules tcp
Membuat layanan backend
Buat layanan backend global dengan skema load balancing INTERNAL_SELF_MANAGED
. Di kolom
Konsol Google Cloud, skema load balancing disetel secara implisit. Tambahkan
health check ke layanan backend.
Konsol
Buka halaman Cloud Service Mesh di Konsol Google Cloud.
Di tab Services, klik Create Service.
Klik Lanjutkan.
Untuk nama layanan, masukkan
td-gke-service
.Pilih Jaringan, yang Anda konfigurasikan di ConfigMap Cloud Service Mesh.
Di bagian Backend type, pilih Network endpoint groups.
Pilih grup endpoint jaringan yang Anda buat.
Tetapkan Maximum RPS ke
5
.Tetapkan Balancing mode ke Rate.
Klik Done.
Di bagian Health check, pilih
td-gke-health-check
, yang merupakan health check yang Anda buat.Klik Lanjutkan.
gcloud
Buat layanan backend dan kaitkan health check dengan layanan backend.
gcloud compute backend-services create td-gke-service \ --global \ --health-checks td-gke-health-check \ --load-balancing-scheme INTERNAL_SELF_MANAGED
Tambahkan NEG yang dibuat sebelumnya sebagai backend ke layanan backend. Jika mengonfigurasi Cloud Service Mesh dengan proxy TCP target, Anda harus menggunakan mode balancing
UTILIZATION
. Jika Anda menggunakan proxy target HTTP atau HTTPS, Anda dapat menggunakan modeRATE
.gcloud compute backend-services add-backend td-gke-service \ --global \ --network-endpoint-group ${NEG_NAME} \ --network-endpoint-group-zone ZONE \ --balancing-mode [RATE | UTILIZATION] \ --max-rate-per-endpoint 5
Membuat peta aturan perutean
Peta aturan pemilihan rute menentukan cara Cloud Service Mesh merutekan traffic di {i>mesh.<i} Sebagai bagian dari peta aturan perutean, Anda mengonfigurasi alamat IP virtual (VIP) dan sekumpulan aturan pengelolaan traffic terkait, seperti pemilihan rute berbasis host. Saat aplikasi mengirim permintaan ke VIP, proxy sidecar Envoy yang terpasang akan melakukan hal berikut:
- Mencegah permintaan.
- Mengevaluasinya sesuai dengan aturan pengelolaan traffic di peta URL.
- Memilih layanan backend berdasarkan nama host dalam permintaan.
- Memilih backend atau endpoint yang terkait dengan layanan backend yang dipilih.
- Mengirim traffic ke backend atau endpoint tersebut.
Konsol
Di konsol, proxy target digabungkan dengan aturan penerusan. Saat Anda membuat aturan penerusan, Google Cloud akan otomatis membuat {i>proxy<i} HTTP target dan melampirkannya ke peta URL.
Aturan rute terdiri dari aturan penerusan serta aturan host dan jalur (juga dikenal sebagai peta URL).
Buka halaman Cloud Service Mesh di konsol Google Cloud.
Klik Routing rule maps
Klik Buat Aturan Pemilihan Rute.
Masukkan
td-gke-url-map
sebagai Nama peta URL.Klik Tambahkan aturan penerusan.
Untuk nama aturan penerusan, masukkan
td-gke-forwarding-rule
.Pilih jaringan Anda.
Pilih Internal IP Anda.
Klik Simpan.
Secara opsional, tambahkan aturan host dan jalur kustom atau biarkan aturan jalur sebagai default.
Tetapkan host ke
service-test
.Klik Simpan.
gcloud
Buat peta URL yang menggunakan
td-gke-service
sebagai layanan backend default.gcloud compute url-maps create td-gke-url-map \ --default-service td-gke-service
Buat pencocok jalur peta URL dan aturan host untuk mengarahkan traffic untuk berdasarkan nama {i>host<i} dan jalur. Contoh ini menggunakan
service-test
sebagai nama layanan dan pencocok jalur {i>default<i} yang cocok dengan semua permintaan jalur untuk host ini (/*
).gcloud compute url-maps add-path-matcher td-gke-url-map \ --default-service td-gke-service \ --path-matcher-name td-gke-path-matcher gcloud compute url-maps add-host-rule td-gke-url-map \ --hosts service-test \ --path-matcher-name td-gke-path-matcher
Membuat proxy HTTP target.
gcloud compute target-http-proxies create td-gke-proxy \ --url-map td-gke-url-map
Membuat aturan penerusan.
gcloud compute forwarding-rules create td-gke-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=0.0.0.0 \ --target-http-proxy=td-gke-proxy \ --ports 80 --network default
Pada tahap ini, Cloud Service Mesh mengonfigurasi proxy sidecar Anda untuk merutekan
permintaan yang menentukan nama host service-test
ke backend
td-gke-service
. Dalam hal ini, backend tersebut adalah endpoint dalam grup endpoint jaringan yang terkait dengan layanan pengujian Kubernetes yang Anda deploy sebelumnya.
Memverifikasi konfigurasi
Bagian ini menunjukkan cara memverifikasi bahwa traffic yang dikirim dari contoh tampilan sibuk
dan klien dirutekan ke layanan Kubernetes service-test
Anda. Untuk mengirim pengujian
tertentu, Anda dapat mengakses shell pada salah satu container dan menjalankan
mengikuti perintah verifikasi. Pod service-test
harus menampilkan nama host
pod penayangan.
# Get the name of the pod running Busybox. BUSYBOX_POD=$(kubectl get po -l run=client -o=jsonpath='{.items[0].metadata.name}') # Command to execute that tests connectivity to the service service-test at # the VIP 10.0.0.1. Because 0.0.0.0 is configured in the forwarding rule, this # can be any VIP. TEST_CMD="wget -q -O - 10.0.0.1; echo" # Execute the test command on the pod. kubectl exec -it $BUSYBOX_POD -c busybox -- /bin/sh -c "$TEST_CMD"
Berikut cara konfigurasi diverifikasi:
- Klien contoh mengirimkan permintaan yang menentukan nama host
service-test
. - Klien contoh memiliki proxy file bantuan Envoy yang diinjeksi oleh Envoy injektor file bantuan.
- Proxy file bantuan mencegat permintaan.
- Dengan menggunakan peta URL, Envoy mencocokkan nama host
service-test
dengan Layanan Mesh Layanan Cloudtd-gke-service
. - Envoy memilih endpoint dari grup endpoint jaringan yang terkait dengan
td-gke-service
. - Envoy mengirim permintaan ke pod yang terkait dengan
service-test
layanan Kubernetes.
Langkah selanjutnya
- Pelajari pengelolaan traffic lanjutan
- Pelajari keamanan layanan Cloud Service Mesh.
- Pelajari cara menyiapkan kemampuan observasi dengan Envoy.
- Pelajari cara memecahkan masalah deployment Cloud Service Mesh.
- Pelajari opsi untuk penyiapan Pod Google Kubernetes Engine dengan injeksi Envoy otomatis.