Menyediakan Anthos Service Mesh terkelola

Anthos Service Mesh Terkelola adalah mesh layanan yang dikelola Google yang hanya perlu Anda aktifkan. Google menangani keandalan, upgrade, penskalaan, dan keamanan untuk Anda dengan cara yang kompatibel dengan versi lama.

Halaman ini menunjukkan cara menggunakan API fitur fleet untuk menyiapkan Anthos Service Mesh terkelola.

Saat Anda mengaktifkan Anthos Service Mesh terkelola menggunakan fleet API:

  • Google menerapkan konfigurasi bidang kontrol yang direkomendasikan
  • Google mengaktifkan pengelolaan bidang data otomatis
  • Cluster Anda terdaftar di saluran rilis Anthos Service Mesh berdasarkan saluran rilis cluster Google Kubernetes Engine (GKE), dan bidang kontrol serta bidang data Anda akan terus diupdate dengan setiap rilis baru.
  • Google mengaktifkan penemuan endpoint dan load balancing lintas cluster di seluruh mesh layanan Anda dengan setelan default, meskipun Anda harus membuat aturan firewall.

Gunakan jalur orientasi ini jika Anda ingin:

  • Untuk menggunakan gcloud guna mengonfigurasi Anthos Service Mesh terkelola menggunakan Google Cloud API dan IAM.
  • Untuk mengonfigurasi Anthos Service Mesh menggunakan API yang sama dengan fitur fleet lainnya.
  • Untuk mendapatkan konfigurasi Anthos Service Mesh yang direkomendasikan secara otomatis bagi setiap cluster Anda.

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.
  • Pastikan cluster Anda memiliki kapasitas yang cukup untuk komponen wajib yang mengelola penginstalan Anthos Service Mesh di cluster.
    • Deployment mdp-controller dalam namespace kube-system meminta CPU: 50m, memori: 128Mi.
    • Daemonset istio-cni-node dalam namespace kube-system meminta cpu: 100 m, memori: 100Mi pada setiap node.
  • Pastikan komputer klien tempat Anda menyediakan Anthos Service Mesh terkelola memiliki konektivitas jaringan ke server API.
  • Cluster Anda harus didaftarkan ke fleet. Hal ini disertakan dalam petunjuk, atau dapat dilakukan secara terpisah sebelum disediakan.
  • Project Anda harus mengaktifkan fitur fleet Service Mesh. Hal ini disertakan dalam petunjuk atau dapat dilakukan secara terpisah.
  • GKE Autopilot hanya didukung dengan GKE versi 1.21.3+.

  • Istio CNI diperlukan dan diinstal secara default saat menyediakan Anthos Service Mesh terkelola.

  • Anthos Service Mesh terkelola dapat menggunakan beberapa cluster GKE dalam lingkungan jaringan tunggal project atau lingkungan jaringan tunggal multi-project.

    • Jika Anda bergabung dengan 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 bisa sama dengan project cluster. Untuk mengetahui informasi selengkapnya tentang fleet, lihat Ringkasan Armada.
    • Untuk lingkungan multi-project, sebaiknya Anda menghosting fleet dalam project yang terpisah dari project cluster. Jika kebijakan organisasi dan konfigurasi yang ada memungkinkan hal tersebut, 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 Anthos Service Mesh terkelola di cluster GKE, Anda juga harus mengikuti langkah-langkah di Kontrol Layanan VPC untuk Anthos Service Mesh.

Batasan

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

  • IstioOperator API tidak didukung karena tujuan utamanya adalah untuk mengontrol komponen dalam cluster.

  • Mengaktifkan Anthos Service Mesh terkelola dengan fleet API akan menggunakan Mesh CA. Jika deployment mesh layanan Anda melibatkan workload yang teregulasi atau memerlukan Certificate Authority Service (CA Service), ikuti Penyediaan Anthos Service Mesh terkelola menggunakan asmcli.

  • Migrasi dari Anthos Service Mesh terkelola dengan asmcli ke Anthos Service Mesh dengan fleet API tidak didukung. Demikian pula, mengonfigurasi Anthos Service Mesh terkelola dengan fleet API dari --management manual ke --management automatic tidak didukung.

  • Untuk cluster GKE Autopilot, 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 memori 512 Mb. Anda dapat mengganti nilai default ini menggunakan injeksi kustom.

  • Fitur sebenarnya yang tersedia untuk Anthos Service Mesh terkelola bergantung pada saluran rilis. Untuk mengetahui informasi selengkapnya, tinjau daftar lengkap fitur dan batasan yang didukung Anthos Service Mesh terkelola.

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

  • Istio CNI tidak kompatibel dengan GKE Sandbox. Oleh karena itu, Anthos Service Mesh terkelola di Autopilot, tidak berfungsi dengan GKE Sandbox karena Istio CNI terkelola diperlukan.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Konfigurasikan gcloud (meskipun Anda menggunakan Cloud Shell).
    1. Lakukan autentikasi dengan Google Cloud CLI, dengan FLEET_PROJECT_ID sebagai ID project Fleet Host Anda. Umumnya, FLEET_PROJECT_ID dibuat secara default dan memiliki nama yang sama dengan project.

             gcloud auth login --project FLEET_PROJECT_ID
      

    2. Update komponen:

             gcloud components update
      

  7. Aktifkan API yang diperlukan di project host fleet Anda.

      gcloud services enable mesh.googleapis.com \
          --project=FLEET_PROJECT_ID
    

Mengaktifkan mesh.googleapis.com akan mengaktifkan API berikut:

API Tujuan Dapat Dinonaktifkan
meshconfig.googleapis.com Anthos Service Mesh menggunakan Mesh Configuration API untuk menyampaikan data konfigurasi dari mesh Anda ke Google Cloud. Selain itu, dengan mengaktifkan Mesh Configuration API, Anda dapat mengakses halaman Anthos Service Mesh di Konsol Google Cloud dan menggunakan certificate authority (Mesh CA) Anthos Service Mesh. Tidak
meshca.googleapis.com Terkait dengan certificate authority Anthos Service Mesh yang digunakan oleh Anthos Service Mesh terkelola. Tidak
container.googleapis.com Diperlukan untuk membuat cluster Google Kubernetes Engine (GKE). Tidak
gkehub.googleapis.com Diperlukan untuk mengelola mesh sebagai fleet. Tidak
monitoring.googleapis.com Diperlukan guna mengambil telemetri untuk workload mesh. Tidak
stackdriver.googleapis.com Diperlukan untuk menggunakan UI Layanan. Tidak
opsconfigmonitoring.googleapis.com Diperlukan untuk menggunakan UI Layanan untuk cluster di luar Google Cloud. Tidak
connectgateway.googleapis.com Diperlukan agar bidang kontrol Anthos Service Mesh terkelola dapat mengakses workload mesh. Ya*
trafficdirector.googleapis.com Mengaktifkan bidang kontrol terkelola yang sangat tersedia dan skalabel. Ya*
networkservices.googleapis.com Mengaktifkan bidang kontrol terkelola yang sangat tersedia dan skalabel. Ya*
networksecurity.googleapis.com Mengaktifkan bidang kontrol terkelola yang sangat tersedia dan skalabel. Ya*

Mengonfigurasi Anthos Service Mesh terkelola

Langkah-langkah yang diperlukan untuk menyediakan Anthos Service Mesh terkelola menggunakan fleet API bergantung pada apakah Anda memilih untuk mengaktifkannya secara default untuk cluster fleet baru atau mengaktifkannya per cluster.

Konfigurasi untuk perangkat Anda

Jika telah mengaktifkan edisi Google Kubernetes Engine (GKE) Enterprise, Anda dapat mengaktifkan Anthos Service Mesh terkelola sebagai konfigurasi default untuk fleet Anda. Artinya, setiap GKE baru di cluster Google Cloud yang terdaftar selama pembuatan cluster akan mengaktifkan Anthos Service Mesh terkelola di cluster tersebut. Anda dapat mengetahui informasi selengkapnya tentang konfigurasi default fleet di Mengelola fitur level fleet.

Guna mengaktifkan default tingkat fleet untuk Anthos Service Mesh terkelola, selesaikan langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman Feature Manager.

    Buka Feature Manager

  2. Di panel Service Mesh, klik Configure.

  3. Tinjau setelan yang diwarisi oleh semua cluster baru yang Anda buat di Konsol Google Cloud dan daftarkan ke fleet.

  4. Untuk menerapkan setelan ini, klik Konfigurasi.

  5. Pada dialog konfirmasi, klik Confirm.

  6. Opsional: Sinkronkan cluster yang ada ke setelan default:

    1. Pada daftar Clusters in the fleet, pilih cluster yang ingin Anda sinkronkan. Anda hanya dapat memilih cluster yang telah menginstal Anthos Service Mesh.
    2. Klik Sinkronkan ke setelan fleet, lalu klik Konfirmasi di dialog konfirmasi yang muncul. Operasi ini dapat memerlukan waktu beberapa menit hingga selesai.

gcloud

Untuk mengonfigurasi setelan default tingkat fleet menggunakan Google Cloud CLI, Anda harus menetapkan setelan berikut:

  • Setelan tingkat perangkat

    • Buat file mesh.yaml yang hanya berisi satu baris management: automatic:

      echo "management: automatic" > mesh.yaml
      
    • Aktifkan Anthos Service Mesh untuk fleet Anda:

      gcloud container fleet mesh enable --project FLEET_PROJECT_ID \
          --fleet-default-member-config mesh.yaml
      

      Jika melihat error berikut, Anda perlu mengaktifkan GKE Enterprise.

      ERROR: (gcloud.container.fleet.mesh.enable) FAILED_PRECONDITION: The
      [anthos.googleapis.com] service is required for this operation and is not
      enabled for the project [PROJECT_NUMBER]. Please use the Google Developers
      Console to enable it.: failed precondition
      
  • Setelan level cluster

    • Jika Anda sudah siap membuat cluster untuk digunakan dengan Anthos Service Mesh, buat dan daftarkan cluster dalam satu langkah dengan Google Cloud CLI untuk menggunakan konfigurasi default. Contoh:

      gcloud container clusters create-auto CLUSTER_NAME \
          --fleet-project FLEET_PROJECT_ID \
          --location=LOCATION
      

      Anda bisa mendapatkan nomor project untuk project fleet Anda dengan menjalankan perintah berikut:

      gcloud projects list --filter="FLEET_PROJECT_ID" --format="value(PROJECT_ID)"
      

      Flag --location adalah zona atau region komputasi (seperti us-central1-a atau us-central1) untuk cluster.

    • Jika project cluster Anda berbeda dengan project host fleet, Anda harus mengizinkan akun layanan Anthos Service Mesh dalam project fleet untuk mengakses project cluster, dan mengaktifkan API yang diperlukan di project cluster tersebut. Anda hanya perlu melakukan ini sekali untuk setiap project cluster.

      Beri akun layanan di project fleet izin 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
      

      Aktifkan Mesh API pada project cluster:

      gcloud services enable mesh.googleapis.com \
        --project=CLUSTER_PROJECT_ID
      

      Ganti CLUSTER_PROJECT_ID dengan ID unik project cluster Anda. Jika Anda membuat cluster dalam project yang sama dengan fleet Anda, CLUSTER_PROJECT_ID akan sama dengan FLEET_PROJECT_ID.

Lanjutkan ke Memverifikasi bidang kontrol telah disediakan.

Konfigurasi per cluster

Gunakan langkah-langkah berikut untuk mengonfigurasi Anthos Service Mesh terkelola untuk setiap cluster di mesh Anda secara terpisah.

Mengaktifkan fitur fleet Anthos Service Mesh

Aktifkan Anthos Service Mesh di project fleet. Perhatikan bahwa jika Anda berencana untuk mendaftarkan beberapa cluster, pengaktifan Anthos Service Mesh akan dilakukan di level fleet sehingga Anda hanya perlu menjalankan perintah ini sekali.

gcloud container fleet mesh enable --project FLEET_PROJECT_ID

Mendaftarkan cluster ke fleet

  1. Daftarkan cluster GKE menggunakan identitas workload fleet. Flag --location adalah zona atau region komputasi (seperti us-central1-a atau us-central1) untuk cluster.

    gcloud container clusters update CLUSTER_NAME \
      --location CLUSTER_LOCATION \
      --fleet-project FLEET_PROJECT_ID
    
  2. Pastikan cluster Anda terdaftar:

    gcloud container fleet memberships list --project FLEET_PROJECT_ID
    

    Contoh output:

    NAME                 EXTERNAL_ID                           LOCATION
    cluster-1            1d8e255d-2b55-4df9-8793-0435461a2cbc  us-central1
    

    Catat MEMBERSHIP_NAME, karena Anda akan membutuhkannya saat mengaktifkan pengelolaan otomatis.

  3. Jika project cluster Anda berbeda dengan project host fleet, Anda harus mengizinkan akun layanan Anthos Service Mesh dalam project fleet untuk mengakses project cluster, dan mengaktifkan API yang diperlukan pada project cluster. Anda hanya perlu melakukan ini sekali untuk setiap project cluster.

    Jika sebelumnya Anda menggunakan asmcli untuk mengonfigurasi Anthos Service Mesh terkelola untuk kombinasi project cluster dan fleet ini, perubahan ini telah diterapkan dan Anda tidak perlu menjalankan perintah berikut.

    Berikan izin kepada 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
    

    Aktifkan Mesh API pada project cluster:

    gcloud services enable mesh.googleapis.com \
      --project=CLUSTER_PROJECT_ID
    

Aktifkan pengelolaan otomatis

Jalankan perintah berikut untuk mengaktifkan pengelolaan otomatis:

  gcloud container fleet mesh update \
     --management automatic \
     --memberships MEMBERSHIP_NAME \
     --project FLEET_PROJECT_ID \
     --location MEMBERSHIP_LOCATION

dengan:

  • MEMBERSHIP_NAME adalah nama keanggotaan yang tercantum saat Anda memverifikasi bahwa cluster Anda terdaftar ke fleet.
  • MEMBERSHIP_LOCATION adalah lokasi langganan Anda (wilayah, atau global).

    Jika Anda baru saja membuat keanggotaan menggunakan perintah dalam panduan ini, keanggotaan ini harus menjadi region cluster Anda. Jika Anda memiliki cluster zona, gunakan region yang sesuai dengan zona cluster tersebut. Misalnya, jika Anda memiliki cluster zona di us-central1-c, gunakan nilai us-central1.

    Nilai ini mungkin global jika Anda mendaftar sebelum Mei 2023, atau jika Anda menentukan lokasi global saat mendaftarkan langganan. Anda dapat memeriksa lokasi langganan dengan gcloud container fleet memberships list --project FLEET_PROJECT_ID.

Memverifikasi bahwa 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:

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

Catat label revisi di kolom details, misalnya, asm-managed dalam output yang disediakan. Jika menggunakan label revisi, Anda harus menetapkan label ini sebelum Men-deploy aplikasi. Jika menggunakan label injeksi default, Anda tidak perlu menetapkan label ini.

Konfigurasi kubectl agar mengarah ke cluster

Bagian berikut melibatkan menjalankan perintah kubectl terhadap setiap cluster Anda. Sebelum melanjutkan ke bagian berikut, jalankan perintah berikut untuk setiap cluster guna mengonfigurasi kubectl agar mengarah ke cluster.

gcloud container clusters get-credentials CLUSTER_NAME \
      --location CLUSTER_LOCATION \
      --project CLUSTER_PROJECT_ID

Perhatikan bahwa gateway masuk tidak secara otomatis di-deploy dengan bidang kontrol. Dengan memisahkan deployment gateway masuk dan bidang kontrol, Anda dapat mengelola gateway di lingkungan produksi dengan lebih mudah. Jika cluster memerlukan gateway masuk atau gateway keluar, lihat Men-deploy gateway. Untuk mengaktifkan fitur opsional lainnya, lihat Mengaktifkan fitur opsional di Anthos Service Mesh terkelola.

Bidang data terkelola

Jika Anda menggunakan Anthos Service Mesh terkelola, Google akan mengelola sepenuhnya upgrade proxy Anda kecuali jika Anda menonaktifkannya di tingkat namespace, workload, atau revisi.

Dengan bidang data terkelola, proxy file bantuan dan gateway yang dimasukkan akan otomatis diupdate bersamaan dengan bidang kontrol terkelola dengan memulai ulang beban kerja untuk memasukkan ulang proxy versi baru. Proses ini biasanya selesai 1-2 minggu setelah bidang kontrol terkelola diupgrade.

Jika dinonaktifkan, pengelolaan proxy akan dijalankan oleh siklus proses alami pod di cluster dan harus dipicu secara manual oleh pengguna untuk mengontrol kecepatan update.

Bidang data terkelola mengupgrade proxy dengan mengeluarkan pod yang menjalankan versi proxy yang lebih lama. Penghapusan dilakukan secara bertahap, dengan memenuhi anggaran gangguan pod dan mengontrol laju perubahan.

Bidang data terkelola tidak mengelola hal berikut:

  • Pod yang tidak dimasukkan
  • Pod yang dimasukkan secara manual
  • Pekerjaan
  • StatefulSets
  • DaemonSets

Menonaktifkan bidang data terkelola (opsional)

Jika menyediakan Anthos Service Mesh terkelola di cluster baru, Anda dapat menonaktifkan bidang data terkelola sepenuhnya, atau untuk namespace atau pod individual. Bidang data terkelola akan terus dinonaktifkan untuk cluster yang ada, ketika dinonaktifkan secara default atau manual.

Untuk menonaktifkan bidang data terkelola pada tingkat cluster dan kembali ke mengelola proxy file bantuan sendiri, ubah anotasi:

kubectl annotate --overwrite controlplanerevision -n istio-system \
REVISION_LABEL \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Untuk menonaktifkan bidang data terkelola untuk namespace:

kubectl annotate --overwrite namespace NAMESPACE \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Untuk menonaktifkan bidang data terkelola untuk sebuah pod:

kubectl annotate --overwrite pod POD_NAME \
  mesh.cloud.google.com/proxy='{"managed":"false"}'

Aktifkan notifikasi pemeliharaan

Anda dapat meminta untuk diberi tahu tentang pemeliharaan pesawat data terkelola yang akan datang hingga seminggu sebelum pemeliharaan dijadwalkan. Notifikasi pemeliharaan tidak dikirim secara default. Anda juga harus Mengonfigurasi masa pemeliharaan GKE sebelum dapat menerima notifikasi. Jika diaktifkan, notifikasi akan dikirim setidaknya dua hari sebelum operasi upgrade.

Untuk memilih menerima notifikasi perawatan pesawat data terkelola:

  1. Buka halaman Komunikasi.

    Buka halaman Komunikasi

  2. Di baris Anthos Service Mesh Upgrade, di kolom Email, pilih tombol pilihan untuk mengaktifkan notifikasi pemeliharaan ON.

Setiap pengguna yang ingin menerima notifikasi harus memilih untuk ikut serta secara terpisah. Jika Anda ingin menyetel filter email untuk notifikasi ini, baris subjeknya adalah:

Upcoming upgrade for your Anthos Service Mesh cluster "CLUSTER_LOCATION/CLUSTER_NAME".

Contoh berikut menunjukkan notifikasi pemeliharaan pesawat data terkelola yang umum:

Subject Line: Upgrade mendatang untuk cluster ASM "<location/cluster-name>"

Pengguna Anthos Service Mesh yang terhormat,

Komponen Anthos Service Mesh di cluster Anda ${instance_id} (https://console.cloud.google.com/kubernetes/clusters/details/${instance_id}/details?project=${project_id}) dijadwalkan untuk diupgrade pada ${schedule_date_human_readable} pada ${schedule_time_human_readable}.

Anda dapat memeriksa catatan rilis (https://cloud.google.com/service-mesh/docs/release-notes) untuk mempelajari update baru.

Jika pemeliharaan ini dibatalkan, Anda akan menerima pemberitahuan baru melalui email.

Terima kasih,

Tim Anthos Service Mesh

(c) 2022 Google LLC 1600 Amphitheater Parkway, Mountain View, CA 94043 Kami mengirimkan pengumuman ini untuk menginformasikan perubahan penting pada Google Cloud Platform atau akun Anda. Anda dapat memilih untuk tidak menerima notifikasi masa pemeliharaan dengan mengedit preferensi pengguna: https://console.cloud.google.com/user-preferences/communication?project=${project_id}

Mengonfigurasi penemuan endpoint (hanya untuk penginstalan multi-cluster)

Sebelum melanjutkan, Anda harus sudah mengonfigurasi Anthos Service Mesh terkelola di setiap cluster seperti yang dijelaskan pada langkah sebelumnya. Tidak perlu menunjukkan bahwa cluster adalah cluster utama, ini adalah perilaku default.

Selain itu, pastikan Anda telah mendownload asmcli (hanya jika ingin memverifikasi konfigurasi dengan aplikasi contoh) serta menetapkan variabel project dan cluster.

Cluster publik

Mengonfigurasi penemuan endpoint di antara cluster publik

Mengaktifkan Anthos Service Mesh terkelola dengan fleet API akan mengaktifkan penemuan endpoint untuk cluster ini. Namun, Anda harus membuka port firewall. Guna menonaktifkan penemuan endpoint untuk satu atau beberapa cluster, lihat petunjuk untuk menonaktifkannya di Penemuan endpoint antara cluster publik dengan API deklaratif.

Cluster pribadi

Mengonfigurasi penemuan endpoint di antara cluster pribadi

Mengaktifkan Anthos Service Mesh terkelola dengan fleet API akan mengaktifkan penemuan endpoint untuk cluster ini. Namun, Anda harus membuka port firewall. Guna menonaktifkan penemuan endpoint untuk satu atau beberapa cluster, lihat petunjuk untuk menonaktifkannya di Penemuan endpoint antara cluster pribadi dengan API deklaratif.

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

Men-deploy aplikasi

Jika Anda memiliki lebih dari satu cluster dalam fleet yang menggunakan Anthos Service Mesh terkelola, pastikan penemuan endpoint atau port firewall dikonfigurasi sebagaimana mestinya sebelum melanjutkan dan men-deploy aplikasi.

Untuk men-deploy aplikasi, gunakan label yang sesuai dengan saluran yang Anda konfigurasi selama penginstalan, atau istio-injection=enabled jika Anda menggunakan label injeksi default.

Label injeksi default

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

Label revisi

Sebelum men-deploy aplikasi, hapus label istio-injection sebelumnya dari namespace-nya dan tetapkan label istio.io/rev=REVISION_LABEL.

Ini adalah label revisi yang Anda identifikasi saat memverifikasi bidang kontrol. Untuk mengubahnya ke label revisi tertentu, klik REVISION_LABEL, dan ganti dengan label yang berlaku: asm-managed-rapid untuk Cepat, asm-managed untuk Reguler, atau asm-managed-stable untuk Stabil.

Label revisi sesuai dengan saluran rilis:

Label revisi Saluran
asm-managed Reguler
asm-managed-rapid Cepat
asm-managed-stable Stabil
kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION_LABEL --overwrite

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

Sekarang Anda siap men-deploy aplikasi, atau Anda dapat men-deploy aplikasi contoh Bookinfo.

Jika Anda men-deploy aplikasi dalam konfigurasi multi-cluster, replikasikan Kubernetes dan konfigurasi 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 injeksi (opsional)

Konfigurasi per-pod tersedia untuk mengganti opsi ini pada masing-masing pod. Hal ini dilakukan dengan menambahkan container istio-proxy ke pod Anda. Injeksi sidecar akan memperlakukan konfigurasi apa pun yang ditentukan di sini sebagai pengganti template injeksi default.

Misalnya, konfigurasi berikut menyesuaikan berbagai setelan, termasuk menurunkan permintaan CPU, menambahkan penyangga 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"
      limites:
        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 ditetapkan. Namun, Anda harus sangat berhati-hati untuk kolom tertentu:

  • Kubernetes memerlukan kolom image yang ditetapkan sebelum injeksi berjalan. Meskipun Anda dapat menyetel gambar tertentu untuk mengganti gambar default, sebaiknya setel image ke auto yang akan menyebabkan injektor file bantuan secara otomatis memilih gambar yang akan digunakan.
  • Beberapa kolom di containers bergantung pada setelan terkait. Misalnya, permintaan CPU harus kurang dari batas CPU. Jika kedua kolom tidak dikonfigurasi dengan benar, pod dapat gagal dimulai.
  • Kubernetes memungkinkan Anda menetapkan requests dan limits untuk resource di PodSpec. GKE Autopilot hanya mempertimbangkan requests. Untuk mengetahui informasi selengkapnya, lihat Menetapkan batas resource di Autopilot.

Selain itu, kolom tertentu dapat dikonfigurasi oleh anotasi pada pod, meskipun sebaiknya gunakan pendekatan di atas untuk menyesuaikan setelan. Anda harus sangat berhati-hati saat menggunakan anotasi tertentu:

  • Untuk GKE Standard, jika sidecar.istio.io/proxyCPU disetel, pastikan untuk menyetel sidecar.istio.io/proxyCPULimit secara eksplisit. Jika tidak, batas CPU file bantuan akan ditetapkan sebagai tidak terbatas.
  • Untuk GKE Standard, jika sidecar.istio.io/proxyMemory disetel, pastikan untuk menyetel sidecar.istio.io/proxyMemoryLimit secara eksplisit. Jika tidak, batas memori file bantuan akan ditetapkan sebagai tidak terbatas.
  • Untuk GKE Autopilot, mengonfigurasi resource requests dan limits menggunakan anotasi mungkin akan menyediakan resource secara berlebihan. Gunakan pendekatan template gambar untuk menghindarinya. Lihat Contoh modifikasi resource di Autopilot.

Misalnya, lihat konfigurasi anotasi resource 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 memastikan konfigurasi Anda berfungsi dengan benar:

  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: Container Kubernetes
    • Metrik: Klien Proxy
    • Filter: container_name="cr-REVISION_LABEL"
    • Kelompokkan Menurut: label revision dan label proxy_version
    • Agregator: jumlah
    • Menstruasi: 1 menit

    Saat menjalankan Anthos 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 yang tidak dikelola memiliki container_name="discovery". Untuk menampilkan metrik dari keduanya, hapus Filter pada container_name="cr-asm-managed".

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

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

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

Memigrasikan aplikasi ke Anthos Service Mesh terkelola

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

  1. Ganti label namespace saat ini. Langkah-langkah yang diperlukan bergantung pada apakah Anda ingin menggunakan label injeksi default (misalnya, istio-injection enabled) atau label revisi.

    Label injeksi default

    1. Jalankan perintah berikut untuk memindahkan tag default ke revisi terkelola:

      istioctl tag set default --revision REVISION_LABEL
      
    2. Jalankan perintah berikut untuk memberi label namespace menggunakan istio-injection=enabled, jika belum dilakukan:

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

    Label revisi

    Jika Anda menggunakan label istio.io/rev=REVISION_LABEL, jalankan perintah berikut:

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

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

  4. Jika Anda memiliki beban kerja di namespace lain, ulangi langkah sebelumnya untuk setiap namespace.

  5. Jika Anda men-deploy aplikasi dalam konfigurasi multi-cluster, replikasikan konfigurasi Kubernetes dan Istio di semua cluster, kecuali jika Anda ingin membatasi konfigurasi tersebut hanya untuk subset cluster saja. Konfigurasi yang diterapkan pada cluster tertentu adalah sumber tepercaya untuk cluster tersebut.

  6. Pastikan metrik muncul seperti yang diharapkan dengan mengikuti langkah-langkah dalam Memverifikasi metrik bidang kontrol.

Jika yakin bahwa aplikasi 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 menurunkan skala untuk menggunakan resource yang lebih sedikit. Untuk menghapus, lanjutkan ke Menghapus bidang kontrol lama.

Jika mengalami masalah, Anda dapat mengidentifikasi dan mengatasinya 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 pastikan jumlah endpoint yang terhubung adalah nol.

Roll back

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

  1. Mengupdate workload yang akan dimasukkan dengan bidang kontrol versi sebelumnya. Dalam perintah berikut, nilai revisi asm-191-1 hanya digunakan sebagai contoh. Ganti contoh nilai 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 injeksi ulang sehingga proxy memiliki versi sebelumnya:

    kubectl rollout restart deployment -n NAMESPACE
    

Bidang kontrol terkelola akan otomatis diskalakan hingga nol dan tidak menggunakan resource apa pun saat tidak digunakan. Penyediaan dan webhook yang berubah akan tetap ada dan tidak memengaruhi perilaku cluster.

Gateway kini disetel ke revisi asm-managed. Untuk melakukan roll back, jalankan kembali perintah instal Anthos Service Mesh, yang akan men-deploy ulang gateway dengan mengarahkan kembali ke bidang kontrol dalam cluster:

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

Nantikan output ini jika berhasil:

deployment.apps/istio-ingressgateway rolled back

Meng-uninstal Anthos Service Mesh

Bidang kontrol terkelola akan melakukan penskalaan otomatis ke nol saat tidak ada namespace yang menggunakannya. Untuk mengetahui langkah-langkah mendetail, lihat Meng-uninstal Anthos Service Mesh.

Pemecahan masalah

Untuk mengidentifikasi dan menyelesaikan masalah saat menggunakan bidang kontrol terkelola, lihat Menyelesaikan masalah bidang kontrol terkelola.

Langkah selanjutnya