Merutekan traffic dari workload Cloud Service Mesh ke VM Compute Engine
Halaman ini menunjukkan cara merutekan traffic jaringan secara aman dari beban kerja Cloud Service Mesh di GKE ke VM Compute Engine yang di-front-end oleh BackendService.
Perhatikan bahwa saat merutekan traffic dari GKE ke VM Compute Engine, VM Compute Engine atau BackendService tidak perlu bergabung ke Cloud Service Mesh. Namun, VM Compute Engine dan BackendService harus berada dalam project yang sama dengan cluster GKE Cloud Service Mesh. Batasan ini ada saat fitur ini tersedia dalam pratinjau publik. MTLS tidak didukung untuk VM Compute Engine
Sebelum memulai
Bagian berikut mengasumsikan bahwa Anda telah:
- Cluster GKE dengan Cloud Service Mesh diaktifkan.
- Men-deploy VM Compute Engine yang di-front-end oleh BackendService.
Atau, Anda dapat menjalankan perintah berikut untuk men-deploy contoh VM Compute Engine yang di-front-end oleh BackendService.
Deploy contoh VM Compute Engine dan BackendService:
gcloud compute instance-templates create td-httpd-vm-template \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --tags=http-td-server \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script="#! /bin/bash sudo apt-get update -y sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype <html><body><h1>'\`$(/bin/hostname)\`'</h1></body></html>' | sudo tee /var/www/html/index.html" gcloud compute instance-groups managed create http-td-mig-us-east1 \ --zone=VM_ZONE \ --size=2 \ --template=td-httpd-vm-template gcloud compute health-checks create http http-helloworld-health-check gcloud compute firewall-rules create http-vm-allow-health-checks \ --network=default \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=0.0.0.0/0 \ --target-tags=http-td-server \ --rules=tcp:80 gcloud compute backend-services create helloworld \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --protocol=HTTP \ --health-checks http-helloworld-health-check gcloud compute backend-services add-backend helloworld \ --instance-group=http-td-mig-us-east1 \ --instance-group-zone=VM_ZONE \ --global
Dengan:
- VM_ZONE adalah zona tempat Anda ingin men-deploy VM Compute Engine.
Mengonfigurasi VM Compute Engine sebagai GCPBackend
Di bagian ini, Anda akan mengekspos VM Compute Engine ke workload GKE menggunakan GCPBackend. GCPBackend terdiri dari:
- Informasi frontend - khususnya, nama host dan port yang akan digunakan Workload GKE untuk memanggil GCPBackend ini.
- Informasi backend - detail BackendService seperti nama layanan, lokasi, dan nomor project.
GCPBackend berisi detail nama host dan port serta detail BackendService (nama layanan, lokasi, dan nomor project). Workload GKE harus menggunakan nama host dan port GCPBackend dalam permintaan HTTP-nya untuk mengakses VM Compute Engine.
Agar DNS nama host dapat di-resolve dalam cluster (secara default tidak dapat di-resolve), Anda harus mengonfigurasi DNS Google Cloud untuk me-resolve semua host dengan nama host yang dipilih ke alamat IP arbitrer. Hingga Anda mengonfigurasi entri DNS ini, permintaan akan gagal. Konfigurasi DNS adalah penyiapan satu kali per domain kustom. Google Cloud
Buat managed-zone:
gcloud dns managed-zones create prod \ --description="zone for gcpbackend" \ --dns-name=gcpbackend \ --visibility=private \ --networks=default
Dalam contoh ini, Nama DNS adalah gcpbackend dan Jaringan VPC adalah default.
Siapkan data agar domain dapat diselesaikan:
gcloud beta dns record-sets create *.gcpbackend \ --ttl=3600 --type=A --zone=prod \ --rrdatas=10.0.0.1
Buat GCPBackend dengan nama host di domain sebelumnya:
cat <<EOF > gcp-backend.yaml apiVersion: networking.gke.io/v1 kind: GCPBackend metadata: name: vm-gcp-backend namespace: NAMESPACE spec: type: "BackendService" hostname: hello-world.gcpbackend backendservice: name: helloworld location: global EOF kubectl apply -f gcp-backend.yaml
Dalam contoh ini, GCP_BACKEND_NAME adalah
vm-gcp-backend
.Buat Pod pengujian untuk memverifikasi konektivitas GKE ke VM Compute Engine:
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: testcurl namespace: default spec: containers: - name: curl image: curlimages/curl command: ["sleep", "3000"] EOF kubectl exec testcurl -c curl -- curl http://hello-world.gcpbackend:80
Sekarang, workload GKE Anda dapat mengakses VM Compute Engine dengan mengirim permintaan HTTP ke hello-world.gcpbackend:80.
Anda harus menggunakan nama yang berbeda untuk GCPBackend guna menghindari konflik dengan layanan Kubernetes atau Entri Layanan Istio yang ada. Jika terjadi konflik, urutan prioritas (tinggi ke rendah) adalah Layanan Kubernetes, istio ServiceEntry, dan GCPBackend.
Perhatikan bahwa Virtual Service dan GCPBackend harus berada di namespace yang sama dan VM Compute Engine harus berada di project yang sama dengan cluster GKE Cloud Service Mesh.