Menginstal Anthos Service Mesh di GKE di AWS

Panduan ini menjelaskan cara menginstal Anthos Service Mesh versi 1.10.6-asm.2 di GKE di AWS.

Dengan Anthos Service Mesh, Istio Ingress Gateway sudah diinstal sebelumnya. Namun, jika lebih suka menggunakan pengontrol ingress, Anda dapat menggunakan Anthos Service Mesh untuk menyiapkan resource Kubernetes Ingress. Panduan ini menunjukkan cara menginstal Anthos Service Mesh dan menyiapkan resource Ingress Kubernetes secara opsional.

Sebelum memulai

Sebelum memulai penginstalan Anthos Service Mesh, pastikan Anda telah melakukan tugas-tugas berikut:

Persyaratan

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

  • Tinjau Penamaan port layanan sebelum men-deploy workload.

  • Pastikan versi cluster Anda tercantum di Platform yang didukung.

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

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

    Perintah tersebut membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.10.6-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. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.

    cd istio-1.10.6-asm.2

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.10.6-asm.2-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.10.6-asm.2-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.10.6-asm.2-osx.tar.gz.1.sig istio-1.10.6-asm.2-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.10.6-asm.2-osx.tar.gz

    Perintah tersebut membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.10.6-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. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.

    cd istio-1.10.6-asm.2

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.10.6-asm.2-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.10.6-asm.2-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.10.6-asm.2-win.zip.1.sig istio-1.10.6-asm.2-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.10.6-asm.2-win.zip

    Perintah tersebut membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.10.6-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. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.

    cd istio-1.10.6-asm.2

Menginstal Anthos Service Mesh

Bagian ini menjelaskan cara menginstal Anthos Service Mesh di cluster pengguna Anda, yang mengaktifkan fitur Default yang didukung yang tercantum di halaman Fitur yang didukung untuk profil asm-multicloud. Anda dapat memilih untuk mengaktifkan Ingress untuk subnet publik atau subnet pribadi.

Publik

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

  2. 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.

  3. Instal Anthos Service Mesh:

    bin/istioctl install \
      -f manifests/profiles/asm-multicloud.yaml \
      --set revision=asm-1106-2
    

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

  4. 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.

Pribadi

Pada langkah berikut, Anda akan menambahkan anotasi service.beta.kubernetes.io/aws-load-balancer-internal ke semua layanan yang dibuat Anthos Service Mesh. Jika anotasi ini ada, GKE di AWS akan membuat layanan Ingress pribadi.

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

  2. Simpan YAML berikut ke file bernama istio-operator-internal-lb.yaml:

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      components:
        ingressGateways:
        - enabled: true
          k8s:
            serviceAnnotations:
              service.beta.kubernetes.io/aws-load-balancer-internal: "true"
          name: istio-ingressgateway
    
  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 manifests/profiles/asm-multicloud.yaml \
     --set revision=asm-1106-2 \
     -f istio-operator-internal-lb.yaml
    

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

  4. 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.

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-74cc894bfd-786rg     1/1     Running     0          7m19s
istiod-78cdbbbdb-d7tps                    1/1     Running     0          7m36s
promsd-576b8db4d6-lqf64                   2/2     Running     1          7m19s

Anda telah menginstal bidang kontrol Anthos Service Mesh dengan Ingress Gateway bawaan. Jika hanya memerlukan fungsi ingress menggunakan pengontrol Ingress, Anda siap untuk menginstal aplikasi di cluster. Lihat Membuat contoh Deployment, yang menunjukkan cara mengonfigurasi resource Ingress.

Jika Anda ingin memanfaatkan semua fitur yang disediakan Anthos Service Mesh, lanjutkan ke fase penginstalan berikutnya untuk memasukkan proxy file bantuan dan memulai ulang workload Anda.

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-1106-2-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-1106-2,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-1106-2-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-1106-2,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-1106-2.

  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
    

Mengakses Gateway Ingress

Anthos Service Mesh menyediakan Ingress Gateway yang telah dikonfigurasi sebelumnya, istio-ingressgateway, yang dapat digunakan 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 atau nama host dan port load balancer eksternal yang dikonfigurasi istio-ingressgateway untuk digunakan.

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

Untuk mendapatkan alamat eksternal istio-ingressgateway:

  1. Buat variabel lingkungan INGRESS_HOST:

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

    export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
    
  3. Untuk menguji, deploy aplikasi contoh, seperti Online Boutique.

  4. Untuk mengakses aplikasi di browser Anda, gunakan nilai $INGRESS_HOST:$INGRESS_PORT di URL.

Langkah selanjutnya