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

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

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

Tip

يمكنك استخدام Azure Copilot للمساعدة في نشر Istio على مجموعات AKS الخاصة بك في بوابة Azure. لمزيد من المعلومات، راجع العمل مع عناقيد AKS بكفاءة باستخدام Azure Copilot.

قبل البدء

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

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

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

    لمزيد من المعلومات حول توافق الوظيفة الإضافية Istio مع AKS، ارجع إلى سياسة دعم التوافق.

  • في بعض الحالات، قد لا يتم تنظيف Istio CRDs من عمليات التثبيت السابقة تلقائيا عند إلغاء التثبيت. تأكد من حذف Istio CRDs الموجودة:

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

    من المستحسن أيضا تنظيف الموارد الأخرى من عمليات التثبيت المدارة ذاتيا من Istio مثل ClusterRoles و MutatingWebhookConfigurations و ValidatingWebhookConfigurations.

  • لاحظ أنه إذا اخترت استخدام أي istioctl أوامر CLI، فستحتاج إلى تضمين علامة للإشارة إلى تثبيت الوظيفة الإضافية ل Istio: --istioNamespace aks-istio-system

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

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.

Note

إذا كنت بحاجة إلى istiod جرابات بوابة الدخول/الخروج المجدولة على عقد معينة، يمكنك استخدام عقد نظام AKS أو تسمية العقدة azureservicemesh/istio.replica.preferred . تحتوي الحجيرات على تقارب عقدة مع تفضيل 100 مرجح لعقد نظام AKS (المسماة kubernetes.azure.com/mode: system)، وتفضيل 50 مرجح للعقد المسماة azureservicemesh/istio.replica.preferred: true.

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

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

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

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

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

لتثبيت الوظيفة الإضافية 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 موجودة:

Important

لا يمكنك تفعيل إضافة Istio على عنقود موجود إذا كانت إضافة Open Service Mesh (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-24-74f7f7c46c-xfdtl   1/1     Running   0          2m
istiod-asm-1-24-74f7f7c46c-4nt2v   1/1     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

Important

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

لن تعمل تسمية istio-injection=enabled الافتراضية وستتسبب في تخطي الإدخال الجانبي لمساحة الاسم للوظيفة الإضافية.

للحقن اليدوي ل 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-proxykubectl describe في الإخراج، على سبيل المثال:

kubectl describe pod -n namespace <pod name>

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

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

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

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

Note

ستحتاج المجموعات التي تستخدم وكيل HTTP للوصول إلى الإنترنت الصادر إلى إعداد إدخال خدمة. للحصول على إرشادات الإعداد، راجع دعم وكيل HTTP في خدمة Azure Kubernetes

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

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، والأخرى هي حاوية التطبيق.

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

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