Azure Kubernetes Service için Istio tabanlı Service Mesh eklentisini dağıtın
Bu makalede, Azure Kubernetes Service (AKS) kümesi için Istio tabanlı hizmet ağı eklentisinin nasıl yükleneceği gösterilmektedir.
Istio ve hizmet ağı eklentisi hakkında daha fazla bilgi için bkz . Azure Kubernetes Service için Istio tabanlı hizmet ağı eklentisi.
Başlamadan önce
Eklenti için Azure CLI 2.57.0 veya sonraki bir sürümün yüklü olması gerekir. Sürümü doğrulamak için komutunu çalıştırabilirsiniz
az --version
. Yüklemek veya yükseltmek için bkz . Azure CLI'yı yükleme.Bir bölgede hangi Istio eklenti düzeltmelerinin kullanılabilir olduğu ve AKS kümesi sürümleriyle uyumluluğu hakkında bilgi edinmek için komutunu
az aks mesh get-revisions
kullanın:az aks mesh get-revisions --location <location> -o table
Herhangi bir
istioctl
CLI komutu kullanmayı seçerseniz, Istio'nun eklenti yüklemesine işaret eden bir bayrak eklemeniz gerektiğini unutmayın:--istioNamespace aks-istio-system
Ortam değişkenlerini belirleme
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Istio eklentisini yükleme
Bu bölüm, Küme oluşturma sırasında Istio eklentisini yükleme veya Azure CLI kullanarak mevcut bir küme için etkinleştirme adımlarını içerir. Eklentiyi Bicep kullanarak yüklemek istiyorsanız Bicep kullanarak Istio hizmet ağı eklentisiyle AKS kümesi yükleme kılavuzuna bakın. AKS kümesi için Bicep kaynak tanımı hakkında daha fazla bilgi edinmek için bkz . Bicep managedCluster başvurusu.
Düzeltme seçimi
Eklentiyi bir düzeltme belirtmeden etkinleştirirseniz, sizin için varsayılan olarak desteklenen bir düzeltme yüklenir.
Bir düzeltme belirtmek için aşağıdaki adımları gerçekleştirin.
az aks mesh get-revisions
Bir bölgedeki farklı AKS kümesi sürümleri için hangi düzeltmelerin kullanılabilir olduğunu denetlemek için komutunu kullanın.- Kullanılabilir düzeltmelere bağlı olarak, mesh yüklemesi için kullandığınız enable komutuna (örn:
--revision asm-1-20
) bayrağını ekleyebilirsiniz--revision asm-X-Y
.
Küme oluşturma sırasında mesh'i yükleme
Kümeyi oluştururken Istio eklentisini yüklemek için veya--enable-asm
parametresini --enable-azure-service-mesh
kullanın.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Mevcut küme için mesh yükleme
Aşağıdaki örnek, mevcut aks kümesi için Istio eklentisini etkinleştirir:
Önemli
Bir OSM eklentisi zaten kümenizdeyse mevcut bir kümede Istio eklentisini etkinleştiremezsiniz. Istio eklentisini yüklemeden önce OSM eklentisini kaldırın. Daha fazla bilgi için bkz . AKS kümenizden OSM eklentisini kaldırma. Istio eklentisi yalnızca sürüm >= 1.23'ün AKS kümelerinde etkinleştirilebilir.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Yüklemenin başarılı olduğunu doğrulama
Kümenizde Istio eklentisinin yüklü olduğunu doğrulamak için aşağıdaki komutu çalıştırın:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Çıktının gösterildiğini Istio
onaylayın.
AKS kümenizin kimlik bilgileri için kullanın az aks get-credentials
:
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
(Istio denetim düzlemi) podlarının başarıyla çalıştığını doğrulamak istiod
için kullanınkubectl
:
kubectl get pods -n aks-istio-system
Podun durumunun istiod
Running
olduğunu onaylayın. Örneğin:
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
Sepet eklemeyi etkinleştirme
Sepetleri yeni podlara otomatik olarak yüklemek için, ad alanlarınıza şu anda yüklü olan denetim düzlemi düzeltmesine karşılık gelen düzeltme etiketiyle açıklama eklemeniz gerekir.
Hangi düzeltmenin yüklü olduğundan emin değilseniz şunu kullanın:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Düzeltme etiketini uygulayın:
kubectl label namespace default istio.io/rev=asm-X-Y
Önemli
Varsayılan istio-injection=enabled
etiketleme çalışmaz. Kontrol düzlemi düzeltmesi (örn: istio.io/rev=asm-1-18
) ile eşleşen açık sürüm oluşturma gereklidir.
kullanarak istioctl kube-inject
sepet elle eklenmesi için () ve revision
(-i
-r
) için istioNamespace
ek parametreler belirtmeniz gerekir. Örneğin:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Sepet enjeksiyonu tetikleme
Test için sağlanan örnek uygulamayı dağıtabilir veya mevcut iş yükleri için sepet ekleme işlemini tetikleyebilirsiniz.
Mevcut uygulamalar
Mesh'e eklenecek mevcut uygulamalarınız varsa, ad alanlarının önceki adımda olduğu gibi etiketlendiğinden emin olun ve sepet ekleme işlemini tetikmek için dağıtımlarını yeniden başlatın:
kubectl rollout restart -n <namespace> <deployment name>
Sepet ekleme işleminin başarılı olduğunu doğrulamak için tüm kapsayıcıların hazır olduğundan emin olun ve çıktıdaki kapsayıcıyı istio-proxy
kubectl describe
arayın, örneğin:
kubectl describe pod -n namespace <pod name>
Kapsayıcı istio-proxy
, Envoy sepettir. Uygulamanız artık veri düzleminin bir parçasıdır.
Örnek uygulama dağıtma
Örnek uygulamayı kümeye dağıtmak için kullanın kubectl apply
:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Not
Giden İnternet erişimi için HTTP ara sunucusu kullanan kümelerin bir Hizmet Girişi ayarlaması gerekir. Kurulum yönergeleri için bkz. Azure Kubernetes Service'te HTTP proxy desteği
Kümenizde çeşitli dağıtımların ve hizmetlerin oluşturulduğunu onaylayın. Örneğin:
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
Hizmetlerin başarıyla oluşturulduğunu doğrulamak için kullanın kubectl get services
:
kubectl get services
Aşağıdaki hizmetlerin dağıtıldığını onaylayın:
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
Sütunda iki kapsayıcı olan tüm podların Running
durumunun READY
olduğunu onaylayın. Her poda eklenen ikinci kapsayıcı (istio-proxy
), Istio tarafından eklenen Envoy sepet ve diğeri uygulama kapsayıcısıdır.
Bu örnek uygulamayı girişe karşı test etmek için sonraki adımlara göz atın.
Kaynakları silme
Örnek uygulamayı silmek için kullanın kubectl delete
:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml
Kümenizde Istio girişini etkinleştirmeyi düşünmüyorsanız ve Istio eklentisini devre dışı bırakmak istiyorsanız aşağıdaki komutu çalıştırın:
az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Dikkat
Hizmet ağı eklentisini devre dışı bırakmak, Istio denetim düzlemini kümeden tamamen kaldırır.
Istio CustomResourceDefintion
(CRD) varsayılan olarak silinmez. Bunları temizlemek için şunu kullanın:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
Kümenizi ve ilişkili kaynakları silmek için kullanın az group delete
:
az group delete --name ${RESOURCE_GROUP} --yes --no-wait
Sonraki adımlar
Azure Kubernetes Service