Menginstal Anthos Service Mesh

Halaman ini adalah bagian dari panduan multihalaman yang menjelaskan cara menginstal Anthos Service Mesh versi 1.9.8 di cluster GKE untuk mesh yang berisi beberapa cluster yang berada di project Google Cloud yang berbeda.

Sebelum memulai

Sebelum menginstal Anthos Service Mesh, pastikan Anda memiliki:

Menetapkan kredensial dan izin

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

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

    Perintah ini merespons dengan tanda kurung kurawal kosong: {}

  2. Dapatkan kredensial autentikasi untuk berinteraksi dengan cluster. Perintah ini juga menetapkan konteks saat ini untuk kubectl ke cluster.

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

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

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

Mendownload file penginstalan

Linux

  1. Download file penginstalan Anthos Service Mesh ke direktori kerja saat ini:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-linux-amd64.tar.gz
  2. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig istio-1.9.8-asm.6-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK.

  3. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:

     tar xzf istio-1.9.8-asm.6-linux-amd64.tar.gz

    Perintah tersebut membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.9.8-asm.6 yang berisi:

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

    cd istio-1.9.8-asm.6

Mac OS

  1. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-osx.tar.gz
  2. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.9.8-asm.6-osx.tar.gz.1.sig istio-1.9.8-asm.6-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK.

  3. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:

    tar xzf istio-1.9.8-asm.6-osx.tar.gz

    Perintah tersebut membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.9.8-asm.6 yang berisi:

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

    cd istio-1.9.8-asm.6

Windows

  1. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-win.zip
  2. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.9.8-asm.6-win.zip.1.sig istio-1.9.8-asm.6-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK.

  3. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:

    tar xzf istio-1.9.8-asm.6-win.zip

    Perintah tersebut membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.9.8-asm.6 yang berisi:

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

    cd istio-1.9.8-asm.6

Mempersiapkan file konfigurasi resource

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

Untuk menyiapkan file konfigurasi resource:

Mesh CA

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

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

  3. Verifikasi versi 'kpt'. Pastikan Anda menjalankan kpt versi sebelum 1.x:

    kpt version
    

    Outputnya akan mirip dengan berikut ini:

    0.39.2

    Jika Anda memiliki kpt versi 1.x atau yang lebih baru, lihat Menyiapkan lingkungan untuk mendownload versi yang diperlukan untuk sistem operasi Anda.

  4. Download paket:

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

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

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

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

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  9. Setel tag ke versi Anthos Service Mesh yang Anda instal:

    kpt cfg set asm anthos.servicemesh.tag 1.9.8-asm.6
    
  10. Tetapkan webhook validasi untuk menggunakan label revisi:

    kpt cfg set asm anthos.servicemesh.rev asm-198-6
    

    Saat menginstal Anthos Service Mesh, Anda menetapkan label revisi pada istiod. Anda harus menetapkan revisi yang sama pada webhook validasi.

  11. Karena cluster dalam konfigurasi multi-cluster Anda berada dalam project yang berbeda, Anda perlu mengonfigurasi alias domain tepercaya untuk project lain yang akan membentuk mesh layanan multi-cluster/multi-project.

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

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

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

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

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

  12. Hasilkan nilai penyetel kpt:

    kpt cfg list-setters asm
    

    Pada output dari perintah, pastikan nilai untuk penyetel berikut sudah benar:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • anthos.servicemesh.trustDomainAliases
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Anda dapat mengabaikan nilai untuk penyetel lainnya.

Istio CA

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

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

  3. Verifikasi versi 'kpt'. Pastikan Anda menjalankan kpt versi sebelum 1.x:

    kpt version
    

    Outputnya akan mirip dengan berikut ini:

    0.39.2

    Jika Anda memiliki kpt versi 1.x atau yang lebih baru, lihat Menyiapkan lingkungan untuk mendownload versi yang diperlukan untuk sistem operasi Anda.

  4. Download paket:

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

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

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

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

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  9. Setel tag ke versi Anthos Service Mesh yang Anda instal:

    kpt cfg set asm anthos.servicemesh.tag 1.9.8-asm.6
    
  10. Tetapkan webhook validasi untuk menggunakan label revisi:

    kpt cfg set asm anthos.servicemesh.rev asm-198-6
    

    Saat menginstal Anthos Service Mesh, Anda menetapkan label revisi pada istiod. Anda harus menetapkan revisi yang sama pada webhook validasi.

  11. Hasilkan nilai penyetel kpt:

    kpt cfg list-setters asm
    

    Pada output dari perintah, pastikan nilai untuk penyetel berikut sudah benar:

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Anda dapat mengabaikan nilai untuk penyetel lainnya.

Menginstal Anthos Service Mesh

Mesh CA

  1. Pastikan konteks kubeconfig saat ini mengarah ke cluster tempat Anda ingin menginstal Anthos Service Mesh:

    kubectl config current-context
    

    Outputnya akan dalam format berikut:

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    Konteks kubeconfig dan nilai penyetel kpt harus cocok. Jika perlu, jalankan perintah gcloud container clusters get-credentials untuk menetapkan konteks kubeconfig saat ini.

  2. Jika perlu, ubah ke direktori istio-1.9.8-asm.6. Klien istioctl bergantung pada versi. Pastikan Anda menggunakan versi ini di direktori istio-1.9.8-asm.6/bin.

  3. Jalankan perintah berikut untuk menginstal Anthos Service Mesh. Jika Anda ingin mengaktifkan fitur opsional yang didukung, sertakan -f dan nama file YAML pada command line berikut. Lihat Mengaktifkan fitur opsional untuk mengetahui informasi selengkapnya.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/multiproject.yaml \
      -f asm/istio/options/multicluster.yaml \
      --revision=asm-198-6
    

    Argumen --revision menambahkan label revisi dalam format istio.io/rev=asm-198-6 ke istiod. Label revisi digunakan oleh webhook injektor sidecar otomatis untuk mengaitkan sidecar yang dimasukkan dengan revisi istiod tertentu. Untuk mengaktifkan injeksi otomatis file bantuan untuk namespace, Anda harus melabelinya dengan revisi yang cocok dengan Deployment istiod.

    File berikut menggantikan setelan di file istio-operator.yaml:

    • File multiproject.yaml menetapkan profil asm-gcp-multiproject.

    • File multicluster.yaml mengonfigurasi setelan yang diperlukan Anthos Service Mesh untuk konfigurasi multi-cluster.

  4. Konfigurasikan webhook yang memvalidasi untuk menemukan istiod dengan label revisi:

    kubectl apply -f asm/istio/istiod-service.yaml

    Perintah ini membuat entri layanan yang memungkinkan webhook yang memvalidasi secara otomatis memeriksa konfigurasi sebelum diterapkan.

  5. Deploy pengontrol Layanan Kanonis ke cluster Anda:

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

    Pengontrol Layanan Kanonis mengelompokkan beban kerja yang termasuk dalam layanan logis yang sama. Untuk mengetahui informasi selengkapnya tentang Layanan Kanonis, lihat ringkasan Layanan Kanonis.

Istio CA

  1. Pastikan konteks kubeconfig saat ini mengarah ke cluster tempat Anda ingin menginstal Anthos Service Mesh:

    kubectl config current-context
    

    Outputnya akan dalam format berikut:

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    Konteks kubeconfig dan nilai penyetel kpt harus cocok. Jika perlu, jalankan perintah gcloud container clusters get-credentials untuk menetapkan konteks kubeconfig saat ini.

  2. Buat namespace istio-system:

    kubectl create namespace istio-system
    
  3. Buat cacerts rahasia:

    kubectl create secret generic cacerts  \
      -n istio-system \
      --from-file=ca-cert.pem \
      --from-file=ca-key.pem \
      --from-file=root-cert.pem \
      --from-file=cert-chain.pem
    

    Untuk informasi selengkapnya, lihat Mencolokkan Sertifikat CA yang ada.

  4. Jika perlu, ubah ke direktori istio-1.9.8-asm.6. Klien istioctl bergantung pada versi. Pastikan Anda menggunakan versi ini di direktori istio-1.9.8-asm.6/bin.

  5. Jalankan perintah berikut untuk menginstal Anthos Service Mesh. Jika Anda ingin mengaktifkan fitur opsional yang didukung, sertakan -f dan nama file YAML pada command line berikut. Lihat Mengaktifkan fitur opsional untuk mengetahui informasi selengkapnya.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/citadel-ca.yaml \
      -f asm/istio/options/multiproject.yaml \
      -f asm/istio/options/multicluster.yaml \
      --revision=asm-198-6
    

    Argumen --revision menambahkan label revisi dalam format istio.io/rev=asm-198-6 ke istiod. Label revisi digunakan oleh webhook injektor sidecar otomatis untuk mengaitkan sidecar yang dimasukkan dengan revisi istiod tertentu. Untuk mengaktifkan injeksi otomatis file bantuan untuk namespace, Anda harus melabelinya dengan revisi yang cocok dengan Deployment istiod.

    File berikut menggantikan setelan di file istio-operator.yaml:

    • citadel-ca.yaml mengonfigurasi Istio CA sebagai certificate authority.

    • File multiproject.yaml menetapkan profil asm-gcp-multiproject.

    • File multicluster.yaml mengonfigurasi setelan yang diperlukan Anthos Service Mesh untuk konfigurasi multi-cluster.

  6. Konfigurasikan webhook yang memvalidasi untuk menemukan istiod dengan label revisi:

    kubectl apply -f asm/istio/istiod-service.yaml

    Perintah ini membuat entri layanan yang memungkinkan webhook yang memvalidasi secara otomatis memeriksa konfigurasi sebelum diterapkan.

  7. Deploy pengontrol Layanan Kanonis ke cluster Anda:

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

    Pengontrol Layanan Kanonis mengelompokkan beban kerja yang termasuk dalam layanan logis yang sama. Untuk mengetahui informasi selengkapnya tentang Layanan Kanonis, lihat ringkasan Layanan Kanonis.

Memeriksa komponen bidang kontrol

Pastikan pod bidang kontrol di istio-system sudah aktif:

kubectl get pod -n istio-system

Output yang diharapkan mirip dengan berikut ini:

NAME                                   READY   STATUS      RESTARTS   AGE
istio-ingressgateway-cff9f5c7d-qg4ls   1/1     Running   0          7m5s
istio-ingressgateway-cff9f5c7d-vlkzb   1/1     Running   0          7m20s
istiod-66b587859c-886gx                1/1     Running   0          7m33s
istiod-66b587859c-dfs2j                1/1     Running   0          7m33s

Memasukkan proxy file bantuan

Anthos Service Mesh menggunakan proxy file bantuan untuk meningkatkan keamanan, keandalan, dan kemampuan observasi jaringan. Dengan Anthos Service Mesh, fungsi-fungsi ini diabstraksikan dari container utama aplikasi dan diimplementasikan dalam proxy di luar proses umum yang dikirimkan sebagai container terpisah dalam Pod yang sama.

Penginstalan belum selesai sampai Anda mengaktifkan injeksi proxy sidecar otomatis (injeksi otomatis) dan memulai ulang Pod untuk semua workload yang sedang berjalan di cluster sebelum Anda menginstal Anthos Service Mesh.

Untuk mengaktifkan injeksi otomatis, beri label namespace dengan label revisi yang ditetapkan pada istiod saat Anda menginstal Anthos Service Mesh. Label revisi digunakan oleh webhook injektor file bantuan untuk mengaitkan file bantuan yang dimasukkan dengan revisi istiod tertentu. Setelah menambahkan label, semua Pod yang ada di namespace harus dimulai ulang agar sidecar dapat dimasukkan.

Sebelum men-deploy workload baru di namespace baru, pastikan untuk mengonfigurasi injeksi otomatis agar Anthos Service Mesh dapat memantau dan mengamankan traffic.

Untuk mengaktifkan injeksi otomatis:

  1. Gunakan perintah berikut untuk menemukan label revisi di istiod:

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    Outputnya terlihat mirip dengan yang berikut ini:

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-198-6-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-198-6-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586

    Pada output, di kolom LABELS, catat nilai label revisi istiod, yang mengikuti awalan istio.io/rev=. Dalam contoh ini, nilainya adalah asm-198-6.

  2. Terapkan label revisi dan hapus label istio-injection jika ada. Dalam perintah berikut, NAMESPACE adalah nama namespace tempat Anda ingin mengaktifkan injeksi otomatis, dan REVISION adalah label revisi yang Anda catat pada langkah sebelumnya.

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

    Anda dapat mengabaikan pesan "istio-injection not found" di output. Artinya, namespace sebelumnya tidak memiliki label istio-injection, yang akan Anda harapkan dalam penginstalan baru Anthos Service Mesh atau deployment baru. Karena injeksi otomatis gagal jika namespace memiliki istio-injection dan label revisi, semua perintah kubectl label dalam dokumentasi Anthos Service Mesh mencakup penghapusan label istio-injection.

  3. Jika beban kerja berjalan di cluster sebelum Anda menginstal Anthos Service Mesh, mulai ulang Pod untuk memicu injeksi ulang.

    Cara memulai ulang Pod bergantung pada aplikasi dan lingkungan cluster tersebut. Misalnya, di lingkungan staging, Anda dapat menghapus semua Pod, yang menyebabkannya dimulai ulang. Namun, di lingkungan produksi, Anda mungkin memiliki proses yang menerapkan deployment berwarna biru-hijau, sehingga Anda dapat memulai ulang Pod dengan aman untuk menghindari gangguan traffic.

    Anda dapat menggunakan kubectl untuk melakukan mulai ulang berkelanjutan:

    kubectl rollout restart deployment -n NAMESPACE
    
  4. Pastikan bahwa Pod Anda telah dikonfigurasi untuk mengarah ke versi baru istiod.

    kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
    

Langkah selanjutnya