Menginstal Anthos Service Mesh di cluster yang terpasang

Panduan ini menjelaskan cara melakukan penginstalan bersih versi Anthos Service Mesh 1.6.14-asm.2 di cluster GKE Enterprise yang terpasang. Gunakan panduan ini untuk menginstal Anthos Service Mesh di lingkungan berikut:

  • Amazon Elastic Kubernetes Service (Amazon EKS) pada versi Kubernetes 1.16
  • Microsoft Azure Kubernetes Service (Microsoft AKS) pada versi Kubernetes 1.16

Penginstalan ini akan mengaktifkan fitur yang didukung di cluster Anda untuk profil konfigurasi asm-multicloud.

Sebelum memulai

Persyaratan

  • Cluster pengguna tempat Anda menginstal Anthos Service Mesh memiliki minimal 4 vCPU, memori 15 GB, dan 4 replika.

  • Cluster ini tidak memiliki Anthos Service Mesh atau Istio open source yang terinstal.

  • 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, lihat Penamaan port layanan.

Pembatasan

Project Google Cloud hanya dapat memiliki satu mesh yang terkait dengannya.

Menyiapkan lingkungan Anda

Anda memerlukan alat berikut di komputer tempat Anda ingin menginstal Anthos Service Mesh. Perlu diperhatikan bahwa Anda hanya dapat menginstal Anthos Service Mesh di cluster pengguna, bukan di cluster admin.

Setelah menginstal Google Cloud CLI:

  1. Lakukan autentikasi dengan Google Cloud CLI:

    gcloud auth login
    
  2. Update komponen:

    gcloud components update
    
  3. Instal kubectl:

    gcloud components install kubectl
    
  4. Instal versi kpt yang diperlukan:

       curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2
       chmod +x kpt_0_39_2
       alias kpt="$(readlink -f kpt_0_39_2)"
    
  5. Alihkan konteks ke cluster pengguna Anda:

    kubectl config use-context CLUSTER_NAME
  6. Berikan izin admin cluster ke akun pengguna Anda (alamat email login Google Cloud Anda). Anda memerlukan izin berikut agar dapat membuat aturan role-based access control (RBAC) yang diperlukan untuk Anthos Service Mesh:

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user=USER_ACCOUNT

Bersiap menginstal Anthos Service Mesh

    Linux

  1. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-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.6.14-asm.2-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-linux-amd64.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.6.14-asm.2 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. Mac OS

  5. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-osx.tar.gz
  6. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK

  7. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.6.14-asm.2-osx.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.6.14-asm.2 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.

  8. Windows

  9. Download file penginstalan Anthos Service Mesh ke direktori kerja Anda saat ini:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-win.zip
  10. Download file tanda tangan dan gunakan openssl untuk memverifikasi tanda tangan:
    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.6.14-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK

  11. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.6.14-asm.2-win.zip

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.6.14-asm.2 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.

  12. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
    cd istio-1.6.14-asm.2
  13. Untuk memudahkan, tambahkan alat di direktori /bin ke PATH Anda:
    export PATH=$PWD/bin:$PATH

Membuat namespace istio-system

Buat namespace yang disebut istio-system untuk komponen bidang kontrol:

kubectl create namespace istio-system

Mengonfigurasi webhook validasi

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

Salin YAML berikut ke file bernama istiod-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: istiod
  namespace: istio-system
  labels:
    istio.io/rev: asm-1614-2
    app: istiod
    istio: pilot
    release: istio
spec:
  ports:
    - port: 15010
      name: grpc-xds # plaintext
      protocol: TCP
    - port: 15012
      name: https-dns # mTLS with k8s-signed cert
      protocol: TCP
    - port: 443
      name: https-webhook # validation and injection
      targetPort: 15017
      protocol: TCP
    - port: 15014
      name: http-monitoring # prometheus stats
      protocol: TCP
  selector:
    app: istiod
    istio.io/rev: asm-1614-2

Menginstal Anthos Service Mesh

  1. Jalankan perintah berikut untuk menginstal Anthos Service Mesh menggunakan profil asm-multicloud. 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.

    istioctl install \
      --set profile=asm-multicloud \
      --set revision=asm-1614-2
    

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

  2. Konfigurasikan webhook yang memvalidasi agar dapat menemukan layanan istiod dengan label revisi:

    kubectl apply -f istiod-service.yaml
    

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

TLS bersama otomatis (auto mTLS) diaktifkan secara default. Dengan mTLS otomatis, proxy file bantuan klien akan otomatis mendeteksi apakah server memiliki file bantuan. File bantuan klien mengirimkan mTLS ke workload dengan file bantuan dan mengirimkan traffic teks biasa ke workload tanpa sidecar.

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

Jika output perintah menunjukkan bahwa satu atau beberapa komponen tidak dalam status Running, lihat Memecahkan Masalah GKE Enterprise pada cluster yang terpasang untuk skrip yang dapat Anda jalankan guna mendapatkan detail tentang komponen.

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.

Setiap beban kerja yang berjalan di cluster sebelum Anda menginstal Anthos Service Mesh harus memasukkan atau mengupdate sidecar proxy agar memiliki versi Anthos Service Mesh saat ini. Sebelum men-deploy workload baru, pastikan untuk mengonfigurasi injeksi proxy sidecar sehingga Anthos Service Mesh dapat memantau dan mengamankan traffic.

Untuk mengaktifkan injeksi otomatis file bantuan, beri label namespace dengan revisi yang sama seperti yang Anda tetapkan pada istiod. Jalankan perintah berikut untuk menampilkan label pada istiod:

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

Pastikan label revisi, istio.io/rev=asm-1614-2, ada di output. Ini adalah label yang Anda gunakan untuk mengaktifkan injeksi otomatis. Anda dapat mengaktifkan injeksi otomatis dengan satu perintah, misalnya:

kubectl label namespace NAMESPACE istio-injection-istio.io/rev=asm-1614-2 --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.

Men-deploy aplikasi contoh

Anthos Service Mesh menyediakan gateway masuk yang telah dikonfigurasi sebelumnya, istio-ingressgateway, yang dapat Anda gunakan untuk mengelola traffic masuk ke aplikasi yang berjalan di mesh layanan Anda. Agar aplikasi dapat diakses dari luar cluster Anda, (seperti dari browser):

  • Anda perlu mendapatkan alamat IP eksternal istio-ingressgateway.

  • Aplikasi Anda harus menentukan resource Gateway dan VirtualService, mirip dengan frontend-gateway.yaml aplikasi contoh Online Boutique.

Untuk men-deploy dan menjalankan aplikasi contoh

  1. Download contoh:

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

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

    kubectl apply -f microservices-demo
    

Untuk mendapatkan alamat IP eksternal istio-ingressgateway:

  1. Buat variabel lingkungan kunci host:

    Microsoft AKS

      export HOST_KEY="ip"
    

    Amazon EKS

      export HOST_KEY="hostname"
    
  2. Buat variabel lingkungan INGRESS_HOST:

    export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].'"$HOST_KEY"'}')
    
  3. Buat variabel lingkungan INGRESS_PORT:

    export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
    
  4. Buka aplikasi di browser Anda. Di URL berikut, ganti EXTERNAL_IP dengan $INGRESS_HOST:$INGRESS_PORT:

    http://EXTERNAL_IP/

Setelah selesai menjelajahi, hapus sampel:

kubectl delete -f microservices-demo