Halaman ini menunjukkan cara mengaktifkan jaringan sekitar di cluster baru atau yang sudah ada, mendaftarkan namespace dan workload untuk mengaktifkan pengalihan traffic sekitar, serta mengonfigurasi kebijakan otorisasi dan mTLS.
Untuk mengetahui informasi selengkapnya tentang arsitektur, manfaat, dan kemampuan jaringan sekitar, lihat Ringkasan jaringan sekitar.
Prasyarat dan batasan
Sebelum menyiapkan jaringan sekitar, tinjau batasan fitur, persyaratan versi, dan batasan cakupan berikut:
- Versi GKE: Memerlukan GKE versi
1.35.2-gke.1842000atau yang lebih baru. - Dukungan Regional: Cluster harus dibuat di region yang didukung oleh Regional Cloud Service Mesh.
- Interoperabilitas Workload: Workload yang terdaftar dalam jaringan sekitar tidak dapat beroperasi dengan workload yang disisipkan sidecar atau gRPC tanpa proxy dalam pratinjau pribadi.
- Fitur yang Tidak Didukung:
- Kolom Kubernetes Service
trafficDistribution. - Layanan Headless.
- GKE Sandbox (gVisor).
- Kolom Kubernetes Service
- Pemberitahuan Keamanan: Jika komponen
gke-ambient-nripluginmenjadi tidak tersedia di node, penegakan autentikasi dan otorisasi traffic masuk mungkin dilewati.
Sebelum memulai
Selesaikan langkah-langkah penyiapan prasyarat berikut di Cloud de Confiance by S3NS:
- Buat atau pilih project.
Aktifkan API yang diperlukan:
gcloud services enable \ privateca.googleapis.com \ gkehub.googleapis.com \ compute.googleapis.com \ container.googleapis.com \ trafficdirector.googleapis.com \ networkservices.googleapis.com \ networksecurity.googleapis.com \ telemetry.googleapis.com \ monitoring.googleapis.com \ logging.googleapis.comMengonfigurasi autentikasi managed workload identity untuk GKE.
Mengaktifkan jaringan sekitar di cluster baru
Jalankan perintah berikut untuk membuat cluster GKE baru dengan ambient networking yang diaktifkan:
Membuat cluster GKE dengan jaringan sekitar diaktifkan
gcloud beta container clusters create CLUSTER_NAME \ --machine-type=e2-standard-4 \ --enable-ambient-networking \ --enable-dataplane-v2 \ --enable-fleet \ --gateway-api=standard \ --location=CLUSTER_LOCATION \ --release-channel=rapid \ --workload-pool=PROJECT_ID.s3ns.svc.id.googDua DaemonSet kini berjalan di namespace
gke-managed-ambient.
Mengaktifkan jaringan sekitar di cluster yang ada
Ikuti langkah-langkah berikut untuk mengaktifkan mesh sekitar pada cluster GKE yang ada:
Pastikan cluster Anda memenuhi persyaratan berikut:
- Versi 1.35.2-gke.1842000 atau yang lebih tinggi.
- GKE Dataplane V2 diaktifkan.
- Jenis mesin harus e2-standard-4 atau yang lebih besar.
- Cluster harus ditambahkan ke fleet.
- Cluster harus mengaktifkan Gateway API dan Workload Identity.
Mengaktifkan jaringan sekitar di cluster yang ada:
gcloud beta container clusters update CLUSTER_NAME \ --enable-ambient-networking \ --location=CLUSTER_LOCATION \ --enable-fleetDua DaemonSet kini berjalan di namespace
gke-managed-ambient.Untuk memverifikasi, arahkan CLI Anda ke cluster:
gcloud beta container clusters get-credentials CLUSTER_NAME \ --location=CLUSTER_LOCATIONDapatkan daemonset di namespace
gke-managed-ambient:kubectl get daemonset -n gke-managed-ambientOutputnya mirip dengan:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE AGE gke-ambient-nriplugin 9 9 9 9 9 4d1h gke-ambient-proxy 9 9 9 9 9 4d1h
Mendaftarkan namespace untuk jaringan sekitar
Ikuti langkah-langkah berikut untuk men-deploy aplikasi contoh dan mengaktifkan pengalihan traffic sekitar di namespace-nya:
Men-deploy aplikasi contoh:
kubectl apply -f - <<EOF apiVersion: v1 kind: Namespace metadata: name: ambient-test --- apiVersion: v1 kind: ServiceAccount metadata: name: client namespace: ambient-test --- apiVersion: v1 kind: ServiceAccount metadata: name: server namespace: ambient-test --- apiVersion: v1 kind: Service metadata: name: server namespace: ambient-test labels: app: server spec: ports: - port: 80 protocol: TCP selector: app: server --- apiVersion: apps/v1 kind: Deployment metadata: name: client namespace: ambient-test labels: app: client spec: replicas: 1 selector: matchLabels: app: client template: metadata: labels: app: client spec: serviceAccountName: client containers: - name: nginx image: nginx:1.29.6 --- apiVersion: apps/v1 kind: Deployment metadata: name: server namespace: ambient-test labels: app: server spec: replicas: 2 selector: matchLabels: app: server template: metadata: labels: app: server spec: serviceAccountName: server containers: - name: nginx image: nginx:1.29.6 readinessProbe: httpGet: path: / port: 80 EOFBeri label pada namespace
ambient-testuntuk mengaktifkan pengalihan traffic melalui proxy ambient GKE:kubectl label namespace ambient-test networking.gke.io/dataplane-mode=ambientPastikan setiap Pod di namespace telah dikonfigurasi untuk pengalihan traffic:
kubectl get pods -n ambient-test -o yaml | grep redirectionOutputnya mirip dengan:
ambient.networking.gke.io/redirection: enabled ambient.networking.gke.io/redirection: enabledUji traffic klien ke server:
kubectl exec -it deploy/client -n ambient-test -- \ /bin/curl -fsLS server.ambient-test.svc.cluster.localUntuk memverifikasi bahwa traffic Teks biasa mengalir melalui
gke-ambient-proxy, periksa log akses di Logs Explorer dan telusurigke-ambient-node-proxy-accesslog:Atau, aktifkan pembuatan metrik Layer 4 untuk workload di namespace:
kubectl label namespace ambient-test networking.gke.io/ambient-network-metrics=enabledSetelah diaktifkan, metrik workload tersedia di Cloud Monitoring melalui Network Services Monitoring.
Mengaktifkan mTLS untuk layanan
Setelah mengaktifkan pengalihan traffic untuk workload di namespace, terapkan kebijakan untuk menerapkan enkripsi, autentikasi, dan otorisasi.
Konfigurasi kebijakan mTLS permisif pada beban kerja sisi server:
kubectl apply -f - <<EOF apiVersion: networking.gke.io/v1 kind: GCPServerTLSPolicy metadata: name: server namespace: ambient-test spec: mtlsMode: Permissive targetRefs: - group: "" kind: Pod selector: matchLabels: app: server EOFKebijakan ini membuat Pod menerima traffic mTLS dan plaintext. Perhatikan bahwa mTLS permisif menggunakan sniffing traffic untuk mendeteksi apakah traffic adalah mTLS atau teks biasa. Tindakan ini akan mengganggu traffic aplikasi yang menggunakan TLS-nya sendiri atau protokol "server berbicara terlebih dahulu" seperti MySQL.
Pastikan kebijakan telah diterima oleh pengontrol:
kubectl describe gcpservertlspolicies -n ambient-test server | grep -A50 StatusOutputnya mirip dengan:
[...] Conditions: Last Transition Time: 2026-03-25T17:47:30Z Message: Reason: Accepted Status: True Type: Accepted Controller Name: networking.gke.io/dpv2-1n Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Sync 108s (x2 over 2m20s) sc-dpv2-1n-controller Sync on Mesh dpv2-1n-fqtx-mesh succeededPenyebaran kebijakan dapat memerlukan waktu hingga tiga menit setelah pengontrol diterima. Tunggu tiga menit sebelum melanjutkan.
Konfigurasi kebijakan mTLS sisi klien yang menargetkan layanan:
kubectl apply -f - <<EOF apiVersion: networking.gke.io/v1 kind: GCPClientTLSPolicy metadata: name: server-mtls namespace: ambient-test spec: targetRefs: - group: "" kind: Service name: server subjectAltNames: - uri: spiffe://PROJECT_ID.s3ns.svc.id.goog/ns/ambient-test/sa/server EOFKebijakan ini mengonfigurasi klien terdaftar untuk memulai traffic mTLS ke Layanan server. Anda mungkin perlu menunggu setidaknya dua menit sebelum melanjutkan ke langkah berikutnya.
Pastikan kebijakan telah diterima oleh pengontrol:
kubectl describe gcpclienttlspolicies -n ambient-test server-mtls | grep -A50 StatusOutputnya mirip dengan:
[...] Status: Conditions: Last Transition Time: 2024-10-13T01:15:03Z Message: Observed Generation: 1 Reason: Accepted Status: True Type: AcceptedUji traffic klien ke server:
kubectl exec -it deploy/client -n ambient-test -- \ /bin/curl -fsLS server.ambient-test.svc.cluster.localTraffic dari Pod yang terdaftar dalam jaringan sekitar ke layanan server di namespace ambient-test kini harus menggunakan mTLS.
Untuk memverifikasi bahwa koneksi menggunakan mTLS, periksa log akses di Logs Explorer, telusuri nama log kustom:
Perbarui GCPServerTLSPolicy yang ada untuk mengubah
modedari Permissive menjadi Strict pada layanan server sehingga Pod workload tidak lagi menerima traffic teks biasa:kubectl apply -f - <<EOF apiVersion: networking.gke.io/v1 kind: GCPServerTLSPolicy metadata: name: server namespace: ambient-test spec: mtlsMode: Strict targetRefs: - group: "" kind: Pod selector: matchLabels: app: server EOFVerifikasi bahwa kebijakan telah diterima:
kubectl describe gcpservertlspolicies -n ambient-test server | grep -A50 StatusOutputnya mirip dengan:
Name: server <...> UID: e4f2a7a3-69aa-4528-8ea6-6f1bf2142011 Spec: Mtls Mode: Strict Target Refs: Group: Kind: Pod Selector: Match Labels: App: server Status: Ancestors: Ancestor Ref: Group: Kind: Pod Name: app=server Conditions: Last Transition Time: 2026-03-25T22:33:54Z Message: Reason: Accepted Status: True Type: Accepted Controller Name: networking.gke.io/dpv2-1n Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Sync 43s (x5 over 4m57s) sc-dpv2-1n-controller Sync on Mesh dpv2-1n-2cdi-mesh succeededSemua traffic plaintext ke Layanan server Anda kini akan ditolak.
Untuk memverifikasi bahwa traffic teks biasa kini ditolak, kirim traffic ke layanan server dari klien yang TIDAK terdaftar ke jaringan sekitar:
kubectl create namespace noambient-test && \ kubectl run -it -n noambient-test --rm curl --image=nginx -- \ /bin/curl -fsLSv http://server.ambient-test.svc.cluster.localKoneksi ini akan gagal dengan pesan yang mirip dengan berikut ini:
* Request completely sent off * Empty reply from server * shutting down connection #0 curl: (52) Empty reply from server
Menetapkan kebijakan otorisasi Layer 4
Untuk menerapkan otorisasi berbasis identitas, pemilik workload menentukan label Pod di pemilih kebijakan. Pemilik namespace menerapkan kebijakan di seluruh namespace tanpa pemilih.
Terapkan kebijakan berikut untuk memastikan bahwa hanya klien yang diizinkan untuk berkomunikasi dengan server:
kubectl apply -f - <<EOF apiVersion: networking.gke.io/v1 kind: GCPAuthzPolicy metadata: name: allow-client namespace: ambient-test spec: action: ALLOW enforcementLevel: L4 targetRefs: - group: "" kind: Pod selector: matchLabels: app: server rules: - from: sources: - principals: - principalSelector: CLIENT_CERT_URI_SAN principal: type: Exact value: spiffe://PROJECT_ID.s3ns.svc.id.goog/ns/ambient-test/sa/client EOFKebijakan ini diterapkan pada traffic ke Pod server di namespace
ambient-test. Kebijakan ini memastikan bahwa traffic hanya diizinkan dari sumber dengan identitas SPIFFE spiffe://PROJECT_ID.s3ns.svc.id.goog/ns/ambient-test/sa/client.Verifikasi bahwa penerapan kebijakan diizinkan dengan mengirimkan contoh permintaan dari akun layanan klien.
kubectl exec -it deploy/client -n ambient-test -- \ /bin/curl -fsLS server.ambient-test.svc.cluster.localVerifikasi bahwa penerapan kebijakan tidak diizinkan dengan mengirimkan contoh permintaan dari akun layanan server.
kubectl exec -it deploy/server -n ambient-test -- \ /bin/curl -fsLS server.ambient-test.svc.cluster.localOutputnya mirip dengan:
curl: (52) Empty reply from server command terminated with exit code 52Anda dapat menggunakan Logs Explorer untuk melihat logging penerapan otorisasi. Di konsol Cloud de Confiance , buka halaman Logs Explorer.