Bermigrasi dari Pengontrol Layanan Kanonik Dalam Cluster ke yang Terkelola

Catatan: Layanan Kanonik didukung secara otomatis di Cloud Service Mesh versi 1.6.8 dan yang lebih baru.

Panduan ini menjelaskan langkah-langkah untuk bermigrasi dari Pengontrol Layanan Kanonik dalam cluster ke Pengontrol Layanan Kanonik Terkelola.

Pengontrol Layanan Kanonik dalam cluster tidak digunakan lagi dan tidak akan lagi menerima update. Meskipun deployment pengontrol dalam cluster yang ada akan terus beroperasi, sebaiknya migrasikan ke Pengontrol Layanan Kanonis terkelola untuk memastikan kompatibilitas dengan rilis mendatang, akses ke fitur terbaru, dan dukungan berkelanjutan. Semua penginstalan Cloud Service Mesh dengan asmcli dari versi 1.25 akan disediakan dengan pengontrol Canonical Service terkelola.

1. Mengaktifkan fitur fleet Cloud Service Mesh

Pengontrol Managed Canonical Service diinstal sebagai bagian dari fitur fleet Cloud Service Mesh, yang diaktifkan menggunakan perintah berikut:

  gcloud container fleet mesh enable --project FLEET_PROJECT_ID
  

Ganti FLEET_PROJECT_ID dengan ID project Host Flotte Anda. Umumnya, FLEET_PROJECT_ID memiliki nama yang sama dengan project.

Perhatikan bahwa jika Anda berencana mendaftarkan beberapa cluster, pengaktifan Cloud Service Mesh akan dilakukan di tingkat fleet sehingga Anda hanya perlu menjalankan perintah ini satu kali.

Memberikan izin ke akun layanan Cloud Service Mesh

Jika project cluster berbeda dengan project host fleet, Anda harus mengizinkan akun layanan Cloud Service Mesh di project fleet untuk mengakses project cluster.

Anda hanya perlu melakukan ini sekali untuk setiap project cluster. Jika sebelumnya Anda mengonfigurasi Cloud Service Mesh terkelola untuk kombinasi project cluster dan fleet ini, perubahan ini telah diterapkan dan Anda tidak perlu menjalankan perintah berikut.

Berikan izin akun layanan di project fleet untuk mengakses project cluster:

  gcloud projects add-iam-policy-binding "CLUSTER_PROJECT_ID" \
    --member "serviceAccount:service-FLEET_PROJECT_NUMBER@gcp-sa-servicemesh.iam.gserviceaccount.com" \
    --role roles/anthosservicemesh.serviceAgent

Ganti CLUSTER_PROJECT_ID dengan project ID untuk cluster Anda dan FLEET_PROJECT_NUMBER dengan nomor project untuk fleet Anda.

Untuk menentukan nomor project untuk armada Anda, lihat petunjuk di dokumen project Google Cloud.

2. Menonaktifkan Pengontrol Layanan Kanonik dalam cluster

Pengontrol Layanan Kanonik Terkelola tidak dapat berfungsi bersama pengontrol Layanan Kanonik dalam cluster. Oleh karena itu, Anda harus menonaktifkan pengontrol dalam cluster.

  1. Periksa Pengontrol Dalam Cluster: Verifikasi apakah pengontrol kanonis dalam cluster ada.

    kubectl get deployment canonical-service-controller-manager -n asm-system
    
  2. Menghapus Pengontrol Dalam Cluster: Jika deployment ditemukan, Anda dapat menghapusnya (dan seluruh namespace asm-system) dengan menjalankan perintah berikut:

    kubectl delete namespace asm-system
    

3. Memverifikasi bahwa Managed Canonical Controller berfungsi

Pengontrol Layanan Kanonik Terkelola melaporkan statusnya dalam status fitur, sehingga Anda dapat mengonfirmasi bahwa penginstalan berfungsi dengan benar dengan memeriksa status fitur:

  1. Periksa Status Fitur: Ambil status fitur menggunakan perintah berikut:

    gcloud container fleet mesh describe --project FLEET_PROJECT_ID
    
  2. Verifikasi Status: Periksa status cluster dan pastikan state.code adalah OK.

    • Penting: Mungkin diperlukan waktu hingga 15 menit agar status bertransisi ke OK. Tunggu dan jalankan kembali perintah tersebut.
    • Lanjutkan ke langkah berikutnya hanya jika state.code adalah OK.
    • Jika state.code tidak menjadi OK setelah 15 menit, lihat Memecahkan masalah Managed Canonical Service Controller untuk mendapatkan panduan pemecahan masalah.

    Contoh output:

    membershipStates:
        projects/<project-number>/locations/<location>/memberships/<membership-name>:
          state:
            code: OK
            description:
              Revision(s) ready for use: istiod-asm-183-2.
    
  3. Periksa apakah Pengontrol Kanonik Terkelola berfungsi: Pastikan bahwa pengontrol kanonis terkelola berfungsi dengan benar dengan men-deploy pod dengan sidecar yang dimasukkan dan periksa apakah pengontrol secara otomatis membuat layanan kanonis yang sesuai.

    1. Buat namespace dengan injeksi sidecar otomatis yang diaktifkan:

      kubectl create namespace NAMESPACE_NAME
      

      Ikuti bagian Mengaktifkan injeksi sidecar otomatis untuk mengaktifkan injeksi sidecar otomatis di namespace yang baru dibuat.

    2. Buat file YAML bernama simple_pod.yaml dengan konten berikut:

          apiVersion: v1
          kind: Pod
          metadata:
            name: simple-pod
            labels:
              app: my-app
          spec:
            containers:
            - name: my-container
              image: nginx:latest
              ports:
              - containerPort: 80
      

      Label app menentukan nama layanan kanonis. Untuk informasi selengkapnya, lihat Menentukan Layanan Canonical.

    3. Deploy pod dengan perintah berikut. Ganti NAMESPACE_NAME dengan nama namespace tempat Anda mengaktifkan injeksi sidecar otomatis.

      kubectl apply -f simple_pod.yaml -n NAMESPACE_NAME
      
    4. Pastikan pod telah dibuat:

      kubectl get pods -n NAMESPACE_NAME
      

      Contoh output:

      NAME                             READY   STATUS    RESTARTS   AGE
      simple-pod                       2/2     Running   0          9s
      

      Note: Pastikan kolom READY menampilkan 2/2. Hal ini menunjukkan bahwa penampung utama dan proxy sidecar berjalan dengan benar. Jika Anda melihat nilai yang berbeda, kemungkinan injeksi sidecar otomatis tidak diaktifkan untuk namespace.

    5. Memverifikasi Pembuatan Layanan Kanonik: Jalankan perintah berikut untuk mencantumkan semua Layanan Kanonik di namespace. Pastikan my-app Layanan Kanonik dibuat.

      kubectl get canonicalservices -n NAMESPACE_NAME
      

      Contoh output:

        NAME          AGE
        my-app        3s
      
    6. Pembersihan: Hapus pod, layanan kanonis, dan namespace:

      kubectl delete -f simple_pod.yaml -n NAMESPACE_NAME
      kubectl delete canonicalservices my-app -n NAMESPACE_NAME
      kubectl delete namespace NAMESPACE_NAME
      

    Pemecahan masalah:

Kembali ke Pengontrol Layanan Kanonik Dalam Cluster

Jika mengalami masalah dengan Pengontrol Layanan Kanonik Terkelola, Anda dapat menginstal ulang pengontrol dalam cluster dengan perintah berikut:

  kubectl apply -f \
  https://raw.githubusercontent.com/GoogleCloudPlatform/anthos-service-mesh-packages/release-1.25/asm/canonical-service/controller.yaml

Langkah berikutnya

Pelajari: