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 menginstalgkectl
, 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.
- 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
Menyetel variabel lingkungan
Dapatkan nama konteks untuk cluster dengan menggunakan nilai di kolom
NAME
dalam output perintah ini:kubectl config get-contexts
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
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
-
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
-
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
-
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 direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
cd istio-1.8.6-asm.8
-
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
-
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
-
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 direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
cd istio-1.8.6-asm.8
-
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
-
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
-
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 direktoribin
. - Profil konfigurasi Anthos Service Mesh berada di direktori
manifests/profiles
.
- Contoh aplikasi di direktori
-
Pastikan Anda berada di direktori utama penginstalan Anthos Service Mesh.
cd istio-1.8.6-asm.8
Linux
Mac OS
Windows
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.
Buat direktori untuk sertifikat dan kunci:
mkdir -p certs && \ pushd certs
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
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.
Buat
cacerts
rahasia yang mencakup semua file inputca-cert.pem
,ca- key.pem
,root-cert.pem
, dancert-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.
Kembali ke direktori sebelumnya:
popd
Menginstal Anthos Service Mesh
Buat variabel lingkungan untuk project ID:
export PROJECT_ID=YOUR_PROJECT_ID
Buat variabel lingkungan untuk nomor project:
export PROJECT_NUMBER=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)")
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}"
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
Jika perlu, ubah ke direktori
istio-1.8.6-asm.8
. Klienistioctl
bergantung pada versi. Pastikan Anda menggunakan versi ini di direktoriistio-1.8.6-asm.8/bin
.Terapkan konfigurasi ke cluster:
bin/istioctl install --context="${CTX_CLUSTER1}" -f cluster.yaml
Menyetel jaringan default
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.
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
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:
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 revisiistiod
, yang mengikuti awalanistio.io/rev=
. Dalam contoh ini, nilainya adalahasm-186-8
.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
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.