Bermigrasi dari Istio ke Anthos Service Mesh

Panduan ini menjelaskan cara melakukan migrasi dari Istio 1.6 ke Anthos Service Mesh 1.6.14 di cluster GKE. Jika sudah menginstal Istio versi sebelumnya, Anda harus mengupgrade Istio ke 1.6 terlebih dahulu.

Sebelum memulai

Sebelum menginstal Anthos Service Mesh, pastikan Anda memiliki:

Menetapkan kredensial dan izin

  1. Lakukan inisialisasi project Anda agar siap untuk diinstal. Di antara hal lainnya, perintah ini membuat akun layanan yang memungkinkan komponen bidang kontrol, seperti proxy sidecar, mengakses data dan resource project Anda dengan aman:

    curl --request POST \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --data '' \
      "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"

    Perintah ini merespons dengan tanda kurung kurawal kosong: {}

  2. Dapatkan kredensial autentikasi untuk berinteraksi dengan cluster:

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  3. Berikan izin admin cluster kepada pengguna saat ini. Anda memerlukan izin berikut agar dapat membuat aturan role-based access control (RBAC) yang diperlukan untuk Anthos Service Mesh:

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user="$(gcloud config get-value core/account)"

Jika melihat error "cluster-admin-binding" already exists, Anda dapat mengabaikannya dengan aman dan melanjutkan dengan cluster-admin-binding yang ada.

Mendownload file penginstalan

    Linux

  1. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-linux-amd64.tar.gz
  2. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK

  3. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.6.14-asm.2-linux-amd64.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.6.14-asm.2 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh berada di direktori manifests/profiles.

  4. Mac OS

  5. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-osx.tar.gz
  6. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK

  7. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.6.14-asm.2-osx.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.6.14-asm.2 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh berada di direktori manifests/profiles.

  8. Windows

  9. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-win.zip
  10. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK

  11. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.6.14-asm.2-win.zip

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.6.14-asm.2 yang berisi:

    • Contoh aplikasi di direktori samples.
    • Alat command line istioctl yang Anda gunakan untuk menginstal Anthos Service Mesh ada di direktori bin.
    • Profil konfigurasi Anthos Service Mesh berada di direktori manifests/profiles.

  12. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
    cd istio-1.6.14-asm.2
  13. Untuk memudahkan, tambahkan alat di direktori /bin ke PATH Anda:
    export PATH=$PWD/bin:$PATH

Mempersiapkan file konfigurasi resource

Saat menjalankan perintah istioctl install, Anda menentukan -f istio-operator.yaml pada command line. File ini berisi informasi tentang project dan cluster yang diperlukan Anthos Service Mesh. Anda harus mendownload paket yang berisi istio-operator.yaml dan file konfigurasi resource lainnya agar dapat menetapkan informasi project dan cluster.

Untuk memulai, pilih paket yang akan didownload berdasarkan certificate authority (CA) yang ingin digunakan:

  • asm: Paket ini mengaktifkan Mesh CA, yang kami rekomendasikan untuk penginstalan baru.

  • asm-citadel: Secara opsional, Anda dapat mengaktifkan Citadel sebagai CA. Sebelum memilih paket ini, lihat Memilih certificate authority untuk mengetahui informasi selengkapnya.

Untuk menyiapkan file konfigurasi resource:

  1. Buat direktori baru untuk file konfigurasi resource paket Anthos Service Mesh. Sebaiknya gunakan nama cluster sebagai nama direktori.

  2. Ubah ke direktori tempat Anda ingin mendownload paket Anthos Service Mesh.

  3. Download paket yang ingin Anda gunakan, berdasarkan CA

    Mesh CA

    Download paket asm, yang mengaktifkan Mesh CA:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.6-asm asm
    

    Benteng

    Download paket asm-citadel, yang mengaktifkan Citadel sebagai CA:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm-citadel@release-1.6-asm asm
    
  4. Tetapkan project ID untuk project tempat cluster dibuat:

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  5. Tetapkan nomor project untuk project host fleet:

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  6. Tetapkan nama cluster:

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  7. Tetapkan zona atau region default:

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  8. Tetapkan profil konfigurasi yang akan Anda gunakan:

    • Jika semua cluster Anda berada di project yang sama, tetapkan profil asm-gcp:

      kpt cfg set asm anthos.servicemesh.profile asm-gcp
      
    • Jika mesh layanan Anda berisi atau akan berisi beberapa cluster yang berada di project yang berbeda, tetapkan profil asm-gcp-multiproject (beta):

      kpt cfg set asm anthos.servicemesh.profile asm-gcp-multiproject
      
  9. Jika Anda menetapkan profil asm-gcp-multiproject dan mendownload paket asm, yang mengaktifkan Mesh CA, Anda perlu mengonfigurasi alias domain kepercayaan untuk project lain yang akan membentuk mesh layanan multi-cluster/multi-project. Jika tidak, lewati langkah ini.

    1. Dapatkan project ID dari semua cluster yang akan berada di mesh multi-cluster/multi-project.

    2. Untuk setiap project ID cluster, tetapkan alias domain kepercayaan. Misalnya, jika Anda memiliki cluster di 3 project, jalankan perintah berikut dan ganti PROJECT_ID_1, PROJECT_ID_2, dan PROJECT_ID_3 dengan project ID setiap cluster.

      kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog

      Saat mengonfigurasi cluster di project lain, Anda dapat menggunakan perintah yang sama.

      Alias domain kepercayaan memungkinkan Mesh CA untuk mengautentikasi beban kerja pada cluster dalam project lain. Selain menyetel alias domain tepercaya, setelah menginstal Anthos Service Mesh, Anda harus mengaktifkan load balancing lintas cluster.

  10. Hasilkan nilai penyetel kpt:

      kpt cfg list-setters asm
    

    Di output dari perintah, verifikasi bahwa nilai untuk penyetel berikut sudah benar:

    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

Bermigrasi ke Anthos Service Mesh

Untuk bermigrasi dari Istio, sebaiknya ikuti proses upgrade bidang kontrol ganda (disebut sebagai upgrade canary dalam dokumentasi Istio). Dengan upgrade bidang kontrol ganda, Anda menginstal versi baru bidang kontrol bersama dengan bidang kontrol yang ada. Saat menginstal versi baru, Anda menyertakan label revision yang mengidentifikasi versi bidang kontrol baru. Setiap revisi merupakan implementasi penuh bidang kontrol Anthos Service Mesh dengan Deployment dan Service-nya sendiri.

Kemudian, migrasikan ke versi baru dengan menetapkan label revision yang sama pada beban kerja agar mengarah ke bidang kontrol baru dan melakukan mulai ulang berkelanjutan untuk memasukkan ulang proxy dengan versi Anthos Service Mesh yang baru. Dengan pendekatan ini, Anda dapat memantau efek upgrade pada sebagian kecil beban kerja Anda. Setelah menguji aplikasi, Anda dapat memigrasikan semua traffic ke versi baru. Pendekatan ini jauh lebih aman daripada melakukan upgrade langsung, karena bidang kontrol baru langsung menggantikan versi bidang kontrol sebelumnya.

Memperbarui bidang kontrol

Jalankan perintah berikut untuk men-deploy bidang kontrol baru menggunakan profil konfigurasi yang Anda tetapkan di file istio-operator.yaml. Jika Anda ingin mengaktifkan fitur opsional yang didukung, sertakan -f dan nama file YAML pada command line berikut. Lihat Mengaktifkan fitur opsional untuk mengetahui informasi selengkapnya.

  istioctl install \
    -f asm/cluster/istio-operator.yaml \
    --set revision=asm-1614-2

Argumen --set revision menambahkan label istio.io/rev ke istiod. Setelah menjalankan perintah, Anda memiliki dua bidang kontrol Deployment dan Layanan yang berjalan berdampingan:

kubectl get pods -n istio-system

Contoh output:

NAME                                        READY   STATUS    RESTARTS   AGE
istio-ingressgateway-c56675fcd-86zdn        1/1     Running   0          2m9s
istio-ingressgateway-c56675fcd-vn4nv        1/1     Running   0          2m21s
istiod-asm-1614-2-6d5cfd4b89-xztlr           1/1     Running   0          3m44s
istiod-fb7f746f4-wcntn                      1/1     Running   0          50m

Men-deploy ulang beban kerja

Menginstal revisi baru tidak berdampak pada proxy file bantuan yang ada. Untuk mengupgradenya, Anda harus mengonfigurasinya agar mengarah ke bidang kontrol baru. Hal ini dikontrol selama injeksi file bantuan berdasarkan label namespace istio.io/rev.

  1. Update workload yang akan dimasukkan dengan versi Anthos Service Mesh baru:

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-1614-2 --overwrite

    Label istio-injection harus dihapus karena lebih diutamakan daripada label istio.io/rev.

  2. Mulai ulang Pod untuk memicu injeksi ulang:

    kubectl rollout restart deployment -n NAMESPACE
  3. Pastikan bahwa Pod dikonfigurasi untuk mengarah ke bidang kontrol istiod-asm-1614-2:

    kubectl get pods -n NAMESPACE -l istio.io/rev=asm-1614-2

  4. Uji aplikasi Anda untuk memverifikasi bahwa beban kerja berfungsi dengan benar.

  5. Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah sebelumnya untuk setiap namespace.

  6. Jika Anda yakin aplikasi telah berfungsi seperti yang diharapkan, lewati ke Menyelesaikan migrasi. Jika tidak, lakukan langkah-langkah berikut untuk melakukan rollback ke versi sebelumnya:

    Untuk melakukan rollback:

    1. Update workload yang akan dimasukkan dengan versi bidang kontrol sebelumnya:

      kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
    2. Mulai ulang Pod untuk memicu injeksi ulang agar proxy memiliki versi sebelumnya:

      kubectl rollout restart deployment -n NAMESPACE
    3. Deploy ulang istio-ingressgateway versi sebelumnya:

      kubectl -n istio-system rollout undo deploy istio-ingressgateway
      
    4. Hapus bidang kontrol baru:

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-asm-1614-2 -n istio-system --ignore-not-found=true
      

Menyelesaikan migrasi

Jika Anda yakin aplikasi Anda berfungsi seperti yang diharapkan, lakukan langkah-langkah berikut untuk menyelesaikan migrasi ke Anthos Service Mesh:

  1. Jika Anda bermigrasi dari add-on Istio di GKE, nonaktifkan add-on:

    gcloud beta container clusters update CLUSTER_NAME \
        --project=CLUSTER_PROJECT_ID \
        --update-addons=Istio=DISABLED
  2. Jalankan perintah berikut untuk men-deploy pengontrol canonical Service:

    kubectl apply -f asm/canonical-service/controller.yaml

    Perintah ini men-deploy pengontrol Layanan Kanonis ke cluster Anda. Pengontrol Layanan Kanonis mengelompokkan beban kerja yang termasuk dalam layanan logis yang sama, dan diperlukan untuk membuka fungsi tambahan di dasbor Layanan pada Konsol Google Cloud. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan dan menonaktifkan pengontrol Layanan Kanonis.

  3. Hapus bidang kontrol lama:

    kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod -n istio-system --ignore-not-found=true
    

Melihat dasbor Anthos Service Mesh

Bagian ini hanya berlaku jika Anda menginstal Anthos Service Mesh dengan profil konfigurasi asm-gcp. Jika Anda menggunakan profil asm-gcp-multiproject untuk menginstal Anthos Service Mesh, data telemetri tidak akan tersedia di dasbor Anthos Service Mesh di Konsol Google Cloud.

Setelah workload di-deploy di cluster dengan proxy file bantuan dimasukkan, Anda dapat menjelajahi halaman Anthos Service Mesh di Konsol Google Cloud untuk melihat semua fitur kemampuan observasi yang ditawarkan Anthos Service Mesh. Perlu diperhatikan bahwa perlu waktu sekitar satu atau dua menit agar data telemetri ditampilkan di konsol Google Cloud setelah Anda men-deploy workload.

Akses ke Anthos Service Mesh di Konsol Google Cloud dikontrol oleh Identity and Access Management (IAM). Untuk mengakses halaman Anthos Service Mesh, Pemilik Project harus memberi pengguna peran Project Editor atau Viewer, atau peran yang lebih ketat yang dijelaskan dalam Mengontrol akses ke Anthos Service Mesh di Konsol Google Cloud.

  1. Di konsol Google Cloud, buka Anthos Service Mesh.

    Buka Anthos Service Mesh

  2. Pilih project Google Cloud dari menu drop-down di panel menu.

  3. Jika Anda memiliki lebih dari satu mesh layanan, pilih mesh dari menu drop-down Service Mesh.

Untuk mempelajari lebih lanjut, lihat Menjelajahi Anthos Service Mesh di Konsol Google Cloud.

Selain halaman Anthos Service Mesh, metrik yang terkait dengan layanan Anda (seperti jumlah permintaan yang diterima oleh layanan tertentu) dikirim ke Cloud Monitoring, yang akan muncul di Metrics Explorer.

Untuk melihat metrik:

  1. Di konsol Google Cloud, buka halaman Monitoring:

    Buka Monitoring

  2. Pilih Resource > Metrics Explorer.

Untuk mengetahui daftar lengkap metrik, lihat Metrik Istio dalam dokumentasi Cloud Monitoring.

Mendaftarkan cluster Anda

Anda harus mendaftarkan cluster ke fleet project untuk mendapatkan akses ke antarmuka pengguna terpadu di Konsol Google Cloud. Armada menyediakan cara terpadu untuk melihat dan mengelola cluster dan workload-nya, termasuk cluster di luar Google Cloud.

Baca bagian Mendaftarkan cluster ke fleet untuk mengetahui informasi tentang cara mendaftarkan cluster Anda.

Langkah selanjutnya