Memahami kompatibilitas Cloud Service Mesh

Implementasi bidang kontrol ISTIOD tidak digunakan lagi, dan Anda harus mengevaluasi kompatibilitas, menyelesaikan kondisi pemblokiran di seluruh fleet, dan melakukan modernisasi sebelum batas waktu akhir dukungan.

Panduan ini menjelaskan cara mengevaluasi kompatibilitas fleet untuk modernisasi bidang kontrol dengan mengonfirmasi bahwa konfigurasi, infrastruktur, dan skalanya kompatibel dengan implementasi bidang kontrol TRAFFIC_DIRECTOR.

Mengaktifkan atau menonaktifkan pemeriksaan kompatibilitas

Untuk memulai pemeriksaan kompatibilitas, aktifkan mode validasi untuk fleet, yang akan memicu audit berkelanjutan terhadap 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 dalam 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 akan 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, 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 fleet 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: INFO
    
  • Fleet is not compatible: Jika fleet 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: INFO
    

    Jika fleet Anda tidak kompatibel, tinjau kondisi untuk mengetahui kesenjangan tertentu. Periksa kondisi tingkat fleet dengan tingkat keparahan WARNING atau ERROR tambahan serta kondisi tingkat cluster di bagian membershipStates.servicemesh untuk menyelesaikan pemblokir.

Kompatibilitas level 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 ketidaksesuaian, output-nya 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 ketidaksesuaian tertentu.

Menyelesaikan masalah kompatibilitas

Menyelesaikan 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 menyelesaikan anotasi pod ini:

  1. Mengidentifikasi anotasi yang bermasalah: Periksa kolom details dari kondisi status untuk menemukan kunci anotasi yang tidak didukung atau tidak valid. Temukan semua Pod dengan kunci anotasi yang bermasalah.

  2. Perbaiki dan verifikasi:

    1. Ubah spesifikasi YAML untuk Deployment atau Pod Anda guna memastikan bahwa spesifikasi tersebut 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 telah diperbarui ke cluster Anda.
    2. Setelah semua anotasi Pod diperbaiki, kondisi MODERNIZATION_INCOMPATIBLE_POD_ANNOTATION tidak akan muncul lagi untuk keanggotaan tersebut.

Menyelesaikan 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 disebabkan oleh:

  • Resource Kustom (CR) Istio tertentu yang menggunakan fitur atau kolom yang tidak didukung atau berisi nilai yang tidak valid.
  • Setelan MeshConfig Istio tidak valid atau tidak didukung.
  • Melebihi batas skalabilitas.
  • Penggunaan anotasi layanan atau namespace 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:

  1. Analisis detail kondisi: Periksa kolom details dari kondisi status. Ringkasan ini merangkum setiap error dan mengidentifikasi jenis resource yang mengalami masalah konfigurasi. Untuk contoh detail yang diberikan, Anda akan diminta untuk mengatasi masalah skala dan MeshConfig serta memeriksa resource Gateway dan ServiceEntry untuk menemukan error.

  2. 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 untuk memastikan skrip tersebut memenuhi persyaratan lingkungan dan operasional Anda sebelum menjalankannya di cluster. Skrip ini memerlukan penginstalan kubectl dan jq. Outputnya mencakup detail error spesifik yang ditemukan di bagian status.conditions (jenis: ModernizationCompatible, status: "False") dari 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]}'
    done
    

    Contoh 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"
      ]
    }
    
  3. 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 dokumentasi Fitur yang didukung dari Cloud Service Mesh terkelola dan Dukungan API di Cloud Service Mesh Terkelola. (Misalnya, dalam contoh yang diberikan, perbarui resolusi ServiceEntry dari DNS_ROUND_ROBIN menjadi DNS).

  4. Verifikasi perbaikan: Setelah menerapkan perbaikan, tunggu hingga 24 jam agar pemeriksaan berkala memperbarui status.

    • Kondisi ModernizationCompatible pada resource yang diperbaiki akan berubah menjadi status: "True". Periksa status resource menggunakan:

      kubectl get resource name -n namespace -o yaml
      

      Contoh output:

      status:
        conditions:
        - lastTransitionTime: "2026-06-05T06:12:52.219963391Z"
          message: Resource is compatible for modernization
          reason: Compatible
          status: "True"
          type: ModernizationCompatible
      
    • Jalankan kembali perintah gcloud container fleet mesh describe. Setelah semua masalah terkait diselesaikan, kondisi MODERNIZATION_INCOMPATIBLE_CONFIG tidak akan muncul lagi untuk keanggotaan tersebut.

Mengatasi skala fleet yang tidak kompatibel

Kode MODERNIZATION_INCOMPATIBLE_FLEET_SCALE menunjukkan bahwa fleet tidak dapat dimodernisasi ke bidang kontrol TRAFFIC_DIRECTOR karena skala resource di seluruh fleet melebihi batas yang didukung untuk modernisasi.

Dalam fase ini, kami mendukung modernisasi fleet dengan batasan berikut: