Menginstal Anthos Service Mesh secara lokal

Anthos Service Mesh adalah framework yang kompatibel dengan Istio untuk menghubungkan, memantau, dan mengamankan layanan yang berjalan di Google Kubernetes Engine (GKE) dan GKE di VMware. Solusi ini memungkinkan Anda membuat jaringan layanan yang di-deploy dengan load balancing, autentikasi layanan ke layanan, pemantauan, dan lainnya, tanpa memerlukan perubahan pada kode layanan. Anthos Service Mesh secara otomatis memasukkan proxy file bantuan untuk setiap pod aplikasi Anda. Proxy file bantuan mencegat semua traffic jaringan ke dan dari pod. Anthos Service Mesh juga mengonfigurasi gateway masuk untuk mengelola traffic masuk ke mesh. Anda dapat menggunakan Istio API open source untuk mengonfigurasi kebijakan yang diterapkan pada file bantuan dan gateway.

Panduan ini menjelaskan cara melakukan penginstalan bersih Anthos Service Mesh versi 1.4.10-asm.18 di GKE pada VMware. Jika Anda sudah menginstal Anthos Service Mesh versi sebelumnya, lihat Mengupgrade Anthos Service Mesh di GKE di VMware.

Penginstalan ini akan mengaktifkan fitur Istio inti yang didukung di GKE di VMware. Perhatikan bahwa komponen yang dikelola Anthos Service Mesh saat ini tidak didukung di GKE di VMware.

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 dan batasan berikut sebelum memulai penyiapan.

Persyaratan

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

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

  • Tinjau Persyaratan untuk Pod dan Layanan sebelum men-deploy workload.

  • Pastikan versi cluster Anda tercantum di Lingkungan yang didukung. Untuk memeriksa versi cluster Anda:

    gkectl version
    

    Output seperti berikut akan ditampilkan:

    1.2.0-gke.6 (git-0912663b0)
    

Pembatasan

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

Menyiapkan lingkungan Anda

Di komputer lokal, instal dan inisialisasi Google Cloud CLI.

Jika Anda sudah menginstal gcloud CLI:

  1. Lakukan autentikasi dengan gcloud CLI:

    gcloud auth login
    
  2. Update komponen:

    gcloud components update
    
  3. Instal kubectl:

    gcloud components install kubectl
    
  4. Dapatkan project ID project tempat cluster dibuat:

    gcloud

    gcloud projects list

    Konsol

    1. Di konsol Google Cloud, buka halaman Dasbor:

      Buka halaman Dasbor

    2. Klik menu drop-down Select from di bagian atas halaman. Di jendela Select from yang muncul, pilih project Anda. Project ID ditampilkan di kartu Project info di Dasbor project.

  5. Tetapkan project ID default untuk Google Cloud CLI:

    gcloud config set project PROJECT_ID

Menetapkan kredensial dan izin

Sebelum melanjutkan, pastikan Anda telah mengaktifkan semua API yang diperlukan. Jika Anda ragu, tidak ada salahnya menjalankan kembali perintah gcloud services enable.

  1. Pastikan Anda memiliki kubectl untuk cluster pengguna tempat Anda ingin menginstal Anthos Service Mesh. Perlu diperhatikan bahwa Anda hanya dapat menginstal Anthos Service Mesh di cluster pengguna, bukan di cluster admin.
  2. Berikan izin admin cluster kepada pengguna saat ini. 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="$(gcloud config get-value core/account)"

    Jika melihat error "cluster-admin-binding" already exists, Anda dapat mengabaikannya dengan aman dan melanjutkan dengan binding admin cluster yang ada.

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.4.10-asm.18-linux.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.4.10-asm.18-linux.tar.gz.1.sig
    openssl dgst -verify - -signature istio-1.4.10-asm.18-linux.tar.gz.1.sig istio-1.4.10-asm.18-linux.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Output yang diharapkan adalah: Verified OK

  3. Mac OS

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

    Output yang diharapkan adalah: Verified OK

  6. Windows

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

    Output yang diharapkan adalah: Verified OK

  9. Ekstrak konten file ke lokasi mana saja di sistem file Anda. Misalnya, untuk mengekstrak konten ke direktori kerja saat ini:
    tar xzf istio-1.4.10-asm.18-linux.tar.gz

    Perintah ini membuat direktori penginstalan di direktori kerja saat ini bernama istio-1.4.10-asm.18 yang berisi:

    • Aplikasi contoh di samples
    • Alat berikut di direktori bin:
      • istioctl: Anda menggunakan istioctl untuk menginstal Anthos Service Mesh.
      • asmctl: Anda menggunakan asmctl untuk membantu memvalidasi konfigurasi keamanan setelah menginstal Anthos Service Mesh. (Saat ini, asmctl tidak didukung di GKE di VMware.)

  10. Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
    cd istio-1.4.10-asm.18
  11. 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

Menginstal Anthos Service Mesh

Bagian ini menjelaskan cara menginstal Anthos Service Mesh dan mengaktifkan fitur Default yang didukung yang tercantum di halaman Fitur yang didukung. Untuk mengetahui informasi tentang cara mengaktifkan fitur Opsional yang didukung, lihat Mengaktifkan fitur opsional.

Untuk menginstal Anthos Service Mesh:

Pilih salah satu perintah berikut untuk mengonfigurasi Anthos Service Mesh dalam mode autentikasi PERMISSIVE mutual TLS (mTLS) atau mode mTLS STRICT.

mTLS PERMISSIF

istioctl manifest apply --set profile=asm-onprem

mTLS KETAT

istioctl manifest apply --set profile=asm-onprem \
  --set values.global.mtls.enabled=true

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-citadel-85f4d775cd-dmpj2            1/1     Running     0          18m
istio-galley-5c65896ff7-m2pls             2/2     Running     0          18m
istio-ingressgateway-587cd459f-q6hqt      2/2     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

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.

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.

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.

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:

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.

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?