Menyebarkan add-on mesh layanan berbasis Istio untuk Azure Kubernetes Service
Artikel ini menunjukkan cara menginstal add-on mesh layanan berbasis Istio untuk kluster Azure Kubernetes Service (AKS).
Untuk informasi selengkapnya tentang Istio dan add-on mesh layanan, lihat Add-on mesh layanan berbasis Istio untuk Azure Kubernetes Service.
Add-on memerlukan Azure CLI versi 2.57.0 atau yang lebih baru terinstal. Anda dapat menjalankan
az --version
untuk memverifikasi versi. Untuk memasang atau meningkatkan, lihat Pasang Azure CLI.Untuk menemukan informasi tentang revisi add-on Istio mana yang tersedia di suatu wilayah dan kompatibilitasnya dengan versi kluster AKS, gunakan perintah
az aks mesh get-revisions
:az aks mesh get-revisions --location <location> -o table
Perhatikan bahwa jika Anda memilih untuk menggunakan perintah CLI apa pun
istioctl
, Anda harus menyertakan bendera untuk menunjuk ke penginstalan add-on Istio:--istioNamespace aks-istio-system
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Bagian ini mencakup langkah-langkah untuk menginstal add-on Istio selama pembuatan kluster atau mengaktifkan untuk kluster yang ada menggunakan Azure CLI. Jika Anda ingin menginstal add-on menggunakan Bicep, lihat panduan untuk menginstal kluster AKS dengan add-on jala layanan Istio menggunakan Bicep. Untuk mempelajari selengkapnya tentang definisi sumber daya Bicep untuk kluster AKS, lihat Referensi Bicep managedCluster.
Jika Anda mengaktifkan add-on tanpa menentukan revisi, revisi default yang didukung diinstal untuk Anda.
Untuk menentukan revisi, lakukan langkah-langkah berikut.
az aks mesh get-revisions
Gunakan perintah untuk memeriksa revisi mana yang tersedia untuk versi kluster AKS yang berbeda di suatu wilayah.- Berdasarkan revisi yang tersedia, Anda dapat menyertakan
--revision asm-X-Y
bendera (misalnya:--revision asm-1-20
) dalam perintah aktifkan yang Anda gunakan untuk penginstalan jala.
Untuk menginstal add-on Istio saat membuat kluster, gunakan --enable-azure-service-mesh
parameter atau--enable-asm
.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Contoh berikut mengaktifkan add-on Istio untuk kluster AKS yang ada:
Penting
Anda tidak dapat mengaktifkan add-on Istio pada kluster yang ada jika add-on OSM sudah ada di kluster Anda. Hapus instalan add-on OSM sebelum menginstal add-on Istio. Untuk informasi selengkapnya, lihat menghapus instalan add-on OSM dari kluster AKS Anda. Add-on Istio hanya dapat diaktifkan pada kluster AKS versi >= 1.23.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Untuk memverifikasi add-on Istio diinstal pada kluster Anda, jalankan perintah berikut:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Konfirmasi output menunjukkan Istio
.
Gunakan az aks get-credentials
kredensial untuk kluster AKS Anda:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Gunakan kubectl
untuk memverifikasi bahwa istiod
pod (sarana kontrol Istio) berhasil berjalan:
kubectl get pods -n aks-istio-system
Konfirmasikan pod istiod
memiliki status Running
. Contohnya:
NAME READY STATUS RESTARTS AGE
istiod-asm-1-18-74f7f7c46c-xfdtl 1/1 Running 0 2m
istiod-asm-1-18-74f7f7c46c-4nt2v 1/1 Running 0 2m
Untuk memasang sidecar secara otomatis ke pod baru, Anda perlu membuat anotasi namespace dengan label revisi yang sesuai dengan revisi sarana kontrol yang saat ini diinstal.
Jika Anda tidak yakin revisi mana yang diinstal, gunakan:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Terapkan label revisi:
kubectl label namespace default istio.io/rev=asm-X-Y
Penting
Pelabelan default istio-injection=enabled
tidak berfungsi. Penerapan versi eksplisit yang cocok dengan revisi sarana kontrol (misalnya: istio.io/rev=asm-1-18
) diperlukan.
Untuk injeksi manual sidecar menggunakan istioctl kube-inject
, Anda perlu menentukan parameter tambahan untuk istioNamespace
(-i
) dan revision
(-r
). Contohnya:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Anda dapat menyebarkan aplikasi sampel yang disediakan untuk pengujian, atau memicu injeksi sidecar untuk beban kerja yang ada.
Jika Anda memiliki aplikasi yang ada untuk ditambahkan ke jala, pastikan namespace layanan mereka diberi label seperti pada langkah sebelumnya, lalu mulai ulang penyebarannya untuk memicu injeksi sespan:
kubectl rollout restart -n <namespace> <deployment name>
Verifikasi bahwa injeksi sidecar berhasil dengan memastikan semua kontainer siap dan mencari istio-proxy
kontainer dalam kubectl describe
output, misalnya:
kubectl describe pod -n namespace <pod name>
Kontainer istio-proxy
adalah sidecar Envoy. Aplikasi Anda sekarang menjadi bagian dari bidang data.
Gunakan kubectl apply
untuk menyebarkan aplikasi sampel pada kluster:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Catatan
Kluster yang menggunakan proksi HTTP untuk akses internet keluar perlu menyiapkan Entri Layanan. Untuk petunjuk penyiapan, lihat dukungan proksi HTTP di Azure Kubernetes Service
Konfirmasikan beberapa penyebaran dan layanan dibuat di kluster Anda. Contohnya:
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
Gunakan kubectl get services
untuk memverifikasi bahwa layanan berhasil dibuat:
kubectl get services
Konfirmasikan layanan berikut disebarkan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.0.180.193 <none> 9080/TCP 87s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 15m
productpage ClusterIP 10.0.112.238 <none> 9080/TCP 86s
ratings ClusterIP 10.0.15.201 <none> 9080/TCP 86s
reviews ClusterIP 10.0.73.95 <none> 9080/TCP 86s
kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-558b8b4b76-2llld 2/2 Running 0 2m41s
productpage-v1-6987489c74-lpkgl 2/2 Running 0 2m40s
ratings-v1-7dc98c7588-vzftc 2/2 Running 0 2m41s
reviews-v1-7f99cc4496-gdxfn 2/2 Running 0 2m41s
reviews-v2-7d79d5bd5d-8zzqd 2/2 Running 0 2m41s
reviews-v3-7dbcdcbc56-m8dph 2/2 Running 0 2m41s
Konfirmasikan bahwa semua pod memiliki status Running
dengan dua kontainer di READY
kolom . Kontainer kedua (istio-proxy
) yang ditambahkan ke setiap pod adalah sidecar Envoy yang disuntikkan oleh Istio, dan yang lainnya adalah kontainer aplikasi.
Untuk menguji aplikasi sampel ini terhadap ingress, lihat langkah berikutnya.
Gunakan kubectl delete
untuk menghapus aplikasi sampel:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Jika Anda tidak bermaksud mengaktifkan ingress Istio pada kluster Anda dan ingin menonaktifkan add-on Istio, jalankan perintah berikut:
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Perhatian
Menonaktifkan addon jala layanan akan sepenuhnya menghapus sarana kontrol Istio dari kluster.
Istio CustomResourceDefintion
(CRD) tidak dihapus secara default. Untuk membersihkannya, gunakan:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
Gunakan az group delete
untuk menghapus kluster Anda dan sumber daya terkait:
az group delete --name ${RESOURCE_GROUP} --yes --no-wait
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: