Menginstal Anthos Service Mesh secara lokal

Panduan ini menjelaskan cara melakukan penginstalan bersih Anthos Service Mesh versi 1.7.8-asm.10 di GKE yang ada di cluster VMware. Jika Anda sudah menginstal Anthos Service Mesh versi sebelumnya, lihat Mengupgrade Anthos Service Mesh di GKE di VMware. Penginstalan ini akan mengaktifkan fitur-fitur yang didukung di cluster Anda untuk profil konfigurasi asm-multicloud.

Tentang komponen bidang kontrol

GKE di VMware dilengkapi dengan komponen Istio berikut yang telah diinstal sebelumnya:

  • Citadel diinstal di namespace kube-system.
  • Pilot dan Gateway Istio Ingress diinstal di namespace gke-system.

GKE di VMware menggunakan komponen ini untuk mengaktifkan ingress dan mengamankan komunikasi antara komponen yang dikontrol Google. Jika hanya memerlukan fungsi ingress, Anda tidak perlu menginstal OSS Istio atau Anthos Service Mesh. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi traffic masuk, lihat Mengaktifkan traffic masuk.

Saat Anda menginstal Anthos Service Mesh, komponennya akan diinstal di namespace istio-system. Karena komponen Anthos Service Mesh berada di namespace berbeda, komponen tersebut tidak bertentangan dengan GKE di komponen Istio yang sudah terinstal sebelumnya di VMware.

Sebelum memulai

Tinjau persyaratan berikut sebelum Anda memulai penyiapan.

Persyaratan

  • Anda harus memiliki langganan Anthos. Atau, opsi penagihan bayar sesuai penggunaan hanya tersedia untuk GKE Enterprise di Google Cloud. Untuk informasi selengkapnya, lihat panduan Harga GKE Enterprise.

  • Pastikan cluster pengguna tempat Anda menginstal Anthos Service Mesh memiliki setidaknya 4 vCPU, memori 15 GB, dan 4 node.

  • Anda harus memberi nama port layanan menggunakan sintaksis berikut: name: protocol[-suffix] dengan tanda kurung siku menunjukkan akhiran opsional yang harus diawali dengan tanda hubung. Untuk mengetahui informasi selengkapnya, lihat Penamaan port layanan.

  • Pastikan versi cluster Anda tercantum di Lingkungan yang didukung. Untuk memeriksa versi cluster, Anda dapat menggunakan alat command line gkectl. Jika Anda belum menginstal gkectl, lihat download GKE lokal.

    gkectl version

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. Jika Anda ingin men-deploy dan menguji penginstalan dengan aplikasi contoh Online Boutique, instal kpt:

    gcloud components install kpt
    
  5. Alihkan konteks ke cluster pengguna Anda (jika perlu):

    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

Mendownload file penginstalan

    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.7.8-asm.10-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.7.8-asm.10-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-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.7.8-asm.10-linux-amd64.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.7.8-asm.10 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 install/kubernetes/operator/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.7.8-asm.10-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.7.8-asm.10-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-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.7.8-asm.10-osx.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.7.8-asm.10 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 install/kubernetes/operator/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.7.8-asm.10-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.7.8-asm.10-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-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.7.8-asm.10-win.zip

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.7.8-asm.10 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 install/kubernetes/operator/profiles.

  12. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
    cd istio-1.7.8-asm.10
  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-178-10
    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-178-10

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-178-10
    

    Argumen --set revision menambahkan label revisi dalam format istio.io/rev=asm-178-10 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 berjalan:

kubectl get pod -n istio-system

Output yang diharapkan mirip dengan berikut ini:

NAME                                      READY   STATUS      RESTARTS   AGE
istio-ingressgateway-74cc894bfd-786rg     1/1     Running     0          7m19s
istiod-78cdbbbdb-d7tps                    1/1     Running     0          7m36s
promsd-576b8db4d6-lqf64                   2/2     Running     1          7m19s

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. Untuk memasukkan Pod dengan proxy file bantuan, Anda harus mengonfigurasi injeksi proxy file bantuan otomatis (injeksi otomatis) dengan memberi label namespace menggunakan label revisi yang sama seperti yang Anda tetapkan pada istiod saat menginstal Anthos Service Mesh.

  • Anda harus mengaktifkan injeksi otomatis pada setiap namespace dengan workload yang berjalan di cluster Anda sebelum menginstal Anthos Service Mesh.

  • Sebelum men-deploy workload 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-178-10-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-178-10,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-178-10-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-178-10,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-178-10.

  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
    

Mengonfigurasi alamat IP eksternal

Penginstalan Anthos Service Mesh default mengasumsikan bahwa alamat IP eksternal dialokasikan secara otomatis untuk layanan LoadBalancer. Hal ini tidak berlaku pada GKE di VMware. Oleh karena itu, Anda perlu mengalokasikan alamat IP secara manual untuk resource ingress Gateway Anthos Service Mesh.

Untuk mengonfigurasi alamat IP eksternal, ikuti salah satu bagian di bawah ini, bergantung pada mode load balancing cluster Anda:

Mengonfigurasi mode load balancing terintegrasi

  1. Buka konfigurasi Layanan istio-ingressgateway:

    kubectl edit svc -n istio-system istio-ingressgateway
    

    Konfigurasi untuk Layanan istio-ingressgateway akan terbuka di editor teks default shell Anda.

  2. Dalam file, tambahkan baris berikut di bagian blok spesifikasi (spec):

    loadBalancerIP: <your static external IP address>
    

    Contoh:

    spec:
     loadBalancerIP: 203.0.113.1
    
  3. Simpan file.

Mengonfigurasi mode load balancing manual

Untuk mengekspos layanan jenis NodePort dengan VIP pada load balancer yang dipilih, Anda harus mengetahui nilai nodePort terlebih dahulu:

  1. Lihat konfigurasi Layanan istio-ingressgateway di shell Anda:

    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    

    Setiap port untuk gateway Anthos Service Mesh akan ditampilkan. Output perintahnya mirip dengan berikut ini:

     ...
     ports:
     - name: status-port
       nodePort: 30391
       port: 15020
       protocol: TCP
       targetPort: 15020
     - name: http2
       nodePort: 31380
       port: 80
       protocol: TCP
       targetPort: 80
     - name: https
       nodePort: 31390
       port: 443
       protocol: TCP
       targetPort: 443
     - name: tcp
       nodePort: 31400
       port: 31400
       protocol: TCP
       targetPort: 31400
     - name: https-kiali
       nodePort: 31073
       port: 15029
       protocol: TCP
       targetPort: 15029
     - name: https-prometheus
       nodePort: 30253
       port: 15030
       protocol: TCP
       targetPort: 15030
     - name: https-grafana
       nodePort: 30050
       port: 15031
       protocol: TCP
       targetPort: 15031
     - name: https-tracing
       nodePort: 31204
       port: 15032
       protocol: TCP
       targetPort: 15032
     - name: tls
       nodePort: 30158
       port: 15443
       protocol: TCP
       targetPort: 15443
     ...
    
  2. Ekspos port ini melalui load balancer Anda.

    Misalnya, port layanan bernama http2 memiliki port 80 dan nodePort 31380. Misalnya alamat node untuk cluster pengguna Anda adalah 192.168.0.10, 192.168.0.11, dan 192.168.0.12, dan VIP load balancer Anda adalah 203.0.113.1.

    Konfigurasi load balancer Anda agar traffic yang dikirim ke 203.0.113.1:80 diteruskan ke 192.168.0.10:31380, 192.168.0.11:31380, atau 192.168.0.12:31380. Anda dapat memilih port layanan yang ingin diekspos pada VIP tertentu ini.

Apa langkah selanjutnya?