Menyiapkan Pod Google Kubernetes Engine menggunakan injeksi Envoy otomatis

Ringkasan

Dalam mesh layanan, kode aplikasi tidak perlu mengetahui konfigurasi jaringan. Sebagai gantinya, aplikasi Anda berkomunikasi melalui data bidang kontrol, 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. Ketika injektor file bantuan Envoy menambahkan {i>proxy<i}, {i>Proxy<i} juga menyiapkan {i>proxy<i} itu untuk menangani lalu lintas 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 penyiapannya meliputi:

  1. Membuat cluster GKE untuk workload Anda.
  2. Memasang injektor file bantuan Envoy dan mengaktifkan injeksi.
  3. Men-deploy klien contoh dan memverifikasi injeksi.
  4. Men-deploy layanan Kubernetes untuk pengujian.
  5. Mengonfigurasi Cloud Service Mesh dengan Cloud Load Balancing komponen untuk merutekan lalu lintas ke layanan pengujian.
  6. Verifikasi konfigurasi dengan mengirimkan permintaan dari klien contoh ke layanan pengujian.
Ringkasan komponen yang di-deploy sebagai bagian dari panduan penyiapan ini (klik untuk memperbesar)
Ringkasan komponen yang di-deploy sebagai bagian dari panduan penyiapan ini (klik untuk memperbesar)

Prasyarat

Sebelum mengikuti petunjuk dalam panduan ini, tinjau Mempersiapkan penyiapan Cloud Service Mesh dan pastikan bahwa Anda telah menyelesaikan tugas-tugas prasyarat yang dijelaskan dalam dokumen.

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 dalam 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 beberapa subnet dan jaringan VPC.
  • Anda telah mengaktifkan VPC Bersama.

Untuk 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.

  1. Di Cloud Shell, buat folder kerja (WORKDIR) tempat Anda buat file yang terkait dengan bagian ini:

    mkdir -p ~/td-shared-vpc
    cd ~/td-shared-vpc
    export WORKDIR=$(pwd)
    
  2. 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 dan subnet-2 dapat diakses berdasarkan project layanan 2. Anda menetapkan Peran IAM Pengguna Jaringan Compute (roles/compute.networkUser) ke kedua komputasi Compute Engine akun layanan default dan akun layanan Google Cloud API di setiap project layanan untuk setiap subnet.

    1. 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}
      
    2. 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}
      
  3. 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 layanan project menggunakan akun layanan GKE project host untuk mengkonfigurasi sumber daya jaringan bersama.

  4. Untuk setiap project layanan, berikan layanan default Compute Engine akun Peran IAM Viewer Jaringan Compute (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
    

    Bila proxy file bantuan Envoy terhubung ke xDS (Traffic Director API), proxy menggunakan akun layanan Host virtual machine (VM) Compute Engine atau dari instance node GKE. Akun layanan harus memiliki compute.globalForwardingRules.get IAM level project izin akses. 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:

Membuat cluster GKE

Membuat 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

Memasang injektor file bantuan Envoy

Bagian berikut memberikan petunjuk untuk menginstal file bantuan Envoy injeksi. Saat injektor file bantuan diaktifkan, injektor ini akan otomatis men-deploy file bantuan proxy untuk workload 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 layanan.

Mendownload injektor file bantuan

Download dan ekstrak injektor mobil bantuan 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 injektor file bantuan

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 mengganti YOUR_PROJECT_NUMBER_HERE dengan nomor project Anda. Tujuan nomor project adalah ID numerik untuk project Anda. Untuk informasi tentang mendapatkan daftar semua proyek Anda, lihat Mengidentifikasi project.
  • Isi TRAFFICDIRECTOR_NETWORK_NAME dengan mengganti YOUR_NETWORK_NAME_HERE dengan nama jaringan Virtual Private Cloud Google Cloud yang ingin Anda gunakan dan 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 jaringan layanan, guna mendapatkan konfigurasi untuk mesh layanan.
    • Perhatikan bahwa jika mengonfigurasi Gateway, Anda tidak menggunakan file bantuan injeksi. Anda men-deploy proxy Envoy sebagai Pod.

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 bisa secara opsional mengaktifkan pencatatan log dan pelacakan 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

  1. Deploy injektor file bantuan.

    kubectl apply -f specs/
    
  2. Pastikan injektor mobil sespan sedang berjalan.

    kubectl get pods -A | grep istiod
    

    Perintah 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 injektor file bantuan Envoy di cluster pribadi, Anda memerlukan membuka port TCP 9443 di aturan firewall ke node master untuk webhook agar berfungsi dengan baik.

Langkah-langkah berikut menjelaskan cara mengupdate aturan firewall yang diperlukan. Perlu diketahui bahwa perintah update menggantikan aturan firewall yang ada, sehingga Anda harus pastikan untuk menyertakan port default 443 (HTTPS) dan 10250 (kubelet) serta porta baru yang ingin Anda buka.

  1. Temukan rentang sumber (master-ipv4-cidr) cluster. Dalam , ganti CLUSTER_NAME dengan nama cluster, yaitu traffic-director-cluster:

    FIREWALL_RULE_NAME=$(gcloud compute firewall-rules list \
     --filter="name~gke-CLUSTER_NAME-[0-9a-z]*-master" \
     --format="value(name)")
    
  2. 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 file bantuan

Perintah berikut memungkinkan 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 secara 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 {i>Cloud Service Mesh<i} dengan Envoy, kembali ke bagian Menyiapkan layanan pengujian di panduan penyiapan tersebut.

Men-deploy klien contoh dan memverifikasi injeksi

Bagian ini menunjukkan cara men-deploy pod contoh yang menjalankan Browsebox, yang menyediakan antarmuka yang sederhana untuk mencapai layanan pengujian. Dalam penerapan nyata, Anda akan men-deploy aplikasi klien Anda sendiri.

kubectl create -f demo/client_sample.yaml

Pod Crowdbox terdiri dari dua container. Penampung pertama adalah klien berdasarkan image sibukbox, dan kontainer kedua adalah proxy Envoy yang dimasukkan oleh injektor sespan. Anda bisa mendapatkan informasi lebih lanjut tentang pod dengan menjalankan perintah berikut:

kubectl describe pods -l run=client

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 bahwa layanan baru telah dibuat dan pod aplikasi sedang 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
Ini akan menampilkan:
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 di 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 beban Compute Engine menyeimbangkan resource. Hal ini memungkinkan proxy file bantuan klien contoh untuk menerima dari Cloud Service Mesh. Permintaan keluar dari klien contoh ditangani oleh proxy file bantuan dan diarahkan ke layanan pengujian.

Anda harus mengonfigurasi komponen berikut:

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

  1. Buka halaman Health check di Konsol Google Cloud.
    Buka halaman Health check
  2. Klik Create Health Check.
  3. Untuk nama, masukkan td-gke-health-check.
  4. Untuk protokol, pilih HTTP.
  5. Klik Create.

  6. Buka halaman Firewall policies di Konsol Google Cloud.
    Buka halaman Kebijakan firewall

  7. Klik Create firewall rules.

  8. 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 bahwa aturan firewall memiliki prioritas dibandingkan aturan lain yang dapat 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 dasar dari untuk semua protokol {i>health check<i}.
    • Klik Create.

gcloud

  1. Membuat health check.

    gcloud compute health-checks create http td-gke-health-check \
      --use-serving-port
    
  2. 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

Membuat 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

  1. Buka halaman Cloud Service Mesh di Konsol Google Cloud.

    Buka halaman Cloud Service Mesh

  2. Di tab Services, klik Create Service.

  3. Klik Lanjutkan.

  4. Untuk nama layanan, masukkan td-gke-service.

  5. Pilih Network, yang Anda konfigurasi di Cloud Service Mesh ConfigMap.

  6. Di bagian Backend type, pilih Network endpoint groups.

  7. Pilih grup endpoint jaringan yang Anda buat.

  8. Setel RPS Maksimum ke 5.

  9. Tetapkan Balancing mode ke Rate.

  10. Klik Done.

  11. Di bagian Health check, pilih td-gke-health-check, yang merupakan health check yang Anda buat.

  12. Klik Lanjutkan.

gcloud

  1. Membuat layanan backend dan mengaitkan 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
    
  2. Tambahkan NEG yang dibuat sebelumnya sebagai backend ke layanan backend. Jika saat mengonfigurasi Cloud Service Mesh dengan proxy TCP target, Anda harus menggunakan mode penyeimbangan UTILIZATION. Jika Anda menggunakan proxy target HTTP atau HTTPS, Anda dapat menggunakan mode RATE.

    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 permohonan mengirimkan permintaan kepada VIP, file bantuan Envoy yang terlampir {i>proxy<i} melakukan hal berikut:

  1. Mencegat permintaan.
  2. Mengevaluasinya sesuai dengan aturan pengelolaan traffic di peta URL.
  3. Memilih layanan backend berdasarkan nama host dalam permintaan.
  4. Memilih backend atau endpoint yang dikaitkan dengan layanan backend yang dipilih.
  5. 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).

  1. Buka halaman Cloud Service Mesh di Konsol Google Cloud.

    Buka halaman Cloud Service Mesh

  2. Klik Peta aturan pemilihan rute

  3. Klik Create Routing Rule.

  4. Masukkan td-gke-url-map sebagai Nama peta URL.

  5. Klik Tambahkan aturan penerusan.

  6. Untuk nama aturan penerusan, masukkan td-gke-forwarding-rule.

  7. Pilih jaringan Anda.

  8. Pilih Internal IP Anda.

  9. Klik Simpan.

  10. Opsional, tambahkan aturan host dan jalur khusus atau biarkan aturan jalur sebagai secara default.

  11. Setel host ke service-test.

  12. Klik Simpan.

gcloud

  1. 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
    
  2. 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
    
  3. Membuat proxy HTTP target.

    gcloud compute target-http-proxies create td-gke-proxy \
       --url-map td-gke-url-map
    
  4. 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 file bantuan Anda untuk dirutekan permintaan yang menentukan nama host service-test untuk backend td-gke-service. Dalam hal ini, backend tersebut adalah endpoint dalam jaringan grup endpoint 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 dari pod inferensi.

# 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 mengirim 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 Cloud td-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