Mengupgrade Anthos Service Mesh

Halaman ini menjelaskan cara:

  • Jalankan asmcli untuk melakukan upgrade dari Anthos Service Mesh ke Anthos Service Mesh 1.20.4.

  • Men-deploy gateway masuk (opsional).

  • Lakukan upgrade canary untuk memigrasikan beban kerja Anda ke bidang kontrol baru.

Versi Anthos Service Mesh yang dapat Anda upgrade berbeda di setiap platform.

GKE

Anda dapat mengupgrade langsung ke Anthos Service Mesh 1.20.4-asm.0 di Google Kubernetes Engine dari versi berikut:

1.18+

Lokal

Anda dapat mengupgrade langsung ke Anthos Service Mesh 1.20.4-asm.0 di GKE di VMware dan Google Distributed Cloud Virtual untuk Bare Metal dari versi berikut:

1.18+

GKE on AWS

Anda dapat mengupgrade langsung ke Anthos Service Mesh 1.20.4-asm.0 di GKE di AWS dari versi berikut:

1.18+

GKE on Azure

GKE di Azure hanya mendukung Anthos Service Mesh 1.16. Upgrade dari Anthos Service Mesh versi sebelumnya tidak didukung.

Amazon EKS

Jika telah menginstal Anthos Service Mesh 1.7 di EKS, Anda harus menginstal Anthos Service Mesh 1.20 di cluster baru. Upgrade dari Anthos Service Mesh 1.7 ke Anthos Service Mesh 1.20 tidak didukung.

Microsoft AKS

Jika telah menginstal Anthos Service Mesh 1.7 di AKS, Anda harus menginstal Anthos Service Mesh 1.20 di cluster baru. Upgrade dari Anthos Service Mesh 1.7 ke Anthos Service Mesh 1.20 tidak didukung.

Sebelum memulai

Sebelum memulai, pastikan Anda:

Penyesuaian bidang kontrol

Jika penginstalan sebelumnya disesuaikan, Anda memerlukan penyesuaian yang sama saat mengupgrade ke versi Anthos Service Mesh baru atau bermigrasi dari Istio. Jika menyesuaikan penginstalan dengan menambahkan tanda --set values ke istioctl install, Anda harus menambahkan setelan tersebut ke file YAML IstioOperator, yang disebut sebagai file overlay. Tentukan file overlay menggunakan opsi --custom_overlay dengan nama file saat menjalankan skrip. Skrip meneruskan file overlay ke istioctl install.

Otoritas Sertifikasi

Mengubah certificate authority (CA) selama proses upgrade akan menyebabkan periode nonaktif. Selama upgrade, traffic mTLS akan terganggu hingga semua beban kerja dialihkan untuk menggunakan bidang kontrol baru dengan CA baru.

Mengupgrade Anthos Service Mesh

Berikut adalah penjelasan cara mengupgrade Anthos Service Mesh:

  1. Jika Anda mengupgrade mesh multi-cluster di GKE yang menggunakan certificate authority Anthos Service Mesh (Mesh CA), jalankan asmcli create-mesh untuk mengonfigurasi mesh multi-cluster agar memercayai identitas workload fleet tanpa periode nonaktif load balancing lintas-cluster selama proses upgrade.

  2. Jalankan asmcli install untuk menginstal Anthos Service Mesh di satu cluster. Lihat bagian berikut untuk mengetahui contoh command line. Contoh-contoh tersebut berisi argumen yang diperlukan dan argumen opsional yang mungkin berguna bagi Anda. Sebaiknya selalu tentukan argumen output_dir agar Anda dapat dengan mudah menemukan gateway contoh dan alat seperti istioctl. Lihat menu navigasi di sebelah kanan untuk melihat daftar contoh.

  3. Anda juga dapat menginstal atau mengupgrade gateway masuk. Secara default, asmcli tidak menginstal istio-ingressgateway. Sebaiknya deploy serta kelola bidang kontrol dan gateway secara terpisah. Jika Anda perlu menginstal istio-ingressgateway default dengan bidang kontrol dalam cluster, sertakan argumen --option legacy-default-ingressgateway.

  4. Untuk menyelesaikan penyiapan Anthos Service Mesh, Anda harus mengaktifkan injeksi file bantuan otomatis dan men-deploy atau men-deploy ulang workload.

Mengonfigurasi mesh multi-cluster untuk memercayai identitas workload fleet

Jika Anda mengupgrade mesh multi-cluster di GKE yang menggunakan Mesh CA sebagai certificate authority, Anda harus menjalankan asmcli create-mesh sebelum mengupgrade setiap cluster. Perintah ini mengonfigurasi Mesh CA untuk menggunakan kumpulan identitas workload fleet, FLEET_PROJECT_ID.svc.id.goog, sebagai domain kepercayaan setelah Anda melakukan upgrade. Perintah asmcli create-mesh:

  • Mendaftarkan semua cluster ke fleet yang sama.
  • Mengonfigurasi mesh agar memercayai identitas workload fleet.
  • Membuat secret jarak jauh.

Anda dapat menentukan URI untuk setiap cluster atau jalur file kubeconfig.

URI Cluster

Dalam perintah berikut, ganti FLEET_PROJECT_ID dengan project ID project host fleet dan URI cluster dengan nama cluster, zona, atau region, serta project ID untuk setiap cluster.

./asmcli create-mesh \
    FLEET_PROJECT_ID \
    PROJECT_ID_1/CLUSTER_LOCATION_1/CLUSTER_NAME_1 \
    PROJECT_ID_2/CLUSTER_LOCATION_2/CLUSTER_NAME_2 # \
    # Add a line for each cluster in the mesh

file kubeconfig

Dalam perintah berikut, ganti FLEET_PROJECT_ID dengan project ID dari project fleet host dan PATH_TO_KUBECONFIG dengan jalur ke setiap file kubeconfig.

./asmcli create-mesh \
    FLEET_PROJECT_ID \
    PATH_TO_KUBECONFIG_1 \
    PATH_TO_KUBECONFIG_2 # \
    # Add a line for each cluster in the mesh

Upgrade dengan fitur default dan Mesh CA

Bagian ini menunjukkan cara menjalankan asmcli untuk mengupgrade Anthos Service Mesh dengan fitur yang didukung default untuk platform Anda dan mengaktifkan certificate authority Anthos Service Mesh (Mesh CA) sebagai certificate authority.

GKE

Jalankan perintah berikut untuk mengupgrade bidang kontrol dengan fitur default dan Mesh CA. Masukkan nilai Anda di placeholder yang disediakan.

./asmcli install \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH \
  --enable_all \
  --ca mesh_ca
  • --project_id, --cluster_name, dan --cluster_location Tentukan project ID tempat cluster berada, nama cluster, dan zona atau region cluster.
  • --fleet_id Project ID untuk project fleet host. Jika Anda tidak menyertakan opsi ini, asmcli akan menggunakan project tempat cluster dibuat saat mendaftarkan cluster tersebut.
  • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
  • --enable_all Mengizinkan skrip untuk:
    • Memberikan izin IAM yang diperlukan.
    • Aktifkan Google API yang diperlukan.
    • Tetapkan label pada cluster yang mengidentifikasi mesh.
    • Daftarkan cluster ke fleet jika belum terdaftar.
  • --ca mesh_ca Gunakan Mesh CA sebagai certificate authority. Mengubah certificate authority selama upgrade menyebabkan periode nonaktif. asmclimengonfigurasi Mesh CA untuk menggunakan identitas workload fleet

Cluster GKE Enterprise lainnya

Jalankan perintah berikut di cluster GKE Enterprise lainnya untuk mengupgrade bidang kontrol dengan fitur default dan Mesh CA. Masukkan nilai Anda di placeholder yang disediakan.

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. Jalankan asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca mesh_ca
    
    • --fleet_id Project ID untuk project fleet host.
    • --kubeconfig Jalur lengkap ke file kubeconfig. Variabel lingkungan $PWD tidak berfungsi di sini. Selain itu, lokasi file kubeconfig relatif yang menggunakan `~` tidak akan berfungsi.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --platform multicloud Menentukan bahwa platform adalah sesuatu selain Google Cloud, seperti lokal atau multi-cloud.
    • --enable_all Mengizinkan skrip untuk:
      • Memberikan izin IAM yang diperlukan.
      • Aktifkan Google API yang diperlukan.
      • Tetapkan label pada cluster yang mengidentifikasi mesh.
      • Daftarkan cluster ke fleet jika belum terdaftar.
    • --ca mesh_ca Gunakan Mesh CA sebagai certificate authority. Mengubah certificate authority selama upgrade akan menyebabkan periode nonaktif. asmclimengonfigurasi Mesh CA untuk menggunakan identitas workload fleet

Mengupgrade fitur default dengan CA Service

Bagian ini menunjukkan cara menjalankan asmcli untuk mengupgrade Anthos Service Mesh dengan fitur yang didukung default untuk platform Anda dan mengaktifkan Certificate Authority Service.

GKE

Jalankan perintah berikut untuk mengupgrade bidang kontrol dengan fitur default dan Certificate Authority Service. Masukkan nilai Anda di placeholder yang disediakan.

./asmcli install \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH \
  --enable_all \
  --ca gcp_cas \
  --ca_pool projects/PROJECT_NAME/locations/ca_region/caPools/CA_POOL
  • --project_id, --cluster_name, dan --cluster_location Tentukan project ID tempat cluster berada, nama cluster, dan zona atau region cluster.
  • --fleet_id Project ID untuk project fleet host. Jika Anda tidak menyertakan opsi ini, asmcli akan menggunakan project tempat cluster dibuat saat mendaftarkan cluster tersebut.
  • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
  • --enable_all Mengizinkan skrip untuk:
    • Memberikan izin IAM yang diperlukan.
    • Aktifkan Google API yang diperlukan.
    • Tetapkan label pada cluster yang mengidentifikasi mesh.
    • Daftarkan cluster ke fleet jika belum terdaftar.
  • --ca gcp_cas Gunakan Certificate Authority Service sebagai certificate authority. Mengubah certificate authority selama upgrade menyebabkan periode nonaktif. asmclimengonfigurasi Certificate Authority Service untuk menggunakan identitas workload fleet
  • --ca_pool ID lengkap untuk Kumpulan CA Certificate Authority Service.

Lokal

Jalankan perintah berikut di GKE di VMware atau Google Distributed Cloud Virtual for Bare Metal guna mengupgrade bidang kontrol dengan fitur default dan Certificate Authority Service. Masukkan nilai Anda di placeholder yang disediakan.

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. Jalankan asmcli install:

    ./asmcli install \
     --kubeconfig KUBECONFIG_FILE \
     --fleet_id FLEET_PROJECT_ID \
     --output_dir DIR_PATH \
     --enable_all \
     --ca gcp_cas \
     --platform multicloud \
     --ca_pool projects/PROJECT_NAME/locations/ca_region/caPools/CA_POOL
    
    • --fleet_id Project ID untuk project fleet host.
    • --kubeconfig Jalur lengkap ke file kubeconfig. Variabel lingkungan $PWD tidak berfungsi di sini. Selain itu, lokasi file kubeconfig relatif yang menggunakan `~` tidak akan berfungsi.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --platform multicloud Menentukan bahwa platform adalah sesuatu selain Google Cloud, seperti lokal atau multi-cloud.
    • --enable_all Mengizinkan skrip untuk:
      • Memberikan izin IAM yang diperlukan.
      • Aktifkan Google API yang diperlukan.
      • Tetapkan label pada cluster yang mengidentifikasi mesh.
      • Daftarkan cluster ke fleet jika belum terdaftar.
    • --ca gcp_cas Gunakan Certificate Authority Service sebagai certificate authority. Mengubah certificate authority selama upgrade menyebabkan periode nonaktif. asmclimengonfigurasi Certificate Authority Service untuk menggunakan identitas workload fleet
    • --ca_pool ID lengkap untuk Kumpulan CA Certificate Authority Service.

Mengupgrade fitur default dengan Istio CA

Bagian ini menunjukkan cara menjalankan asmcli untuk mengupgrade Anthos Service Mesh dengan fitur yang didukung default untuk platform Anda dan mengaktifkan Istio CA.

GKE

Jalankan perintah berikut untuk mengupgrade bidang kontrol dengan fitur default dan Istio CA. Masukkan nilai Anda di placeholder yang disediakan.

./asmcli install \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH \
  --enable_all \
  --ca citadel
  • --project_id, --cluster_name, dan --cluster_location Tentukan project ID tempat cluster berada, nama cluster, dan zona atau region cluster.
  • --fleet_id Project ID untuk project fleet host. Jika Anda tidak menyertakan opsi ini, asmcli akan menggunakan project tempat cluster dibuat saat mendaftarkan cluster tersebut.
  • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
  • --enable_all Mengizinkan skrip untuk:
    • Memberikan izin IAM yang diperlukan.
    • Aktifkan Google API yang diperlukan.
    • Tetapkan label pada cluster yang mengidentifikasi mesh.
    • Daftarkan cluster ke fleet jika belum terdaftar.
  • --ca citadel Gunakan Istio CA. Mengubah otoritas sertifikat selama upgrade akan menyebabkan periode nonaktif.

Lokal

Jalankan perintah berikut di GKE di VMware atau Google Distributed Cloud Virtual for Bare Metal untuk mengupgrade bidang kontrol dengan fitur default dan Istio CA. Masukkan nilai Anda di placeholder yang disediakan.

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. Jalankan asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
    
    • --fleet_id Project ID untuk project fleet host.
    • --kubeconfig Jalur lengkap ke file kubeconfig. Variabel lingkungan $PWD tidak berfungsi di sini. Selain itu, lokasi file kubeconfig relatif yang menggunakan `~` tidak akan berfungsi.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --platform multicloud Menentukan bahwa platform adalah sesuatu selain Google Cloud, seperti lokal atau multi-cloud.
    • --enable_all Mengizinkan skrip untuk:
      • Memberikan izin IAM yang diperlukan.
      • Aktifkan Google API yang diperlukan.
      • Tetapkan label pada cluster yang mengidentifikasi mesh.
      • Daftarkan cluster ke fleet jika belum terdaftar.
    • --ca citadel Gunakan Istio CA sebagai certificate authority.
    • --ca_cert Intermediate certificate
    • --ca_key Kunci untuk intermediate certificate
    • --root_cert Root certificate
    • --cert_chain Rantai sertifikat

AWS

Jalankan perintah berikut di GKE di AWS untuk mengupgrade bidang kontrol dengan fitur default dan Istio CA. Masukkan nilai Anda di placeholder yang disediakan. Anda dapat memilih untuk mengaktifkan Ingress ke subnet publik atau subnet pribadi.

Publik

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. Jalankan asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
    
    • --fleet_id Project ID untuk project fleet host.
    • --kubeconfig Jalur lengkap ke file kubeconfig. Variabel lingkungan $PWD tidak berfungsi di sini. Selain itu, lokasi file kubeconfig relatif yang menggunakan `~` tidak akan berfungsi.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --platform multicloud Menentukan bahwa platform adalah sesuatu selain Google Cloud, seperti lokal atau multi-cloud.
    • --enable_all Mengizinkan skrip untuk:
      • Memberikan izin IAM yang diperlukan.
      • Aktifkan Google API yang diperlukan.
      • Tetapkan label pada cluster yang mengidentifikasi mesh.
      • Daftarkan cluster ke fleet jika belum terdaftar.
    • --ca citadel Gunakan Istio CA sebagai certificate authority.
    • --ca_cert Intermediate certificate
    • --ca_key Kunci untuk intermediate certificate
    • --root_cert Root certificate
    • --cert_chain Rantai sertifikat

Pribadi

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. Simpan YAML berikut ke file bernama istio-operator-internal-lb.yaml:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - enabled: true
          k8s:
            serviceAnnotations:
              service.beta.kubernetes.io/aws-load-balancer-internal: "true"
          name: istio-ingressgateway
    
  3. Jalankan asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
      --custom_overlay istio-operator-internal-lb.yaml
    
    • --fleet_id Project ID untuk project fleet host.
    • --kubeconfig Jalur lengkap ke file kubeconfig. Variabel lingkungan $PWD tidak berfungsi di sini. Selain itu, lokasi file kubeconfig relatif yang menggunakan `~` tidak akan berfungsi.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --platform multicloud Menentukan bahwa platform adalah sesuatu selain Google Cloud, seperti lokal atau multi-cloud.
    • --enable_all Mengizinkan skrip untuk:
      • Memberikan izin IAM yang diperlukan.
      • Aktifkan Google API yang diperlukan.
      • Tetapkan label pada cluster yang mengidentifikasi mesh.
      • Daftarkan cluster ke fleet jika belum terdaftar.
    • --ca citadel Gunakan Istio CA sebagai certificate authority.
    • --ca_cert Intermediate certificate
    • --ca_key Kunci untuk intermediate certificate
    • --root_cert Root certificate
    • --cert_chain Rantai sertifikat

Amazon EKS

Jalankan perintah berikut di Amazon EKS untuk mengupgrade bidang kontrol dengan fitur default dan Istio CA. Masukkan nilai Anda di placeholder yang disediakan.

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. Jalankan asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
    
    • --fleet_id Project ID untuk project fleet host.
    • --kubeconfig Jalur lengkap ke file kubeconfig. Variabel lingkungan $PWD tidak berfungsi di sini. Selain itu, lokasi file kubeconfig relatif yang menggunakan `~` tidak akan berfungsi.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --platform multicloud Menentukan bahwa platform adalah sesuatu selain Google Cloud, seperti lokal atau multi-cloud.
    • --enable_all Mengizinkan skrip untuk:
      • Memberikan izin IAM yang diperlukan.
      • Aktifkan Google API yang diperlukan.
      • Tetapkan label pada cluster yang mengidentifikasi mesh.
      • Daftarkan cluster ke fleet jika belum terdaftar.
    • --ca citadel Gunakan Istio CA sebagai certificate authority.
    • --ca_cert Intermediate certificate
    • --ca_key Kunci untuk intermediate certificate
    • --root_cert Root certificate
    • --cert_chain Rantai sertifikat

Microsoft AKS

Jalankan perintah berikut di Amazon EKS untuk mengupgrade bidang kontrol dengan fitur default dan Istio CA. Masukkan nilai Anda di placeholder yang disediakan.

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. Jalankan asmcli install:

    HUB_REGISTRATION_EXTRA_FLAGS=--has-private-issuer ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca citadel \
      --ca_cert FILE_PATH \
      --ca_key FILE_PATH \
      --root_cert FILE_PATH \
      --cert_chain FILE_PATH
    
    • --fleet_id Project ID untuk project fleet host.
    • --kubeconfig Jalur lengkap ke file kubeconfig. Variabel lingkungan $PWD tidak berfungsi di sini. Selain itu, lokasi file kubeconfig relatif yang menggunakan `~` tidak akan berfungsi.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --platform multicloud Menentukan bahwa platform adalah sesuatu selain Google Cloud, seperti lokal atau multi-cloud.
    • --enable_all Mengizinkan skrip untuk:
      • Memberikan izin IAM yang diperlukan.
      • Aktifkan Google API yang diperlukan.
      • Tetapkan label pada cluster yang mengidentifikasi mesh.
      • Daftarkan cluster ke fleet jika belum terdaftar.
    • --ca citadel Gunakan Istio CA sebagai certificate authority.
    • --ca_cert Intermediate certificate
    • --ca_key Kunci untuk intermediate certificate
    • --root_cert Root certificate
    • --cert_chain Rantai sertifikat

Upgrade dengan fitur opsional

File overlay adalah file YAML yang berisi resource kustom (CR) IstioOperator yang Anda teruskan ke asmcli untuk mengonfigurasi bidang kontrol. Anda dapat mengganti konfigurasi bidang kontrol default dan mengaktifkan fitur opsional dengan meneruskan file YAML ke asmcli. Anda dapat menambahkan beberapa overlay sekaligus, dan setiap file overlay menggantikan konfigurasi pada lapisan sebelumnya.

GKE

Jalankan perintah berikut untuk menginstal bidang kontrol dengan fitur opsional. Untuk menambahkan beberapa file, tentukan --custom_overlay dan nama file, misalnya: --custom_overlayoverlay_file1.yaml --custom_overlay overlay_file2.yaml --custom_overlay overlay_file3.yaml Masukkan nilai Anda dalam placeholder yang disediakan.

./asmcli install \
  --project_id PROJECT_ID \
  --cluster_name CLUSTER_NAME \
  --cluster_location CLUSTER_LOCATION \
  --fleet_id FLEET_PROJECT_ID \
  --output_dir DIR_PATH \
  --enable_all \
  --ca mesh_ca \
  --custom_overlay OVERLAY_FILE
  • --project_id, --cluster_name, dan --cluster_location Tentukan project ID tempat cluster berada, nama cluster, dan zona atau region cluster.
  • --fleet_id Project ID untuk project fleet host. Jika Anda tidak menyertakan opsi ini, asmcli akan menggunakan project tempat cluster dibuat saat mendaftarkan cluster tersebut.
  • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
  • --enable_all Mengizinkan skrip untuk:
    • Memberikan izin IAM yang diperlukan.
    • Aktifkan Google API yang diperlukan.
    • Tetapkan label pada cluster yang mengidentifikasi mesh.
    • Daftarkan cluster ke fleet jika belum terdaftar.
  • --ca mesh_ca Gunakan Mesh CA sebagai certificate authority. Mengubah certificate authority selama upgrade menyebabkan periode nonaktif. asmclimengonfigurasi Mesh CA untuk menggunakan identitas workload fleet
  • --custom_overlay Tentukan nama file overlay.

Di luar Google Cloud

Jalankan perintah berikut di GKE di VMware, Google Distributed Cloud Virtual for Bare Metal, GKE di AWS, Amazon EKS, atau Microsoft AKS. Masukkan nilai Anda di placeholder yang disediakan.

  1. Setel konteks saat ini ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
    
  2. Jalankan asmcli install:

    ./asmcli install \
      --fleet_id FLEET_PROJECT_ID \
      --kubeconfig KUBECONFIG_FILE \
      --output_dir DIR_PATH \
      --platform multicloud \
      --enable_all \
      --ca mesh_ca \
      --custom_overlay OVERLAY_FILE
    
    • --fleet_id Project ID untuk project fleet host.
    • --kubeconfig Jalur lengkap ke file kubeconfig. Variabel lingkungan $PWD tidak berfungsi di sini. Selain itu, lokasi file kubeconfig relatif yang menggunakan `~` tidak akan berfungsi.
    • --output_dir Sertakan opsi ini untuk menentukan direktori tempat asmcli mendownload paket anthos-service-mesh dan mengekstrak file penginstalan, yang berisi istioctl, sampel, dan manifes. Jika tidak, asmcli akan mendownload file ke direktori tmp. Anda dapat menentukan jalur relatif atau jalur lengkap. Variabel lingkungan $PWD tidak berfungsi di sini.
    • --platform multicloud Menentukan bahwa platform adalah sesuatu selain Google Cloud, seperti lokal atau multi-cloud.
    • --enable_all Mengizinkan skrip untuk:
      • Memberikan izin IAM yang diperlukan.
      • Aktifkan Google API yang diperlukan.
      • Tetapkan label pada cluster yang mengidentifikasi mesh.
      • Daftarkan cluster ke fleet jika belum terdaftar.
    • --ca mesh_ca Gunakan Mesh CA sebagai certificate authority. Mengubah certificate authority selama upgrade menyebabkan periode nonaktif. asmclimengonfigurasi Mesh CA untuk menggunakan identitas workload fleet
    • --custom_overlay Tentukan nama file overlay.

Mengupgrade gateway

Jika telah men-deploy gateway, Anda juga harus mengupgradenya. Untuk upgrade sederhana, ikuti bagian Upgrade yang Dilakukan di panduan Gateway penginstalan dan upgrade.

Beralih ke bidang kontrol baru

  1. Dapatkan label revisi yang ada di istiod.

    kubectl get pod -n istio-system -L istio.io/rev
    

    Output dari perintah ini mirip dengan berikut ini.

    NAME                                                 READY   STATUS    RESTARTS   AGE   REV
    istiod-asm-1204-0-67998f4b55-lrzpz           1/1     Running   0          68m   asm-1198-2
    istiod-asm-1204-0-67998f4b55-r76kr           1/1     Running   0          68m   asm-1198-2
    istiod-1198-2-1-5cd96f88f6-n7tj9    1/1     Running   0          27s   asm-1204-0
    istiod-1198-2-1-5cd96f88f6-wm68b    1/1     Running   0          27s   asm-1204-0
    1. Dalam output, di bawah kolom REV, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalah asm-1204-0.

    2. Selain itu, perhatikan nilai dalam label revisi untuk istiod versi lama. Anda memerlukan tindakan ini untuk menghapus versi lama istiod setelah selesai memindahkan beban kerja ke versi baru. Dalam contoh output, nilai label revisi untuk versi lama adalah asm-1198-2.

  2. Tambahkan label revisi ke namespace aplikasi dan hapus label istio-injection (jika ada). Dalam perintah berikut, ubah REVISION menjadi nilai yang cocok dengan revisi baru istiod.

    kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite

    Jika melihat "istio-injection not found" pada output, Anda dapat mengabaikannya. Artinya, namespace sebelumnya tidak memiliki label istio-injection. Karena perilaku injeksi otomatis tidak ditentukan jika namespace memiliki istio-injection dan label revisi, semua perintah kubectl label dalam dokumentasi Anthos Service Mesh secara eksplisit memastikan bahwa hanya satu yang ditetapkan.

  3. Mulai ulang Pod untuk memicu injeksi ulang.

    kubectl rollout restart deployment -n NAMESPACE
  4. Uji aplikasi Anda untuk memverifikasi bahwa beban kerja berfungsi dengan benar.

  5. Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah untuk memberi label namespace dan memulai ulang Pod.

  6. Jika Anda yakin aplikasi Anda berfungsi seperti yang diharapkan, lanjutkan dengan langkah-langkah untuk bertransisi ke istiod versi baru. Jika ada masalah dengan aplikasi Anda, ikuti langkah-langkah untuk melakukan rollback.

    Selesaikan transisi

    Jika Anda puas karena aplikasi Anda berfungsi seperti yang diharapkan, hapus bidang kontrol lama untuk menyelesaikan transisi ke versi baru.

    1. Ubah ke direktori tempat file dari repositori GitHub anthos-service-mesh berada.

    2. Konfigurasikan webhook validasi untuk menggunakan bidang kontrol baru:

      kubectl apply -f asm/istio/istiod-service.yaml
      
    3. Pindahkan tag default:

      <OUTPUT_DIR>/istioctl tag set default --revision REVISION --overwrite
      
    4. Hapus versi lama istiod. Perintah yang Anda gunakan bergantung pada apakah Anda bermigrasi dari Istio atau mengupgrade dari Anthos Service Mesh versi sebelumnya.

      Migrasi

      Jika Anda bermigrasi dari Istio, istiod lama tidak memiliki label revisi:

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

      Upgrade

      1. Jika Anda telah mengupgrade dari versi Anthos Service Mesh sebelumnya, dalam perintah berikut, pastikan OLD_REVISION cocok dengan label revisi untuk istiod versi sebelumnya:

        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
        
      2. Hapus resource validatingwebhookconfiguration untuk revisi lama:

        kubectl delete validatingwebhookconfiguration istio-validator-OLD_REVISION-istio-system -n istio-system --ignore-not-found=true
        
    5. Hapus versi lama konfigurasi IstioOperator:

      kubectl delete IstioOperator installed-state-OLD_REVISION -n istio-system --ignore-not-found=true
      

      Output yang diharapkan mirip dengan berikut ini:

      istiooperator.install.istio.io "installed-state-OLD_REVISION" deleted

    Rollback

    Jika Anda mengalami masalah saat menguji aplikasi dengan istiod versi baru, ikuti langkah-langkah berikut untuk melakukan rollback ke versi sebelumnya:

    1. Beri label ulang namespace Anda untuk mengaktifkan injeksi otomatis dengan versi istiod sebelumnya. Perintah yang digunakan bergantung pada apakah Anda menggunakan label revisi atau istio-injection=enabled dengan versi sebelumnya.

      • Jika Anda menggunakan label revisi untuk injeksi otomatis:

        kubectl label namespace NAMESPACE istio.io/rev=OLD_REVISION --overwrite
        
      • Jika Anda menggunakan istio-injection=enabled:

        kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
        

      Output yang diharapkan:

      namespace/NAMESPACE labeled
    2. Pastikan label revisi pada namespace cocok dengan label revisi pada istiod versi sebelumnya:

      kubectl get ns NAMESPACE --show-labels
      
    3. Mulai ulang Pod untuk memicu injeksi ulang sehingga proxy memiliki versi sebelumnya:

      kubectl rollout restart deployment -n NAMESPACE
      
    4. Hapus versi baru istiod. Pastikan nilai REVISION dalam perintah berikut sudah benar.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION -n istio-system --ignore-not-found=true
      
    5. Hapus versi baru konfigurasi IstioOperator.

      kubectl delete IstioOperator installed-state-REVISION -n istio-system --ignore-not-found=true
      

      Output yang diharapkan mirip dengan berikut ini:

      istiooperator.install.istio.io "installed-state-REVISION" deleted
    6. Jika Anda tidak menyertakan tanda --disable_canonical_service, asmcli akan mengaktifkan pengontrol Layanan Kanonis. Sebaiknya Anda membiarkannya aktif, tetapi jika Anda perlu menonaktifkannya, lihat Mengaktifkan dan menonaktifkan pengontrol Layanan Kanonis.

    7. Jika gateway Anda di-deploy, pastikan untuk mengubah label revisi pada namespace atau deployment agar sesuai dengan versi istiod sebelumnya. Ikuti proses yang sama yang diuraikan di bagian Pembaruan Di Tempat di panduan Gateway penginstalan dan upgrade.

Men-deploy dan men-deploy ulang workload

Penginstalan (atau upgrade) belum selesai sampai Anda mengaktifkan injeksi proxy file bantuan otomatis (injeksi otomatis). Migrasi dari Istio dan upgrade OSS mengikuti proses upgrade berbasis revisi (disebut sebagai "upgrade canary" dalam dokumentasi Istio). Dengan upgrade berbasis revisi, versi baru bidang kontrol diinstal bersama bidang kontrol yang ada. Kemudian, Anda memindahkan beberapa beban kerja ke versi baru, yang memungkinkan Anda memantau efek upgrade dengan sebagian kecil beban kerja sebelum memigrasikan semua traffic ke versi baru.

Skrip ini menetapkan label revisi dalam format istio.io/rev=asm-1204-0 pada istiod. Untuk mengaktifkan injeksi otomatis, tambahkan label revisi yang cocok ke namespace Anda. Label revisi digunakan oleh webhook injektor file bantuan untuk mengaitkan file bantuan yang diinjeksikan dengan revisi istiod tertentu. Setelah menambahkan label, mulai ulang Pod di namespace untuk file bantuan yang akan dimasukkan.

  1. Dapatkan label revisi yang ada di istiod dan istio-ingressgateway.

    kubectl get pod -n istio-system -L istio.io/rev
    

    Output dari perintah ini mirip dengan berikut ini.

    NAME                                                READY   STATUS    RESTARTS   AGE   REV
    istio-ingressgateway-65d884685d-6hrdk               1/1     Running   0          67m
    istio-ingressgateway-65d884685d-94wgz               1/1     Running   0          67m
    istio-ingressgateway-asm-182-2-8b5fc8767-gk6hb      1/1     Running   0          5s    asm-1204-0
    istio-ingressgateway-asm-182-2-8b5fc8767-hn4w2      1/1     Running   0          20s   asm-1204-0
    istiod-asm-1204-0-67998f4b55-lrzpz          1/1     Running   0          68m   asm-1198-2
    istiod-asm-1204-0-67998f4b55-r76kr          1/1     Running   0          68m   asm-1198-2
    istiod-asm-1198-2-5cd96f88f6-n7tj9 1/1     Running   0          27s   asm-1204-0
    istiod-asm-1198-2-5cd96f88f6-wm68b 1/1     Running   0          27s   asm-1204-0
    1. Dalam output, di bawah kolom REV, catat nilai label revisi untuk versi baru. Dalam contoh ini, nilainya adalah asm-1204-0.

    2. Selain itu, perhatikan nilai dalam label revisi untuk istiod versi lama. Anda memerlukan tindakan ini untuk menghapus versi lama istiod setelah selesai memindahkan beban kerja ke versi baru. Dalam contoh output, nilai label revisi untuk versi lama adalah asm-1198-2.

  2. Alihkan istio-ingressgateway ke revisi baru. Pada perintah berikut, ubah REVISION ke nilai yang cocok dengan label revisi versi baru.

    kubectl patch service -n istio-system istio-ingressgateway --type='json' -p='[{"op": "replace", "path": "/spec/selector/service.istio.io~1canonical-revision", "value": "REVISION"}]'

    Output yang diharapkan: service/istio-ingressgateway patched

  3. Tambahkan label revisi ke namespace dan hapus label istio-injection (jika ada). Dalam perintah berikut, ubah REVISION menjadi nilai yang cocok dengan revisi baru istiod.

    kubectl label namespace NAMESPACE istio.io/rev=REVISION istio-injection- --overwrite

    Jika melihat "istio-injection not found" pada output, Anda dapat mengabaikannya. Artinya, namespace sebelumnya tidak memiliki label istio-injection. Karena perilaku injeksi otomatis tidak ditentukan jika namespace memiliki istio-injection dan label revisi, semua perintah kubectl label dalam dokumentasi Anthos Service Mesh secara eksplisit memastikan bahwa hanya satu yang ditetapkan.

  4. Mulai ulang Pod untuk memicu injeksi ulang.

    kubectl rollout restart deployment -n NAMESPACE
  5. Uji aplikasi Anda untuk memverifikasi bahwa beban kerja berfungsi dengan benar.

  6. Jika Anda memiliki workload di namespace lain, ulangi langkah-langkah untuk memberi label namespace dan memulai ulang Pod.

  7. Jika Anda yakin aplikasi Anda berfungsi seperti yang diharapkan, lanjutkan dengan langkah-langkah untuk bertransisi ke istiod versi baru. Jika ada masalah dengan aplikasi Anda, ikuti langkah-langkah untuk melakukan rollback.

    Selesaikan transisi

    Jika Anda puas karena aplikasi Anda berfungsi seperti yang diharapkan, hapus bidang kontrol lama untuk menyelesaikan transisi ke versi baru.

    1. Ubah ke direktori tempat file dari repositori GitHub anthos-service-mesh berada.

    2. Konfigurasikan webhook validasi untuk menggunakan bidang kontrol baru.

      kubectl apply -f asm/istio/istiod-service.yaml
      
    3. Pindahkan tag default.

      <OUTPUT_DIR>/istioctl tag set default --revision <NEW REVISION NAME> --overwrite
      
    4. Hapus istio-ingressgatewayDeployment lama. Perintah yang Anda jalankan bergantung pada apakah Anda bermigrasi dari Istio atau mengupgrade dari Anthos Service Mesh versi sebelumnya:

      Migrasi

      Jika Anda bermigrasi dari Istio, istio-ingressgateway lama tidak memiliki label revisi.

      kubectl delete deploy/istio-ingressgateway -n istio-system
      

      Upgrade

      Jika Anda melakukan upgrade dari versi Anthos Service Mesh sebelumnya, pada perintah berikut, ganti OLD_REVISION dengan label revisi untuk istio-ingressgateway versi sebelumnya.

      kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=OLD_REVISION -n istio-system --ignore-not-found=true
      
    5. Hapus versi lama istiod. Perintah yang Anda gunakan bergantung pada apakah Anda bermigrasi dari Istio atau mengupgrade dari Anthos Service Mesh versi sebelumnya.

      Migrasi

      Jika Anda bermigrasi dari Istio, istio-ingressgateway lama tidak memiliki label revisi.

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

      Upgrade

      Jika Anda telah mengupgrade dari versi Anthos Service Mesh sebelumnya, dalam perintah berikut, pastikan OLD_REVISION cocok dengan label revisi untuk istiod versi sebelumnya.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-OLD_REVISION -n istio-system --ignore-not-found=true
      
    6. Hapus versi lama konfigurasi IstioOperator.

      kubectl delete IstioOperator installed-state-OLD_REVISION -n istio-system --ignore-not-found=true
      

      Output yang diharapkan mirip dengan berikut ini:

      istiooperator.install.istio.io "installed-state-OLD_REVISION" deleted

    Rollback

    Jika Anda mengalami masalah saat menguji aplikasi dengan istiod versi baru, ikuti langkah-langkah berikut untuk melakukan rollback ke versi sebelumnya:

    1. Beri label ulang namespace Anda untuk mengaktifkan injeksi otomatis dengan versi istiod sebelumnya. Perintah yang digunakan bergantung pada apakah Anda menggunakan label revisi atau istio-injection=enabled dengan versi sebelumnya.

      • Jika Anda menggunakan label revisi untuk injeksi otomatis:

        kubectl label namespace NAMESPACE istio.io/rev=OLD_REVISION --overwrite
        
      • Jika Anda menggunakan istio-injection=enabled:

        kubectl label namespace NAMESPACE istio.io/rev- istio-injection=enabled --overwrite
        

      Output yang diharapkan:

      namespace/NAMESPACE labeled
    2. Pastikan label revisi pada namespace cocok dengan label revisi pada istiod versi sebelumnya:

      kubectl get ns NAMESPACE --show-labels
      
    3. Mulai ulang Pod untuk memicu injeksi ulang sehingga proxy memiliki versi sebelumnya:

      kubectl rollout restart deployment -n NAMESPACE
      
    4. Hapus Deployment istio-ingressgateway baru. Pastikan nilai REVISION dalam perintah berikut sudah benar.

      kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=REVISION -n istio-system --ignore-not-found=true
      
    5. Hapus versi baru istiod. Pastikan nilai REVISION dalam perintah berikut sudah benar.

      kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-REVISION -n istio-system --ignore-not-found=true
      
    6. Hapus versi baru konfigurasi IstioOperator.

      kubectl delete IstioOperator installed-state-REVISION -n istio-system --ignore-not-found=true
      

      Output yang diharapkan mirip dengan berikut ini:

      istiooperator.install.istio.io "installed-state-REVISION" deleted
    7. Jika Anda tidak menyertakan flag --disable_canonical_service, skrip akan mengaktifkan pengontrol Layanan Kanonis. Sebaiknya Anda membiarkannya aktif, tetapi jika Anda perlu menonaktifkannya, lihat Mengaktifkan dan menonaktifkan pengontrol Layanan Kanonis.