Aracılığıyla paylaş


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-revisionskullanın:

    az aks mesh get-revisions --location <location> -o table
    

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.

  1. 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.
  2. 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 Istioonaylayı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 Runningolduğunu onaylayın. Örneğin:

NAME                               READY   STATUS    RESTARTS   AGE
istiod-asm-1-18-74f7f7c46c-xfdtl   2/2     Running   0          2m
istiod-asm-1-18-74f7f7c46c-4nt2v   2/2     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-injectsepet 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

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