Menyediakan Cloud Service Mesh terkelola dengan asmcli

Ringkasan

Managed Cloud Service Mesh dengan asmcli adalah bidang kontrol terkelola dan bidang data terkelola yang dapat Anda konfigurasi dengan mudah. Google menangani keandalan, upgrade, penskalaan, dan keamanan bidang tersebut untuk Anda dengan cara yang kompatibel mundur. Panduan ini menjelaskan cara menyiapkan atau memigrasikan aplikasi ke Managed Cloud Service Mesh dalam konfigurasi cluster tunggal atau multi-cluster dengan asmcli.

Untuk mempelajari fitur dan batasan yang didukung dari Cloud Service Mesh terkelola, lihat Fitur yang didukung Cloud Service Mesh terkelola.

Prasyarat

Sebagai titik awal, panduan ini mengasumsikan bahwa Anda telah:

Persyaratan

  • Satu atau beberapa cluster dengan versi GKE yang didukung, di salah satu region yang didukung.
  • Perhatikan bahwa Managed Cloud Service Mesh menggunakan saluran rilis GKE untuk menyeimbangkan antara stabilitas dan kecepatan upgrade. Perubahan baru pada komponen dalam cluster Cloud Service Mesh (termasuk CNI, MDPC, proxy, dan CRD Istio) akan diluncurkan terlebih dahulu ke cluster yang berlangganan saluran cepat GKE. Kemudian, versi tersebut akan dipromosikan ke saluran reguler GKE, dan akhirnya ke saluran stabil GKE, setelah menunjukkan stabilitas yang memadai.
    • Praktik terbaiknya adalah menyediakan subset cluster armada Anda di saluran rilis GKE yang lebih awal untuk memastikan cluster tersebut menerima update pada komponen Cloud Service Mesh terlebih dahulu.
    • Managed Cloud Service Mesh tidak mendukung perubahan saluran rilis GKE.
    • Jika Anda mengubah saluran rilis GKE, Cloud Service Mesh tidak akan mencegah operasi tersebut. Cloud Service Mesh otomatis mengupdate komponen dalam cluster (CNI, MDPC, versi proxy yang disuntikkan default, dan CRD Istio) agar sesuai dengan saluran rilis GKE saat ini.
  • Pastikan cluster Anda memiliki kapasitas yang cukup untuk komponen yang diperlukan yang diinstal Cloud Service Mesh terkelola di cluster.
    • Deployment mdp-controller di namespace kube-system meminta cpu: 50m, memory: 128Mi.
    • Daemonset istio-cni-node di namespace kube-system meminta cpu: 100m, memory: 100Mi di setiap node.
  • Pastikan kebijakan organisasi constraints/compute.disableInternetNetworkEndpointGroup dinonaktifkan. Jika kebijakan diaktifkan, ServiceEntry mungkin tidak berfungsi.
  • Pastikan mesin klien tempat Anda menyediakan Cloud Service Mesh terkelola memiliki konektivitas jaringan ke server API.
  • Cluster Anda harus terdaftar ke fleet. Langkah ini dapat dilakukan secara terpisah sebelum penyediaan atau sebagai bagian dari penyediaan dengan meneruskan tanda --enable-registration dan --fleet-id.
  • Project Anda harus mengaktifkan fitur fleet Service Mesh. Anda dapat mengaktifkannya sebagai bagian dari penyediaan dengan meneruskan --enable-gcp-components, atau dengan menjalankan perintah berikut:

    gcloud container fleet mesh enable --project=FLEET_PROJECT_ID
    

    dengan FLEET_PROJECT_ID adalah project-id project host fleet.

  • GKE Autopilot hanya didukung dengan GKE versi 1.21.3+.

  • Cloud Service Mesh dapat menggunakan beberapa cluster GKE dalam lingkungan satu project satu jaringan atau lingkungan multi-project satu jaringan.

    • Jika Anda menggabungkan cluster yang tidak berada dalam project yang sama, cluster tersebut harus didaftarkan ke project host fleet yang sama, dan cluster harus berada dalam konfigurasi VPC bersama bersama di jaringan yang sama.
    • Untuk lingkungan multi-cluster project tunggal, project fleet dapat sama dengan project cluster. Untuk mengetahui informasi selengkapnya tentang fleet, lihat Ringkasan Fleet.
    • Untuk lingkungan multi-project, sebaiknya Anda menghosting fleet di project terpisah dari project cluster. Jika kebijakan organisasi dan konfigurasi yang ada mengizinkannya, sebaiknya gunakan project VPC bersama sebagai project host fleet. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan cluster dengan VPC Bersama.
    • Jika organisasi Anda menggunakan Kontrol Layanan VPC dan Anda menyediakan Cloud Service Mesh di cluster GKE dengan rilis yang lebih besar atau sama dengan 1.22.1-gke.10, Anda mungkin perlu melakukan langkah-langkah konfigurasi tambahan:
      • Jika Anda menyediakan Cloud Service Mesh di channel rilis reguler atau stabil , maka Anda harus menggunakan flag --use-vpcsc tambahan saat menerapkan control plane terkelola dan mengikuti panduan Kontrol Layanan VPC (pratinjau). Jika tidak, penyediaan akan gagal dalam kontrol keamanan.
      • Jika Anda menyediakan Cloud Service Mesh di rapid saluran rilis, maka Anda tidak perlu menggunakan flag --use-vpcsc tambahan saat menerapkan bidang kontrol terkelola, tetapi Anda harus mengikuti panduan Kontrol Layanan VPC (GA).

Peran yang diperlukan untuk menginstal Cloud Service Mesh

Tabel berikut menjelaskan peran yang diperlukan untuk menginstal Managed Cloud Service Mesh.

Nama peran ID Peran Berikan lokasi Deskripsi
GKE Hub Admin roles/gkehub.admin Project Fleet Akses penuh ke GKE Hubs dan resource terkait.
Service Usage Admin roles/serviceusage.serviceUsageAdmin Project Fleet Kemampuan untuk mengaktifkan, menonaktifkan, dan memeriksa status layanan, memeriksa operasi, serta menggunakan kuota dan penagihan untuk project konsumen. (Catatan 1)
CA Service Admin Beta roles/privateca.admin Project Fleet Akses penuh ke semua resource CA Service. (Catatan 2)

Peran yang diperlukan untuk menjalankan Cloud Service Mesh

Tabel berikut menjelaskan peran yang diperlukan oleh akun layanan untuk menjalankan Cloud Service Mesh terkelola. Jika project jaringan atau cluster Anda berbeda dengan project host fleet, Anda harus memberikan akses ke peran ini di project lain kepada akun layanan di project fleet.

Nama peran ID Peran Berikan lokasi Deskripsi
Anthos Service Mesh Service Agent roles/anthosservicemesh.serviceAgent Project Fleet
Mesh Managed Control Plane Service Agent (lama) roles/meshcontrolplane.serviceAgent Project Fleet Ini adalah peran lama yang merupakan bagian dari penginstalan Cloud Service Mesh yang lebih lama. Jika penginstalan Anda memiliki peran layanan ini, Anda dapat membiarkannya seperti apa adanya. Penginstalan baru tidak memerlukan peran ini.

Batasan

Sebaiknya tinjau daftar fitur dan batasan yang didukung Cloud Service Mesh. Khususnya, perhatikan hal berikut:

  • Untuk cluster Autopilot GKE, penyiapan lintas project hanya didukung dengan GKE 1.23 atau yang lebih baru.

  • Untuk cluster GKE Autopilot, agar dapat beradaptasi dengan batas resource GKE Autopilot, permintaan dan batas resource proxy default ditetapkan ke 500 m CPU dan 512 MB memori. Anda dapat mengganti nilai default menggunakan penyisipan kustom.

  • Untuk cluster GKE Autopilot, mungkin ada peringatan untuk komponen Cloud Service Mesh "DaemonSet tidak memiliki node yang dipilih" hingga NodePool cluster diskalakan.

  • Selama proses penyediaan untuk bidang kontrol terkelola, CRD Istio akan disediakan di cluster yang ditentukan. Jika ada CRD Istio yang sudah ada di cluster, CRD tersebut akan ditimpa.

  • Istio CNI dan Traffic Director tidak kompatibel dengan GKE Sandbox. Oleh karena itu, Cloud Service Mesh terkelola dengan penerapan TRAFFIC_DIRECTOR tidak mendukung cluster dengan GKE Sandbox yang diaktifkan.

  • Alat asmcli harus memiliki akses ke endpoint Google Kubernetes Engine (GKE). Anda dapat mengonfigurasi akses melalui server "jump", seperti VM Compute Engine dalam Virtual Private Cloud (VPC) yang memberikan akses tertentu.

Sebelum memulai

Mengonfigurasi gcloud

Selesaikan langkah-langkah berikut meskipun Anda menggunakan Cloud Shell.

  1. Lakukan autentikasi dengan Google Cloud CLI:

    gcloud auth login --project PROJECT_ID
    

    dengan PROJECT_ID adalah ID unik project cluster Anda. Jalankan perintah berikut untuk mendapatkan PROJECT_ID Anda:

       gcloud projects list --filter="<PROJECT ID>" --format="value(PROJECT_NUMBER)"
       ```
    
  2. Perbarui komponen:

    gcloud components update
    
  3. Konfigurasi kubectl untuk mengarah ke cluster.

    gcloud container clusters get-credentials CLUSTER_NAME \
         --zone CLUSTER_LOCATION \
         --project PROJECT_ID
    

Download alat penginstalan

  1. Download versi terbaru alat ke direktori kerja saat ini:

    curl https://storage.googleapis.com/csm-artifacts/asm/asmcli > asmcli
    
  2. Buat alat dapat dieksekusi:

    chmod +x asmcli
    

Mengonfigurasi setiap cluster

Gunakan langkah-langkah berikut untuk mengonfigurasi Cloud Service Mesh terkelola untuk setiap cluster di mesh Anda.

Menerapkan bidang kontrol terkelola

Sebelum menerapkan bidang kontrol terkelola, Anda harus memilih saluran rilis. Saluran Cloud Service Mesh Anda ditentukan oleh saluran cluster GKE Anda pada saat penyediaan Cloud Service Mesh terkelola. Perhatikan bahwa beberapa channel dalam cluster yang sama pada waktu yang sama tidak didukung.

Jalankan alat penginstalan untuk setiap cluster yang akan menggunakan Managed Cloud Service Mesh. Sebaiknya sertakan kedua opsi berikut:

  • --enable-registration --fleet_id FLEET_PROJECT_ID Kedua flag ini mendaftarkan cluster ke fleet, dengan FLEET_ID adalah project-id project host fleet. Jika menggunakan project tunggal, FLEET_PROJECT_ID sama dengan PROJECT_ID, project host fleet dan project cluster sama. Dalam konfigurasi yang lebih kompleks seperti multi-project, sebaiknya gunakan project host fleet terpisah.

  • --enable-all. Flag ini mengaktifkan komponen dan pendaftaran yang diperlukan.

Alat asmcli mengonfigurasi bidang kontrol terkelola secara langsung menggunakan alat dan logika di dalam alat CLI. Gunakan kumpulan petunjuk di bawah, bergantung pada CA pilihan Anda.

Otoritas Sertifikat

Pilih Certificate Authority yang akan digunakan untuk mesh Anda.

Mesh CA

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

  ./asmcli install \
      -p PROJECT_ID \
      -l LOCATION \
      -n CLUSTER_NAME \
      --fleet_id FLEET_PROJECT_ID \
      --managed \
      --verbose \
      --output_dir DIR_PATH \
      --enable-all

CA Service

  1. Ikuti langkah-langkah di Mengonfigurasi Certificate Authority Service.
  2. Jalankan perintah berikut untuk menginstal bidang kontrol dengan fitur default dan Certificate Authority Service. Masukkan nilai Anda di placeholder yang disediakan.
  ./asmcli install \
      -p PROJECT_ID \
      -l LOCATION \
      -n CLUSTER_NAME \
      --fleet_id FLEET_PROJECT_ID \
      --managed \
      --verbose \
      --output_dir DIR_PATH \
      --enable-all \
      --ca gcp_cas \
      --ca_pool pool_name

Alat ini mendownload semua file untuk mengonfigurasi managed control plane ke --output_dir yang ditentukan, menginstal alat istioctl dan aplikasi contoh. Langkah-langkah dalam panduan ini mengasumsikan bahwa Anda menjalankan istioctl dari lokasi --output_dir yang Anda tentukan saat menjalankan asmcli install, dengan istioctl yang ada di subdirektori <Istio release dir>/bin-nya.

Jika Anda menjalankan ulang asmcli di cluster yang sama, konfigurasi bidang kontrol yang ada akan digantikan. Pastikan untuk menentukan opsi dan flag yang sama jika Anda menginginkan konfigurasi yang sama.

Pastikan bidang kontrol telah disediakan

Setelah beberapa menit, verifikasi bahwa status bidang kontrol adalah ACTIVE:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

Outputnya mirip dengan:

membershipStates:
  projects/746296320118/locations/us-central1/memberships/demo-cluster-1:
    servicemesh:
      controlPlaneManagement:
        details:
        - code: REVISION_READY
          details: 'Ready: asm-managed'
        state: ACTIVE
      ...
    state:
      code: OK
      description: 'Revision(s) ready for use: asm-managed.'

Jika status tidak mencapai ACTIVE` dalam beberapa menit, lihat Periksa status bidang kontrol terkelola untuk mengetahui informasi selengkapnya tentang kemungkinan error.

Upgrade zero-touch

Setelah bidang kontrol terkelola diinstal, Google akan otomatis mengupgradenya saat rilis atau patch baru tersedia.

Bidang data terkelola

Jika Anda menggunakan Cloud Service Mesh terkelola, Google akan mengelola sepenuhnya upgrade proxy Anda.

Dengan mengaktifkan fitur bidang data terkelola, proxy sidecar dan gateway yang disuntikkan akan diupdate secara aktif dan otomatis bersama dengan bidang kontrol terkelola dengan memulai ulang beban kerja untuk menyuntikkan kembali versi baru proxy. Proses ini dimulai setelah bidang kontrol diupgrade dan biasanya selesai dalam waktu 2 minggu setelah dimulai.

Jika dinonaktifkan, pengelolaan proxy dilakukan secara pasif - didorong oleh siklus proses alami pod dalam cluster dan harus dipicu secara manual oleh pengguna untuk mengontrol kecepatan update.

Managed data plane mengupgrade proxy dengan mengeluarkan pod yang menjalankan proxy versi sebelumnya. Pengusiran dilakukan secara bertahap, dengan mempertimbangkan anggaran gangguan pod dan mengontrol kecepatan perubahan.

Untuk mengetahui informasi selengkapnya, lihat Bidang data terkelola.

Mengonfigurasi penemuan endpoint (hanya untuk penginstalan multi-cluster)

Jika mesh Anda hanya memiliki satu cluster, lewati langkah-langkah multi-cluster ini dan lanjutkan ke Deploy aplikasi atau Migrasikan aplikasi.

Sebelum melanjutkan, pastikan Cloud Service Mesh dikonfigurasi di setiap cluster.

Cluster publik

Mengonfigurasi penemuan endpoint antar-cluster publik

Jika Anda beroperasi di cluster publik (cluster non-pribadi), Anda dapat Mengonfigurasi penemuan endpoint antar-cluster publik atau lebih sederhana Mengaktifkan penemuan endpoint antar-cluster publik.

Cluster pribadi

Mengonfigurasi penemuan endpoint antar-cluster pribadi

Saat menggunakan cluster pribadi GKE, Anda harus mengonfigurasi endpoint bidang kontrol cluster menjadi endpoint publik, bukan endpoint pribadi. Lihat Mengonfigurasi penemuan endpoint antara cluster pribadi.

Untuk contoh aplikasi dengan dua cluster, lihat Contoh layanan HelloWorld.

Men-deploy aplikasi

Aktifkan namespace untuk injeksi. Langkah-langkahnya bergantung pada penerapan bidang kontrol Anda.

Terkelola (TD)

  1. Terapkan label injeksi default ke namespace:
kubectl label namespace NAMESPACE \
    istio.io/rev- istio-injection=enabled --overwrite

Dikelola (Istiod)

Direkomendasikan: Jalankan perintah berikut untuk menerapkan label injeksi default ke namespace:

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

Jika Anda adalah pengguna lama dengan bidang kontrol Managed Istiod: Sebaiknya gunakan injeksi default, tetapi injeksi berbasis revisi didukung. Gunakan petunjuk berikut:

  1. Jalankan perintah berikut untuk menemukan saluran rilis yang tersedia:

    kubectl -n istio-system get controlplanerevision
    

    Outputnya mirip dengan hal berikut ini:

    NAME                AGE
    asm-managed-rapid   6d7h
    

    CATATAN: Jika dua revisi bidang kontrol muncul dalam daftar di atas, hapus salah satunya. Memiliki beberapa saluran bidang kontrol di cluster tidak didukung.

    Dalam output, nilai di kolom NAME adalah label revisi yang sesuai dengan saluran rilis yang tersedia untuk versi Cloud Service Mesh.

  2. Terapkan label revisi ke namespace:

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

Validasi bahwa label namespace diterapkan dengan benar menggunakan perintah berikut.

  kubectl get namespace -L istio-injection

Contoh output:

  NAME                 STATUS   AGE     ISTIO-INJECTION
  default              Active   5m9s    enabled

Pada tahap ini, Anda telah berhasil mengonfigurasi Cloud Service Mesh terkelola. Jika Anda memiliki workload yang ada di namespace berlabel, mulai ulang workload tersebut agar proxy disuntikkan.

Jika Anda men-deploy aplikasi dalam penyiapan multi-cluster, replikasi konfigurasi Kubernetes dan bidang kontrol di semua cluster, kecuali jika Anda berencana membatasi konfigurasi tertentu tersebut ke subset cluster. Konfigurasi yang diterapkan ke cluster tertentu adalah sumber tepercaya untuk cluster tersebut.

Sesuaikan penyisipan (opsional)

Anda dapat mengganti nilai default dan menyesuaikan setelan injeksi, tetapi hal ini dapat menyebabkan error konfigurasi yang tidak terduga dan masalah yang dihasilkan dengan penampung sidecar. Sebelum menyesuaikan injeksi, baca informasi setelah contoh untuk mengetahui catatan tentang setelan dan rekomendasi tertentu.

Konfigurasi per-pod tersedia untuk mengganti opsi ini di setiap pod. Hal ini dilakukan dengan menambahkan penampung istio-proxy ke pod Anda. Penyisipan sidecar akan memperlakukan konfigurasi apa pun yang ditentukan di sini sebagai pengganti template penyisipan default.

Misalnya, konfigurasi berikut menyesuaikan berbagai setelan, termasuk menurunkan permintaan CPU, menambahkan pemasangan volume, dan menambahkan hook preStop:

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
  - name: hello
    image: alpine
  - name: istio-proxy
    image: auto
    resources:
      requests:
        cpu: "200m"
        memory: "256Mi"
      limits:
        cpu: "200m"
        memory: "256Mi"
    volumeMounts:
    - mountPath: /etc/certs
      name: certs
    lifecycle:
      preStop:
        exec:
          command: ["sleep", "10"]
  volumes:
  - name: certs
    secret:
      secretName: istio-certs

Secara umum, kolom apa pun dalam pod dapat disetel. Namun, Anda harus berhati-hati saat mengisi kolom tertentu:

  • Kubernetes mengharuskan kolom image ditetapkan sebelum injeksi dijalankan. Meskipun Anda dapat menyetel gambar tertentu untuk menggantikan gambar default, sebaiknya Anda menyetel image ke auto, yang akan menyebabkan injector sidecar memilih gambar yang akan digunakan secara otomatis.
  • Beberapa kolom di containers bergantung pada setelan terkait. Misalnya, harus kurang dari atau sama dengan batas CPU. Jika kedua kolom tidak dikonfigurasi dengan benar, pod mungkin gagal dimulai.
  • Kubernetes dapat Anda gunakan untuk menetapkan requests dan limits untuk resource di Pod spec. GKE Autopilot hanya mempertimbangkan requests. Untuk mengetahui informasi selengkapnya, lihat Menetapkan batas resource di Autopilot.

Selain itu, kolom tertentu dapat dikonfigurasi dengan anotasi di Pod, meskipun sebaiknya gunakan pendekatan di atas untuk menyesuaikan setelan. Berikan perhatian tambahan untuk anotasi berikut:

  • Untuk GKE Standard, jika sidecar.istio.io/proxyCPU ditetapkan, pastikan untuk menetapkan sidecar.istio.io/proxyCPULimit secara eksplisit. Jika tidak, batas CPU sidecar akan ditetapkan sebagai tidak terbatas.
  • Untuk GKE Standard, jika sidecar.istio.io/proxyMemory ditetapkan, pastikan untuk menetapkan sidecar.istio.io/proxyMemoryLimit secara eksplisit. Jika tidak, batas memori sidecar akan ditetapkan sebagai tidak terbatas.
  • Untuk GKE Autopilot, mengonfigurasi resource requests dan limits menggunakan anotasi dapat menyebabkan penyediaan resource yang berlebihan. Gunakan pendekatan template gambar untuk menghindari hal ini. Lihat Contoh modifikasi resource di Autopilot.

Misalnya, lihat anotasi sumber di bawah ini:

spec:
  template:
    metadata:
      annotations:
        sidecar.istio.io/proxyCPU: "200m"
        sidecar.istio.io/proxyCPULimit: "200m"
        sidecar.istio.io/proxyMemory: "256Mi"
        sidecar.istio.io/proxyMemoryLimit: "256Mi"

Memverifikasi metrik bidang kontrol

Anda dapat melihat versi bidang kontrol dan bidang data di Metrics Explorer.

Untuk memverifikasi bahwa konfigurasi Anda berfungsi seperti yang diharapkan:

  1. Di konsol Google Cloud , lihat metrik bidang kontrol:

    Buka Metrics Explorer

  2. Pilih ruang kerja Anda dan tambahkan kueri kustom menggunakan parameter berikut:

    • Jenis resource: Kubernetes Container
    • Metrik: Klien Proxy
    • Filter: container_name="cr-REVISION_LABEL"
    • Kelompokkan Berdasarkan: Label revision dan label proxy_version
    • Aggregator: sum
    • Periode: 1 menit

    Saat menjalankan Cloud Service Mesh dengan bidang kontrol yang dikelola Google dan dalam cluster, Anda dapat membedakan metrik berdasarkan nama container-nya. Misalnya, metrik terkelola memiliki container_name="cr-asm-managed", sedangkan metrik tidak terkelola memiliki container_name="discovery". Untuk menampilkan metrik dari keduanya, hapus Filter di container_name="cr-asm-managed".

  3. Verifikasi versi bidang kontrol dan versi proxy dengan memeriksa kolom berikut di Metrics Explorer:

    • Kolom revision menunjukkan versi bidang kontrol.
    • Kolom proxy_version menunjukkan proxy_version.
    • Kolom value menunjukkan jumlah proxy yang terhubung.

    Untuk pemetaan versi Cloud Service Mesh ke saluran saat ini, lihat Versi Cloud Service Mesh per saluran.

Memigrasikan aplikasi ke Cloud Service Mesh terkelola

Mempersiapkan untuk migrasi

Untuk bersiap memigrasikan aplikasi dari Cloud Service Mesh dalam cluster ke Cloud Service Mesh terkelola, lakukan langkah-langkah berikut:

  1. Jalankan alat seperti yang ditunjukkan di bagian Terapkan bidang kontrol yang dikelola Google.

  2. (Opsional) Jika Anda ingin menggunakan bidang data yang dikelola Google, aktifkan pengelolaan bidang data:

      kubectl annotate --overwrite controlplanerevision REVISION_TAG \
      mesh.cloud.google.com/proxy='{"managed":"true"}'
    

Memigrasikan aplikasi

Untuk memigrasikan aplikasi dari Cloud Service Mesh dalam cluster ke Cloud Service Mesh terkelola, lakukan langkah-langkah berikut:

  1. Mengganti label namespace saat ini. Langkah-langkahnya bergantung pada penerapan bidang kontrol Anda.

Terkelola (TD)

  1. Terapkan label injeksi default ke namespace:
kubectl label namespace NAMESPACE \
    istio.io/rev- istio-injection=enabled --overwrite

Dikelola (Istiod)

Direkomendasikan: Jalankan perintah berikut untuk menerapkan label injeksi default ke namespace:

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

Jika Anda adalah pengguna lama dengan bidang kontrol Managed Istiod: Sebaiknya gunakan injeksi default, tetapi injeksi berbasis revisi didukung. Gunakan petunjuk berikut:

  1. Jalankan perintah berikut untuk menemukan saluran rilis yang tersedia:

    kubectl -n istio-system get controlplanerevision
    

    Outputnya mirip dengan hal berikut ini:

    NAME                AGE
    asm-managed-rapid   6d7h
    

    CATATAN: Jika dua revisi bidang kontrol muncul dalam daftar di atas, hapus salah satunya. Memiliki beberapa saluran bidang kontrol di cluster tidak didukung.

    Dalam output, nilai di kolom NAME adalah label revisi yang sesuai dengan saluran rilis yang tersedia untuk versi Cloud Service Mesh.

  2. Terapkan label revisi ke namespace:

    kubectl label namespace NAMESPACE \
        istio-injection- istio.io/rev=REVISION_LABEL --overwrite
    
  1. Lakukan upgrade berkelanjutan pada deployment di namespace:

    kubectl rollout restart deployment -n NAMESPACE
    
  2. Uji aplikasi Anda untuk memverifikasi bahwa workload berfungsi dengan benar.

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

  4. Jika Anda men-deploy aplikasi dalam penyiapan multi-cluster, replikasi konfigurasi Kubernetes dan Istio di semua cluster, kecuali jika Anda ingin membatasi konfigurasi tersebut hanya pada sebagian cluster. Konfigurasi yang diterapkan ke cluster tertentu adalah sumber tepercaya untuk cluster tersebut.

Jika Anda yakin bahwa aplikasi Anda berfungsi seperti yang diharapkan, Anda dapat menghapus istiod dalam cluster setelah mengalihkan semua namespace ke bidang kontrol terkelola, atau menyimpannya sebagai cadangan - istiod akan otomatis diskalakan ke bawah untuk menggunakan lebih sedikit resource. Untuk menghapus, lanjutkan ke Hapus bidang kontrol lama.

Jika mengalami masalah, Anda dapat mengidentifikasi dan menyelesaikannya dengan menggunakan informasi dalam Menyelesaikan masalah bidang kontrol terkelola dan jika perlu, melakukan roll back ke versi sebelumnya.

Hapus bidang kontrol lama

Setelah menginstal dan mengonfirmasi bahwa semua namespace menggunakan bidang kontrol yang dikelola Google, Anda dapat menghapus bidang kontrol lama.

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

Jika Anda menggunakan istioctl kube-inject, bukan injeksi otomatis, atau jika Anda menginstal gateway tambahan, periksa metrik untuk bidang kontrol, dan verifikasi bahwa jumlah endpoint yang terhubung adalah nol.

Roll back

Lakukan langkah-langkah berikut jika Anda perlu melakukan roll back ke versi bidang kontrol sebelumnya:

  1. Perbarui workload yang akan disuntikkan dengan versi bidang kontrol sebelumnya. Dalam perintah berikut, nilai revisi asm-191-1 hanya digunakan sebagai contoh. Ganti nilai contoh dengan label revisi bidang kontrol sebelumnya.

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=asm-191-1 --overwrite
    
  2. Mulai ulang Pod untuk memicu penyuntikan ulang sehingga proxy memiliki versi sebelumnya:

    kubectl rollout restart deployment -n NAMESPACE
    

Bidang kontrol terkelola akan otomatis diskalakan ke nol dan tidak menggunakan resource apa pun saat tidak digunakan. Webhook dan penyediaan yang mengubah akan tetap ada dan tidak memengaruhi perilaku cluster.

Gateway kini disetel ke revisi asm-managed. Untuk melakukan roll back, jalankan kembali perintah penginstalan Cloud Service Mesh, yang akan men-deploy ulang gateway yang mengarah kembali ke bidang kontrol dalam cluster Anda:

kubectl -n istio-system rollout undo deploy istio-ingressgateway

Output ini akan muncul jika berhasil:

deployment.apps/istio-ingressgateway rolled back

Uninstal

Bidang kontrol terkelola akan diskalakan otomatis ke nol jika tidak ada namespace yang menggunakannya. Untuk langkah-langkah mendetail, lihat Menghapus instalasi Cloud Service Mesh.

Pemecahan masalah

Untuk mengidentifikasi dan mengatasi masalah saat menggunakan bidang kontrol terkelola, lihat Mengatasi masalah bidang kontrol terkelola.

Apa langkah selanjutnya?