نشر الوظيفة الإضافية لشبكة الخدمة المستندة إلى Istio لخدمة Azure Kubernetes

توضح هذه المقالة كيفية تثبيت الوظيفة الإضافية لشبكة الخدمة المستندة إلى Istio لنظام مجموعة Azure Kubernetes Service (AKS).

لمزيد من المعلومات حول Istio والوظيفة الإضافية لشبكة الخدمة، راجع الوظيفة الإضافية لشبكة الخدمة المستندة إلى Istio لخدمة Azure Kubernetes.

قبل البدء

  • تتطلب الوظيفة الإضافية تثبيت الإصدار 2.57.0 من Azure CLI أو إصدار أحدث. يمكنك تشغيل az --version للتحقق من الإصدار. للتثبيت أو الترقية، يُرجى الرجوع إلى تثبيت Azure CLI.

  • للعثور على معلومات حول مراجعات الوظيفة الإضافية Istio المتوفرة في منطقة ما وتوافقها مع إصدارات نظام مجموعة AKS، استخدم الأمر az aks mesh get-revisions:

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

تعيين متغيرات البيئة

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

تثبيت الوظيفة الإضافية Istio

يتضمن هذا القسم خطوات لتثبيت الوظيفة الإضافية Istio أثناء إنشاء نظام المجموعة أو تمكين نظام مجموعة موجود باستخدام Azure CLI. إذا كنت ترغب في تثبيت الوظيفة الإضافية باستخدام Bicep، فشاهد دليل تثبيت نظام مجموعة AKS باستخدام الوظيفة الإضافية Istio service mesh باستخدام Bicep. لمعرفة المزيد حول تعريف مورد Bicep لمجموعة AKS، راجع مرجع Bicep managedCluster.

تحديد المراجعة

إذا قمت بتمكين الوظيفة الإضافية دون تحديد مراجعة، يتم تثبيت مراجعة افتراضية مدعومة لك.

لتحديد مراجعة، قم بتنفيذ الخطوات التالية.

  1. az aks mesh get-revisions استخدم الأمر للتحقق من المراجعات المتوفرة لإصدارات نظام مجموعة AKS المختلفة في منطقة ما.
  2. استنادا إلى المراجعات المتوفرة، يمكنك تضمين العلامة --revision asm-X-Y (على سبيل المثال: --revision asm-1-20) في أمر التمكين الذي تستخدمه لتثبيت الشبكة.

تثبيت الشبكة أثناء إنشاء نظام المجموعة

لتثبيت الوظيفة الإضافية Istio عند إنشاء نظام المجموعة، استخدم المعلمة --enable-azure-service-mesh أو--enable-asm .

az group create --name ${RESOURCE_GROUP} --location ${LOCATION}

az aks create \
    --resource-group ${RESOURCE_GROUP} \
    --name ${CLUSTER} \
    --enable-asm \
    --generate-ssh-keys    

تثبيت شبكة لنظام المجموعة الحالي

يتيح المثال التالي الوظيفة الإضافية Istio لمجموعة AKS موجودة:

هام

لا يمكنك تمكين الوظيفة الإضافية Istio على مجموعة موجودة إذا كانت الوظيفة الإضافية OSM موجودة بالفعل على نظام المجموعة الخاص بك. قم بإلغاء تثبيت الوظيفة الإضافية OSM قبل تثبيت الوظيفة الإضافية Istio. لمزيد من المعلومات، راجع إلغاء تثبيت الوظيفة الإضافية OSM من نظام مجموعة AKS. يمكن تمكين الوظيفة الإضافية Istio فقط على مجموعات AKS من الإصدار >= 1.23.

az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

التحقق من التثبيت الناجح

للتحقق من تثبيت الوظيفة الإضافية Istio على نظام المجموعة، قم بتشغيل الأمر التالي:

az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}  --query 'serviceMeshProfile.mode'

تأكد من ظهور Istioالإخراج .

استخدم az aks get-credentials بيانات الاعتماد الخاصة بمجموعة AKS الخاصة بك:

az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

استخدم kubectl للتحقق من أن istiod (وحدة التحكم Istio) تعمل بنجاح:

kubectl get pods -n aks-istio-system

تأكد من أن الجراب istiod لديه حالة Running. على سبيل المثال:

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

تمكين الحقن الجانبي

لتثبيت sidecar تلقائيا على أي pods جديدة، تحتاج إلى إضافة تعليق توضيحي إلى مساحات الأسماء الخاصة بك مع تسمية المراجعة المقابلة لمراجعة وحدة التحكم المثبتة حاليا.

إذا لم تكن متأكدا من المراجعة المثبتة، فاستخدم:

az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}  --query 'serviceMeshProfile.istio.revisions'

تطبيق تسمية المراجعة:

kubectl label namespace default istio.io/rev=asm-X-Y

هام

لا تعمل التسمية الافتراضية istio-injection=enabled . مطلوب تعيين إصدار صريح يطابق مراجعة مستوى التحكم (على سبيل المثال: istio.io/rev=asm-1-18) .

للحقن اليدوي ل sidecar باستخدام istioctl kube-inject، تحتاج إلى تحديد معلمات إضافية ل istioNamespace (-i) و revision (-r). على سبيل المثال:

kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo

إدخال sidecar المشغل

يمكنك إما نشر نموذج التطبيق المقدم للاختبار، أو تشغيل حقن sidecar لأحمال العمل الحالية.

التطبيقات الحالية

إذا كان لديك تطبيقات موجودة لإضافتها إلى الشبكة، فتأكد من تسمية مساحات الأسماء الخاصة بها كما في الخطوة السابقة، ثم أعد تشغيل عمليات النشر الخاصة بهم لتشغيل حقن sidecar:

kubectl rollout restart -n <namespace> <deployment name>

تحقق من نجاح حقن sidecar عن طريق التأكد من أن جميع الحاويات جاهزة والبحث عن الحاوية istio-proxy kubectl describe في الإخراج، على سبيل المثال:

kubectl describe pod -n namespace <pod name>

istio-proxy الحاوية هي سيارة Envoy الجانبية. أصبح تطبيقك الآن جزءا من مستوى البيانات.

نشر تطبيق العينة

استخدم kubectl apply لنشر نموذج التطبيق على نظام المجموعة:

kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml

تأكد من إنشاء العديد من عمليات النشر والخدمات على نظام المجموعة. على سبيل المثال:

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

استخدم kubectl get services للتحقق من إنشاء الخدمات بنجاح:

kubectl get services

تأكد من نشر الخدمات التالية:

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

تأكد من أن جميع pods لها حالة Running مع حاويتين في READY العمود. الحاوية الثانية (istio-proxy) المضافة إلى كل جراب هي Sidecar Envoy التي تم حقنها بواسطة Istio، والأخرى هي حاوية التطبيق.

لاختبار نموذج التطبيق هذا مقابل الدخول، تحقق من الخطوات التالية.

حذف الموارد

استخدم kubectl delete لحذف نموذج التطبيق:

kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/bookinfo/platform/kube/bookinfo.yaml

إذا كنت لا تنوي تمكين دخول Istio على نظام المجموعة وتريد تعطيل الوظيفة الإضافية Istio، فقم بتشغيل الأمر التالي:

az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

تنبيه

سيؤدي تعطيل ملحق شبكة الخدمة إلى إزالة مستوى التحكم Istio بالكامل من نظام المجموعة.

لا يتم حذف Istio CustomResourceDefintion(CRDs) بشكل افتراضي. لتنظيفها، استخدم:

kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')

استخدم az group delete لحذف نظام المجموعة والموارد المقترنة:

az group delete --name ${RESOURCE_GROUP} --yes --no-wait

الخطوات التالية