Menginstal Anthos Service Mesh menggunakan GKE Enterprise CLI

Panduan ini menjelaskan cara menginstal Anthos Service Mesh 1.4.10-asm.18 di cluster Google Cloud GKE baru menggunakan antarmuka command line (CLI) GKE Enterprise dengan fitur berikut yang diaktifkan:

Saat ini GKE Enterprise CLI tidak mendukung penginstalan pada cluster GKE yang ada atau di GKE pada VMware.

Sebelum memulai

Panduan ini mengasumsikan bahwa Anda sudah:

Persyaratan

  • Anda harus memiliki lisensi atau langganan uji coba GKE Enterprise. Lihat panduan Harga GKE Enterprise untuk mengetahui detailnya.

  • Cluster GKE Anda harus memenuhi persyaratan berikut:

    • Minimal empat node.
    • Jenis mesin minimum adalah e2-standard-4, yang memiliki empat vCPU.
    • Gunakan saluran rilis, bukan versi statis GKE
  • Agar dapat disertakan dalam mesh layanan, port layanan harus diberi nama, dan namanya harus menyertakan protokol port dalam sintaksis berikut: name: protocol[-suffix] dengan tanda kurung siku menunjukkan akhiran opsional yang harus diawali dengan tanda pisah. Untuk mengetahui informasi selengkapnya, Penamaan port layanan.

  • Jika menginstal Anthos Service Mesh di cluster pribadi, Anda harus menambahkan aturan firewall untuk membuka port 9443 jika ingin menggunakan injeksi file bantuan otomatis. Jika tidak menambahkan aturan firewall dan injeksi file bantuan otomatis diaktifkan, Anda akan mendapatkan error saat men-deploy workload. Untuk mengetahui detail tentang cara menambahkan aturan firewall, lihat Menambahkan aturan firewall untuk kasus penggunaan tertentu.

  • Jika telah membuat perimeter layanan di organisasi, Anda mungkin perlu menambahkan layanan Mesh CA ke perimeter. Lihat Menambahkan Mesh CA ke perimeter layanan untuk mengetahui informasi selengkapnya.

Pembatasan

Hanya satu penginstalan Anthos Service Mesh per project Google Cloud yang didukung. Beberapa deployment mesh dalam satu project tidak didukung.

Data sertifikat

Sertifikat dari Mesh CA mencakup data berikut tentang layanan aplikasi Anda:

  • Project ID Google Cloud
  • Namespace GKE
  • Nama akun layanan GKE

Menginstal kpt dan Anthos CLI

Anda menggunakan kpt untuk menginstal GKE Enterprise CLI. Anda juga menggunakan kpt untuk mendownload, mengelola, dan menyesuaikan file konfigurasi resource Anthos Service Mesh yang disimpan di GitHub. File konfigurasi berisi placeholder untuk informasi cluster GKE dan project Google Cloud spesifik Anda. Setelah menyesuaikan file konfigurasi, Anda dapat memeriksanya ke repo GitHub Anda sendiri atau sistem kontrol sumber lainnya.

  1. Lakukan autentikasi dengan Google Cloud CLI:

    gcloud auth login
    
  2. Dapatkan project ID Google Cloud dan buat variabel lingkungan untuk ID tersebut:

    export PROJECT_ID=YOUR_PROJECT_ID
  3. Tetapkan project ID default untuk Google Cloud CLI:

    gcloud config set project ${PROJECT_ID}
    
  4. Pilih zona atau region dan jenis mesin untuk cluster baru. Jenis mesin minimum yang diperlukan oleh Anthos Service Mesh adalah n1-standard-4. Anda dapat menggunakan opsi saluran rilis apa pun.

    • Jika Anda akan membuat cluster zona tunggal, jalankan perintah berikut untuk mendapatkan daftar zona GCP yang tersedia:

      gcloud compute zones list
      
    • Jika Anda akan membuat cluster regional, jalankan perintah berikut untuk mendapatkan daftar region yang tersedia:

      gcloud compute regions list
      
    • Untuk mendapatkan daftar jenis mesin:

      gcloud compute machine-types list | more
      
  5. Buat variabel lingkungan berikut:

    • Tetapkan nama cluster:

      export CLUSTER_NAME=YOUR_CLUSTER_NAME

      Nama cluster hanya boleh berisi karakter alfanumerik dengan huruf kecil dan '-', harus diawali dengan huruf dan diakhiri dengan alfanumerik, serta tidak boleh lebih dari 40 karakter.

    • Tetapkan CLUSTER_LOCATION ke zona cluster atau region cluster Anda:

      export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
  6. Instal GKE Enterprise CLI dan update komponen. Jika Anda menggunakan Cloud Shell, tambahkan sudo ke perintah berikut:

    gcloud components install kpt anthoscli alpha
    gcloud components update --version 292.0.0
  7. Jika ingin, buat direktori baru untuk paket Anthos Service Mesh dan cd ke direktori tersebut.

  8. Download paket Anthos Service Mesh ke direktori kerja saat ini:

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

    Secara default, perintah kpt pkg get mengisi zona komputasi dalam file paket agar cocok dengan konfigurasi Anda saat ini.

  9. Tetapkan nilai berikut dalam file konfigurasi Anda:

    • Tetapkan ID project:

      kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    • Tetapkan nama cluster:

      kpt cfg set asm cluster-name ${CLUSTER_NAME}
    • Tetapkan zona atau region default:

      kpt cfg set asm gcloud.compute.zone ${CLUSTER_LOCATION}
    • Jika ingin, ubah saluran rilis dari default, REGULAR. Dalam perintah berikut, ganti YOUR_CHANNEL dengan STABLE atau RAPID.

      kpt cfg set asm gcloud.container.cluster.releaseChannel YOUR_CHANNEL

      Untuk deskripsi setiap saluran, lihat Saluran yang tersedia.

Menginstal Anthos Service Mesh di cluster baru

  1. Jalankan perintah berikut untuk membuat cluster baru dan menginstal Anthos Service Mesh menggunakan file konfigurasi Anthos Service Mesh yang telah Anda sesuaikan:

    anthoscli apply -f asm
    
  2. Tunggu hingga deployment selesai:

    kubectl wait --for=condition=available --timeout=600s deployment --all -n istio-system
    

    Output:

    deployment.extensions/istio-galley condition met
    deployment.extensions/istio-ingressgateway condition met
    deployment.extensions/istio-pilot condition met
    deployment.extensions/istio-sidecar-injector condition met
    deployment.extensions/promsd condition met

Memeriksa komponen bidang kontrol

Pastikan Pod bidang kontrol di istio-system sudah naik:

kubectl get pod -n istio-system

Anda akan melihat output yang mirip dengan berikut ini:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-galley-5c65896ff7-m2pls             2/2     Running     0          18m
istio-ingressgateway-587cd459f-q6hqt      2/2     Running     0          18m
istio-nodeagent-74w69                     1/1     Running     0          18m
istio-nodeagent-7524w                     1/1     Running     0          18m
istio-nodeagent-7652w                     1/1     Running     0          18m
istio-nodeagent-7948w                     1/1     Running     0          18m
istio-pilot-9db77b99f-7wfb6               2/2     Running     0          18m
istio-sidecar-injector-69c4d9f875-dt8rn   1/1     Running     0          18m
promsd-55f464d964-lqs7w                   2/2     Running     0          18m

Anda akan melihat instance istio-nodeagent untuk setiap node dalam cluster. Mesh CA, yang menggantikan komponen Istio Citadel OSS, membuat agen node untuk menerbitkan sertifikat mTLS untuk workload yang berjalan di mesh layanan Anda.

Pastikan Mesh CA berfungsi:

  kubectl get pods -n istio-system -l app=istio-nodeagent \
  --output=jsonpath={​.items..metadata.name} -o yaml | grep CA_ADDR -A 1

Output yang diharapkan: meshca.googleapis.com:443.

Mendaftarkan cluster Anda

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

Membuat akun layanan dan file kunci Google Cloud

File JSON yang berisi kredensial akun layanan diperlukan untuk mendaftarkan cluster. Untuk mengikuti prinsip hak istimewa terendah, sebaiknya buat akun layanan yang berbeda untuk setiap cluster yang Anda daftarkan.

Untuk membuat akun layanan dan file kunci:

  1. Pilih nama untuk akun layanan dan buat variabel lingkungan untuk akun tersebut:

    export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
    
  2. Buat akun layanan:

    gcloud iam service-accounts create ${SERVICE_ACCOUNT_NAME}
  3. Tampilkan daftar semua akun layanan project untuk mengonfirmasi bahwa akun layanan telah dibuat:

    gcloud iam service-accounts list
  4. Ikat peran IAM gkehub.connect ke akun layanan:

    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
       --member="serviceAccount:${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" \
       --role="roles/gkehub.connect"
  5. Buat variabel lingkungan untuk jalur file lokal tempat Anda ingin menyimpan file JSON. Sebaiknya beri nama file menggunakan nama akun layanan dan project ID Anda, seperti: /tmp/creds/${SERVICE_ACCOUNT_NAME}-${PROJECT_ID}.json

    export SERVICE_ACCOUNT_KEY_PATH=LOCAL_KEY_PATH
  6. Download file JSON kunci pribadi akun layanan:

    gcloud iam service-accounts keys create ${SERVICE_ACCOUNT_KEY_PATH} \
       --iam-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

Mendaftarkan cluster

Dalam perintah berikut, ganti MEMBERSHIP_NAME dengan nama yang secara unik mewakili cluster yang terdaftar di Hub.

gcloud container hub memberships register MEMBERSHIP_NAME \
    --gke-cluster=${CLUSTER_LOCATION}/${CLUSTER_NAME} \
    --service-account-key-file=${SERVICE_ACCOUNT_KEY_PATH}

Perintah ini merespons dengan output yang mirip dengan berikut ini:

kubeconfig entry generated for CLUSTER_NAME.
Waiting for membership to be created...done.
Created a new membership [projects/PROJECT_ID/locations/global/memberships/MEMBERSHIP_NAME] for the cluster [MEMBERSHIP_NAME]
Generating the Connect Agent manifest...
Deploying the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect]...
Deployed the Connect Agent on cluster [MEMBERSHIP_NAME] in namespace [gke-connect].
Finished registering the cluster [MEMBERSHIP_NAME] with the Hub.

Kunci akun layanan ini disimpan sebagai rahasia bernama creds-gcp di namespace gke-connect.

Untuk mengetahui informasi lebih lanjut tentang pendaftaran cluster, baca Mendaftarkan cluster dalam dokumentasi Connect.

Mengaktifkan Kebijakan Keamanan Pod

Untuk keamanan terbaik pada mesh layanan Anda, sebaiknya aktifkan Kebijakan Keamanan Pod.

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.

Sebelum men-deploy workload, pastikan untuk mengonfigurasi injeksi proxy sidecar sehingga Anthos Service Mesh dapat memantau dan mengamankan traffic.

Anda dapat mengaktifkan injeksi file bantuan otomatis dengan satu perintah, misalnya:

kubectl label namespace NAMESPACE istio-injection=enabled --overwrite

dengan NAMESPACE adalah nama namespace untuk layanan aplikasi Anda, atau default jika Anda tidak membuat namespace secara eksplisit.

Untuk mengetahui informasi selengkapnya, lihat Memasukkan proxy file bantuan.

Melihat halaman Anthos Service Mesh

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

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

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

    Buka Anthos Service Mesh

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

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

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

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

Untuk melihat metrik:

  1. Di konsol Google Cloud, buka halaman Monitoring:

    Buka Monitoring

  2. Pilih Resource > Metrics Explorer.

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

Menginstal contoh menggunakan kpt

Jika ingin, Anda dapat menggunakan kpt untuk menginstal sampel Hipster ke dalam cluster.

  1. Download contoh:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/microservices-demo.git/release \
    hipster-demo
    
  2. Aktifkan injeksi file bantuan otomatis:

    kubectl label namespace default istio-injection=enabled
    
  3. Deploy sampel ke cluster:

    kubectl apply -f hipster-demo
    

    Setelah sampel berjalan, Anda dapat menjelajahi Anthos Service Mesh di Konsol Google Cloud. Perhatikan bahwa perlu waktu hingga 5 menit bagi grafik topologi untuk menampilkan layanan di mesh Anda.

Setelah selesai bereksplorasi, hapus contoh Hipster:

kubectl delete -f hipster-demo

Langkah selanjutnya