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:

  1. Membuat cluster GKE untuk workload Anda.
  2. Menginstal injector sidecar 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 mengarahkan lalu lintas ke layanan pengujian.
  6. Memverifikasi konfigurasi dengan mengirim 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, 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.

  1. 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)
    
  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 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.

    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 project layanan menggunakan akun layanan GKE project host untuk mengonfigurasi resource jaringan bersama.

  4. 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:

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 mengganti YOUR_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 mengganti YOUR_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.

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

  1. Deploy injektor file bantuan.

    kubectl apply -f specs/
    
  2. 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.

  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 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
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 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:

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

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

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

  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 Jaringan, yang Anda konfigurasikan di ConfigMap Cloud Service Mesh.

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

  7. Pilih grup endpoint jaringan yang Anda buat.

  8. Tetapkan Maximum RPS 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. 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
    
  2. 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 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 aplikasi mengirim permintaan ke VIP, proxy sidecar Envoy yang terpasang akan melakukan hal berikut:

  1. Mencegah 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 terkait 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 Routing rule maps

  3. Klik Buat Aturan Pemilihan Rute.

  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. Secara opsional, tambahkan aturan host dan jalur kustom atau biarkan aturan jalur sebagai default.

  11. Tetapkan 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 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 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