Baca dalam bahasa Inggris

Bagikan melalui


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.

Sebelum Anda mulai

  • 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

Atur variabel lingkungan

export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>

Pasang add-on Istio

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.

Pemilihan revisi

Jika Anda mengaktifkan add-on tanpa menentukan revisi, revisi default yang didukung diinstal untuk Anda.

Untuk menentukan revisi, lakukan langkah-langkah berikut.

  1. az aks mesh get-revisions Gunakan perintah untuk memeriksa revisi mana yang tersedia untuk versi kluster AKS yang berbeda di suatu wilayah.
  2. 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.

Menginstal jala selama pembuatan kluster

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    

Menginstal jala untuk kluster yang ada

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}

Verifikasi keberhasilan penginstalan

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

Aktifkan injeksi sespan

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

Memicu injeksi sespan

Anda dapat menyebarkan aplikasi sampel yang disediakan untuk pengujian, atau memicu injeksi sidecar untuk beban kerja yang ada.

Aplikasi 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.

Sebarkan aplikasi sampel

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.

Menghapus sumber daya

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

Langkah berikutnya