Menginstal Anthos Service Mesh secara lokal

Panduan ini menjelaskan cara melakukan penginstalan bersih Anthos Service Mesh versi 1.8.6-asm.8 di GKE pada VMware. Jika Anda sudah menginstal Anthos Service Mesh versi sebelumnya, lihat Mengupgrade Anthos Service Mesh GKE di VMware. Penginstalan ini akan mengaktifkan fitur yang didukung di cluster Anda. Panduan ini menyebut cluster sebagai cluster1, tetapi Anda dapat mengulangi langkah-langkah ini untuk menyiapkan banyak cluster.

Tentang komponen bidang kontrol

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

  • Certificate authority (Citadel) Anthos Service Mesh 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 mengontrol proses penginstalan. 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
    

Menyetel variabel lingkungan

  1. Dapatkan nama konteks untuk cluster dengan menggunakan nilai di kolom NAME dalam output perintah ini:

    kubectl config get-contexts
  2. Tetapkan variabel lingkungan ke nama konteks cluster, yang akan digunakan panduan ini dalam banyak langkah nanti:

    export CTX_CLUSTER1=CLUSTER1_CONTEXT_NAME

Memberikan izin admin cluster

  1. 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 --context="${CTX_CLUSTER1}" 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.8.6-asm.8-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.8.6-asm.8-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.8.6-asm.8-linux-amd64.tar.gz.1.sig istio-1.8.6-asm.8-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.8.6-asm.8-linux-amd64.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.8.6-asm.8 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.8.6-asm.8
  5. Mac OS

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

    Output yang diharapkan adalah: Verified OK

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

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

  9. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
    cd istio-1.8.6-asm.8
  10. Windows

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

    Output yang diharapkan adalah: Verified OK

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

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

  14. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
    cd istio-1.8.6-asm.8

Mengonfigurasi certificate authority

Bagian ini menjelaskan cara membuat sertifikat dan kunci yang digunakan Anthos Service Mesh lokal untuk menandatangani workload Anda.

Untuk keamanan terbaik, sebaiknya pertahankan root CA offline dan gunakan CA subordinat untuk menerbitkan CA bagi setiap cluster. Untuk informasi selengkapnya, lihat Mencolokkan Sertifikat CA. Dalam konfigurasi ini, semua beban kerja di mesh layanan menggunakan root certificate authority (CA) yang sama. Setiap CA Anthos Service Mesh menggunakan kunci dan sertifikat penandatanganan CA perantara, yang ditandatangani oleh root CA. Jika beberapa CA ada dalam sebuah mesh, hal ini akan menetapkan hierarki kepercayaan di antara CA. Anda dapat mengulangi langkah-langkah ini untuk menyediakan sertifikat dan kunci untuk sejumlah certificate authority.

  1. Buat direktori untuk sertifikat dan kunci:

    mkdir -p certs && \
    pushd certs
  2. Buat root certificate dan kunci:

    make -f ../tools/certs/Makefile.selfsigned.mk root-ca
    

    Tindakan ini menghasilkan file berikut:

    • root-cert.pem: root certificate
    • root-key.pem: kunci root
    • root-ca.conf: konfigurasi untuk openssl guna membuat root certificate
    • root-cert.csr: CSR untuk root certificate
  3. Buat kunci dan sertifikat perantara:

    make -f ../tools/certs/Makefile.selfsigned.mk cluster1-cacerts

    Tindakan ini menghasilkan file ini dalam direktori bernama cluster1:

    • ca-cert.pem: sertifikat perantara
    • ca-key.pem: kunci perantara
    • cert-chain.pem: rantai sertifikat yang digunakan istiod
    • root-cert.pem: root certificate

    Jika Anda melakukan langkah-langkah ini menggunakan komputer offline, salin direktori yang dihasilkan ke komputer yang memiliki akses ke cluster.

  4. Buat cacerts rahasia yang mencakup semua file input ca-cert.pem, ca- key.pem, root-cert.pem, dan cert-chain.pem:

    kubectl --context="${CTX_CLUSTER1}" create namespace istio-system
    kubectl --context="${CTX_CLUSTER1}" create secret generic cacerts -n istio-system \
      --from-file=cluster1/ca-cert.pem \
      --from-file=cluster1/ca-key.pem \
      --from-file=cluster1/root-cert.pem \
      --from-file=cluster1/cert-chain.pem

    Anthos Service Mesh lokal akan mendeteksi keberadaan sertifikat/kunci ini dan menggunakannya selama proses penginstalan pada langkah-langkah berikutnya.

  5. Kembali ke direktori sebelumnya:

    popd

Menginstal Anthos Service Mesh

  1. Buat variabel lingkungan untuk project ID:

    export PROJECT_ID=YOUR_PROJECT_ID
  2. Buat variabel lingkungan untuk nomor project:

    export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
  3. Buat variabel lingkungan untuk ID mesh. String ini dapat berupa string apa pun, tetapi harus dalam format yang konsisten di antara cluster Anda.

    export MESH_ID="proj-${PROJECT_NUMBER}"
  4. Buat konfigurasi untuk bidang kontrol cluster, yang akan 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.

    Pada contoh berikut, gunakan MESH_ID yang ditentukan pada langkah sebelumnya.

    cat <<EOF > cluster.yaml
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      profile: asm-multicloud
      revision: asm-186-8
      values:
        global:
          meshID: MESH_ID
          multiCluster:
            clusterName: CLUSTER_NAME
          network: NETWORK_ID
    EOF
    
  5. Jika perlu, ubah ke direktori istio-1.8.6-asm.8. Klien istioctl bergantung pada versi. Pastikan Anda menggunakan versi ini di direktori istio-1.8.6-asm.8/bin.

  6. Terapkan konfigurasi ke cluster:

    bin/istioctl install --context="${CTX_CLUSTER1}" -f cluster.yaml
    

Menyetel jaringan default

  1. Tetapkan jaringan default pada namespace istio-system.

    Pada contoh berikut, NETWORK_ID dapat berupa string apa pun yang mengidentifikasi jaringan cluster. Dalam konfigurasi lokal ini, setiap cluster berada di jaringannya sendiri, sehingga setiap cluster harus memiliki nilai yang berbeda. NETWORK_ID memiliki batasan string yang sama seperti label Kubernetes yang dijelaskan dalam Sintaksis dan himpunan karakter.

     kubectl --context="${CTX_CLUSTER1}" label \
    namespace istio-system topology.istio.io/network=NETWORK_ID

Mengonfigurasi webhook yang memvalidasi

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

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

    cat <<EOF > istiod-service.yaml
    apiVersion: v1
    kind: Service
    metadata:
     name: istiod
     namespace: istio-system
     labels:
       istio.io/rev: asm-186-8
       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-186-8
    EOF
    
  2. Konfigurasikan webhook yang memvalidasi agar dapat menemukan layanan istiod dengan label revisi:

    kubectl --context="${CTX_CLUSTER1}" 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 --context="${CTX_CLUSTER1}" 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.

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

  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
    

Apa langkah selanjutnya?

Jika Anda berencana menggunakan beberapa cluster untuk mesh layanan lokal, lihat Menginstal Anthos Service Mesh secara lokal di beberapa cluster dan jaringan.

Jika tidak, langkah Anda selanjutnya adalah Mengonfigurasi alamat IP eksternal.