Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.
Tip
Azure portalında Aks kümelerinize Istio dağıtımına yardımcı olması için Azure Copilot'ı kullanabilirsiniz. Daha fazla bilgi için bkz. Azure Copilot kullanarak AKS kümeleriyle verimli çalışma.
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 BUNLARıN AKS standart ve LTS kümesi sürümleriyle uyumluluğu hakkında bilgi edinmek için komutunu
az aks mesh get-revisionskullanın:az aks mesh get-revisions --location <location> -o tableIstio eklentisinin AKS ile uyumluluğu hakkında daha fazla bilgi için uyumluluk destek ilkesine bakın.
Bazı durumlarda, önceki yüklemelerdeki Istio CRD'leri kaldırma işleminde otomatik olarak temizlenmeyebilir. Mevcut Istio CRD'lerinin silindiğinden emin olun:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')ClusterRoles, MutatingWebhookConfigurations ve ValidatingWebhookConfigurations gibi Istio'nun kendi kendine yönetilen yüklemelerinden de diğer kaynakların temizlenmesi önerilir.
Herhangi bir
istioctlCLI 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 Bicep managedCluster referansı bölümüne bakın.
Note
Belirli düğümlerde istiod zamanlanmış ve giriş/çıkış ağ geçidi podlarına ihtiyacınız varsa AKS sistem düğümlerini veya azureservicemesh/istio.replica.preferred düğüm etiketini kullanabilirsiniz.
Giriş, çıkış ve ağ geçidi podlarının, 100 etiketli düğümler için azureservicemesh/istio.replica.preferred: true ağırlıklı bir tercihe ve AKS sistem düğümleri (kubernetes.azure.com/mode: system ile etiketli) için 50 ağırlıklı bir tercihe sahip düğüm yakınlıkları vardır. Bu yapılandırma, azureservicemesh/istio.replica.preferred: true etiketi bulunamazsa veya bu düğümlere zamanlama yapılamıyorsa podların AKS sistem düğümlerinde zamanlanacağı anlamına gelir.
asm-1-30 öncesindeki düzeltmeler için bu ağırlıklar tersine çevrilir: AKS sistem düğümleri için 100 ve 50 düğümleri için azureservicemesh/istio.replica.preferred: true.
istiod (discovery) dağıtımı, tüm revizyonlarda AKS sistem düğümleri için 100 ve azureservicemesh/istio.replica.preferred: true ile etiketlenmiş düğümler için 50 ağırlıklı tercihe sahiptir.
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-revisionsBir bölgedeki farklı AKS kümesi sürümleri için hangi düzeltmelerin kullanılabilir olduğunu denetlemek için komutunu kullanın. - Mevcut revizyonlara göre, mesh kurulumunda kullandığınız etkinleştirme komutuna
--revision asm-X-Y(örn:--revision asm-1-24) bayrağını ekleyebilirsiniz.
Küme oluşturma sırasında mesh'i yükleme
Kümeyi oluştururken Istio eklentisini yüklemek için --enable-azure-service-mesh veya --enable-asm parametresini 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 kurulumu
Aşağıdaki örnek, mevcut aks kümesi için Istio eklentisini etkinleştirir:
Important
Açık Service Mesh (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 Istio gösterildiğini onaylayın.
AKS kümenizin kimlik bilgilerini almak için kullanın az aks get-credentials :
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
kubectl kullanarak istiod (Istio denetim düzlemi) podlarının başarıyla çalıştığını doğrulayın:
kubectl get pods -n aks-istio-system
istiod podunun durumunun Running olduğunu onaylayın. Örneğin:
NAME READY STATUS RESTARTS AGE
istiod-asm-1-24-74f7f7c46c-xfdtl 1/1 Running 0 2m
istiod-asm-1-24-74f7f7c46c-4nt2v 1/1 Running 0 2m
Yan ünite enjeksiyonunu aktifleştir
Yeni podlara sidecar'ı otomatik olarak yüklemek için, namespace'lerinizi şu anda yüklü olan kontrol düzlemi revizyonuna karşılık gelen revizyon etiketiyle açıklamanız 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
Important
Kontrol düzlemi düzeltmesi (örn: istio.io/rev=asm-1-24) ile eşleşen açık sürüm oluşturma gereklidir.
Varsayılan istio-injection=enabled etiket çalışmayacak ve yan arabirim enjeksiyonunun eklenti için ad alanını atlamasına neden olacak.
Elle yan taşıyıcı eklemesi yapmak için istioctl kube-inject kullanırken, istioNamespace (-i) ve revision (-r) için 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
Yan taşıyıcı enjeksiyonu tetikleme
Test için sağlanan örnek uygulamayı dağıtabilir veya mevcut iş yükleri için sidecar enjeksiyonunu 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 sidecar enjeksiyonunu tetiklemek için dağıtımları yeniden başlatın.
kubectl rollout restart -n <namespace> <deployment name>
Sidecar enjeksiyonunun başarılı olduğunu doğrulamak için tüm kapsayıcıların hazır olduğundan emin olun ve istio-proxy çıktısında kubectl describe kapsayıcısını kontrol edin, örneğin:
kubectl describe pod -n namespace <pod name>
istio-proxy kapsayıcı, Envoy yardımcı arabirimidir. Uygulamanız artık veri düzleminin bir parçasıdır.
Örnek uygulamayı dağıtın
Örnek uygulamayı kümeye dağıtmak için kullanın kubectl apply :
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml
Note
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
İki kapsayıcı bulunan sütundaki tüm podların durumunun Running olduğundan emin olun. Her pod'a eklenen ikinci konteyner, Istio tarafından enjekte edilen Envoy sidecar'dır ve diğeri uygulama konteyneridir.
Bu örnek uygulamayı girişe karşı test etmek için sonraki adımlara göz atın.
Sonraki Adımlar
- İstio hizmet ağı eklentisi için dış veya iç girişler dağıtın
- İstiod ve giriş geçidi HPA'sını ölçeklendir
- Azure Yönetilen Prometheus'ta Istio hizmet ağı ek yükleri için metrikler toplayın
- Istio servis mesh eklentisi için çıkış ağ geçitlerini dağıtın
- Istio hizmet ağı eklentisi için Istio CNI'yi etkinleştirme (Önizleme)