Memahami kompatibilitas Cloud Service Mesh
Panduan ini menjelaskan cara mengevaluasi kompatibilitas armada untuk modernisasi bidang kontrol dengan mengonfirmasi bahwa konfigurasi, infrastruktur, dan skalanya kompatibel dengan penerapan bidang kontrol TRAFFIC_DIRECTOR.
Mengaktifkan atau menonaktifkan pemeriksaan kompatibilitas
Untuk memulai pemeriksaan kompatibilitas, aktifkan mode validasi untuk armada, yang memicu audit berkelanjutan atas semua konfigurasi Istio, konfigurasi Infrastruktur, dan parameter skala. Mengaktifkan pemeriksaan ini tidak akan melakukan perubahan apa pun pada fleet atau cluster Anda; tindakan ini hanya mengaktifkan pelaporan kompatibilitas.
Mengaktifkan pemeriksaan
Untuk memulai audit kompatibilitas, jalankan perintah gcloud berikut:
gcloud alpha container fleet mesh update --modernization-compatibility validation-enabled --project FLEET_PROJECT_ID
Ganti FLEET_PROJECT_ID dengan ID project Host Fleet Anda.
Umumnya, FLEET_PROJECT_ID memiliki nama yang sama dengan project.
Setelah diaktifkan, Cloud Service Mesh akan mulai mengevaluasi fleet dan semua cluster yang disediakan Cloud Service Mesh di fleet untuk kompatibilitas modernisasi.
Menonaktifkan pemeriksaan
Untuk menghentikan pelaporan hasil kompatibilitas, jalankan perintah berikut:
gcloud alpha container fleet mesh update --modernization-compatibility validation-disabled --project FLEET_PROJECT_ID
Perintah ini menghapus kondisi kompatibilitas modernisasi dari status keanggotaan, serta status ModernizationCompatible dari CR Istio individual.
Memahami kompatibilitas
Kompatibilitas modernisasi dilaporkan menggunakan kondisi di tingkat fleet dan keanggotaan (cluster). Sistem melakukan berbagai pemeriksaan pada waktu yang berbeda-beda, dengan semua pemeriksaan berjalan setidaknya sekali sehari. Tunggu hingga satu hari agar status diperbarui setelah mengaktifkan pemeriksaan atau menerapkan perbaikan.
Untuk melihat hasil ini, ambil status mesh terbaru dengan perintah berikut:
gcloud container fleet mesh describe --project FLEET_PROJECT_ID
Kompatibilitas tingkat fleet
Lihat status modernisasi keseluruhan fleet Anda di bagian
state.servicemesh.conditions.
Fleet kompatibel: Jika armada Anda kompatibel, Anda akan melihat kondisi dengan kode
MODERNIZATION_COMPATIBLE:name: projects/project_id/locations/global/features/servicemesh state: servicemesh: conditions: - code: MODERNIZATION_COMPATIBLE details: 'Fleet is eligible for modernization.' documentationLink: https://cloud.google.com/service-mesh/... severity: INFOArmada tidak kompatibel: Jika armada Anda belum kompatibel untuk modernisasi, Anda akan melihat kondisi dengan kode
MODERNIZATION_INCOMPATIBLE:name: projects/project_id/locations/global/features/servicemesh state: servicemesh: conditions: - code: MODERNIZATION_INCOMPATIBLE details: 'Fleet is not yet eligible for modernization.' documentationLink: https://cloud.google.com/service-mesh/... severity: INFOJika armada Anda tidak kompatibel, tinjau kondisi untuk mengetahui kesenjangan tertentu. Periksa kondisi tingkat armada dengan tingkat keparahan
WARNINGatauERRORtambahan serta kondisi tingkat cluster di bagianmembershipStates.servicemeshuntuk mengatasi pemblokiran.
Kompatibilitas tingkat cluster
Cari kondisi dengan tingkat keparahan WARNING atau ERROR di bagian
membershipStates.servicemesh untuk setiap cluster yang disediakan Cloud Service Mesh di fleet. Jika ada ketidakcocokan, outputnya akan mirip dengan ini:
membershipSpecs:
projects/project_id/locations/global/memberships/cluster-a:
mesh:
management:MANAGEMENT_AUTOMATIC
membershipStates:
projects/project_id/locations/global/memberships/cluster-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
- code: WORKLOAD_IDENTITY_REQUIRED
details: 'Workload Identity is not enabled for the cluster or at least one of the node pools.'
documentationLink: https://cloud.google.com/...
severity: ERROR
...
Ikuti documentationLink yang diberikan dalam setiap kondisi untuk memahami dan
menyelesaikan ketidakcocokan tertentu.
Menyelesaikan masalah kompatibilitas
Mengatasi anotasi pod yang tidak kompatibel
Kode MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION menunjukkan bahwa cluster
tidak dapat dimodernisasi ke bidang kontrol TRAFFIC_DIRECTOR karena
Pod tertentu memiliki anotasi Istio yang tidak didukung atau tidak valid.
Contoh output dari perintah gcloud container fleet mesh describe dengan
kondisi MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION yang ditetapkan untuk keanggotaan:
membershipStates:
projects/project_id/locations/global/memberships/membership-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION
details: 'Pod pod-a in namespace test-namespace: invalid annotations: ["status.sidecar.istio.io/port": failed to parse port - "invalid", port must be a number and should be in the range 1..65535]; unsupported annotations: ["ambient.istio.io/redirection"] .'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
Untuk mengatasi anotasi pod ini:
Identifikasi anotasi bermasalah: Periksa kolom
detailsdari kondisi status untuk menemukan kunci anotasi yang tidak didukung atau tidak valid. Temukan semua Pod dengan kunci anotasi yang bermasalah.Perbaiki dan verifikasi:
- Ubah spesifikasi YAML untuk Deployment atau Pod Anda untuk memastikan hanya menggunakan anotasi yang didukung (semua anotasi lainnya tidak didukung). Hapus anotasi yang tidak didukung, perbaiki nilai yang tidak valid, dan terapkan kembali YAML yang diperbarui ke cluster Anda.
- Setelah semua anotasi Pod diperbaiki, kondisi
MODERNIZATION_INCOMPATIBLE_POD_ANNOTATIONtidak akan lagi muncul untuk keanggotaan tersebut.
Mengatasi konfigurasi yang tidak kompatibel
Kode MODERNIZATION_INCOMPATIBLE_CONFIG menunjukkan bahwa cluster tidak dapat
dimodernisasi ke bidang kontrol TRAFFIC_DIRECTOR karena
konfigurasi yang tidak kompatibel. Ketidakcocokan ini dapat berasal dari:
- CR Istio tertentu yang menggunakan fitur atau kolom yang tidak didukung atau berisi nilai yang tidak valid.
- Setelan Istio MeshConfig tidak valid atau tidak didukung.
- Melebihi batas skalabilitas.
- Penggunaan anotasi namespace atau layanan yang tidak didukung.
Contoh output dari perintah gcloud container fleet mesh describe dengan
kondisi MODERNIZATION_INCOMPATIBLE_CONFIG yang ditetapkan untuk keanggotaan:
membershipSpecs:
projects/project_id/locations/global/memberships/membership-a:
mesh:
management:MANAGEMENT_AUTOMATIC
membershipStates:
projects/project_id/locations/global/memberships/membership-a:
servicemesh:
conditions:
- code: MODERNIZATION_INCOMPATIBLE_CONFIG
details: 'One or more configs have warnings. Due to the following reason(s): Istio sidecar scale exceeds limit, MeshConfig "accessLogFile" is unsupported. Invalid Config Types: [Gateway, ServiceEntry], where more details are shown on individual config resources.See documentation link for more detail.'
documentationLink: https://cloud.google.com/service-mesh/...
severity: WARNING
Untuk menyelesaikan konfigurasi ini:
Analisis detail kondisi: Periksa kolom
detailsdari kondisi status. Ringkasan error individual dan identifikasi jenis resource dengan masalah konfigurasi. Untuk contoh detail yang diberikan, Anda akan diminta untuk mengatasi masalah skala dan MeshConfig serta memeriksa error pada resourceGatewaydanServiceEntry.Mengidentifikasi dan menyelidiki resource yang tidak kompatibel: Gunakan contoh skrip berikut untuk mencantumkan Resource Kustom (CR) Istio yang gagal dalam pemeriksaan kompatibilitas. Skrip ini disediakan sebagai contoh; tinjau dan analisis skrip tersebut untuk memastikan skrip tersebut memenuhi persyaratan lingkungan dan operasional Anda sebelum menjalankannya di cluster Anda. Skrip ini memerlukan penginstalan
kubectldanjq. Output mencakup detail error spesifik yang ditemukan di bagianstatus.conditions(jenis:ModernizationCompatible, status:"False") setiap resource.for resource in authorizationpolicies destinationrules envoyfilters gateways peerauthentications proxyconfigs requestauthentications serviceentries sidecars telemetries virtualservices wasmplugins workloadentries workloadgroups; do echo "--- Checking $resource ---" kubectl get $resource --all-namespaces -o json | \ jq -r '.items[] | select(.status.conditions != null and any(.status.conditions[]; .type == "ModernizationCompatible" and .status == "False")) | {"kind": .kind, "name": .metadata.name, "namespace": .metadata.namespace, "message": [.status.conditions[] | select(.type == "ModernizationCompatible").message]}' doneContoh Output:
--- Checking serviceentries --- { "kind": "ServiceEntry", "name": "demo-service-entry", "namespace": "se", "message": [ "WARNING: unsupported resolution type: DNS_ROUND_ROBIN" ] } .. --- Checking workloadentries --- { "kind": "WorkloadEntry", "name": "demo-we", "namespace": "default", "message": [ "WARNING: This API is not supported" ] }Perbaiki dan terapkan konfigurasi: Ubah YAML Anda dengan menghapus kolom yang tidak didukung atau mengganti nilai yang tidak valid dengan nilai yang kompatibel. Untuk mendapatkan bantuan, lihat Fitur yang didukung dari Cloud Service Mesh terkelola dan API Istio yang tidak didukung dalam dokumentasi. (Misalnya, dalam contoh yang diberikan, perbarui resolusi
ServiceEntrydariDNS_ROUND_ROBINmenjadiDNS).Verifikasi perbaikan: Setelah menerapkan perbaikan, tunggu hingga 24 jam agar pemeriksaan berkala memperbarui status.
Kondisi
ModernizationCompatiblepada resource tetap harus berubah menjadi status:"True". Periksa status resource menggunakan:kubectl get resource name -n namespace -o yamlContoh output:
status: conditions: - lastTransitionTime: "2026-06-05T06:12:52.219963391Z" message: Resource is compatible for modernization reason: Compatible status: "True" type: ModernizationCompatibleJalankan kembali perintah
gcloud container fleet mesh describe. Setelah semua masalah terkait diselesaikan, kondisiMODERNIZATION_INCOMPATIBLE_CONFIGtidak akan muncul lagi untuk langganan tersebut.
Mengatasi skala armada yang tidak kompatibel
Kode MODERNIZATION_INCOMPATIBLE_FLEET_SCALE menunjukkan bahwa fleet tidak dapat di-upgrade ke bidang kontrol TRAFFIC_DIRECTOR karena skala resource di seluruh fleet melampaui batas yang didukung untuk upgrade.
Pada fase ini, kami mendukung modernisasi armada dengan batasan berikut:
- Hingga 1.500 endpoint (proxy) bidang data di seluruh armada.
- Hingga 200 layanan Cloud Service Mesh di seluruh armada.