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 menginstalgkectl
, 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.
- Alat command line
curl
. - Google Cloud CLI.
Setelah menginstal Google Cloud CLI:
Lakukan autentikasi dengan Google Cloud CLI:
gcloud auth login
Update komponen:
gcloud components update
Instal
kubectl
:gcloud components install kubectl
Jika Anda ingin men-deploy dan menguji penginstalan dengan aplikasi contoh Online Boutique, instal
kpt
:gcloud components install kpt
Alihkan konteks ke cluster pengguna Anda (jika perlu):
kubectl config use-context CLUSTER_NAME
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
-
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
-
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
-
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 direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
install/kubernetes/operator/profiles
.
- Contoh aplikasi di direktori
-
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
-
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
-
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 direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
install/kubernetes/operator/profiles
.
- Contoh aplikasi di direktori
-
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
-
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
-
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 direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
install/kubernetes/operator/profiles
.
- Contoh aplikasi di direktori
-
Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
cd istio-1.7.8-asm.10
-
Untuk memudahkan, tambahkan alat di direktori
/bin
ke PATH Anda:export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
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
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 formatistio.io/rev=asm-178-10
keistiod
. Label revisi digunakan oleh webhook injektor sidecar otomatis untuk mengaitkan file bantuan yang dimasukkan dengan revisiistiod
tertentu. Guna mengaktifkan injeksi otomatis file bantuan untuk namespace, Anda harus melabelinya dengan revisi yang cocok dengan label padaistiod
.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:
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 revisiistiod
, yang mengikuti awalanistio.io/rev=
. Dalam contoh ini, nilainya adalahasm-178-10
.Terapkan label revisi dan hapus label
istio-injection
jika ada. Dalam perintah berikut,NAMESPACE
adalah nama namespace tempat Anda ingin mengaktifkan injeksi otomatis, danREVISION
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 labelistio-injection
, yang akan Anda harapkan dalam penginstalan baru Anthos Service Mesh atau deployment baru. Karena injeksi otomatis gagal jika namespace memilikiistio-injection
dan label revisi, semua perintahkubectl label
dalam dokumentasi Anthos Service Mesh mencakup penghapusan labelistio-injection
.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
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
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.Dalam file, tambahkan baris berikut di bagian blok spesifikasi (
spec
):loadBalancerIP: <your static external IP address>
Contoh:
spec: loadBalancerIP: 203.0.113.1
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:
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 ...
Ekspos port ini melalui load balancer Anda.
Misalnya, port layanan bernama
http2
memilikiport
80 dannodePort
31380. Misalnya alamat node untuk cluster pengguna Anda adalah192.168.0.10
,192.168.0.11
, dan192.168.0.12
, dan VIP load balancer Anda adalah203.0.113.1
.Konfigurasi load balancer Anda agar traffic yang dikirim ke
203.0.113.1:80
diteruskan ke192.168.0.10:31380
,192.168.0.11:31380
, atau192.168.0.12:31380
. Anda dapat memilih port layanan yang ingin diekspos pada VIP tertentu ini.