نشر الوظيفة الإضافية لشبكة الخدمة المستندة إلى 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
لاحظ أنه إذا اخترت استخدام أي
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.
تحديد المراجعة
إذا قمت بتمكين الوظيفة الإضافية دون تحديد مراجعة، يتم تثبيت مراجعة افتراضية مدعومة لك.
لتحديد مراجعة، قم بتنفيذ الخطوات التالية.
az aks mesh get-revisions
استخدم الأمر للتحقق من المراجعات المتوفرة لإصدارات نظام مجموعة AKS المختلفة في منطقة ما.- استنادا إلى المراجعات المتوفرة، يمكنك تضمين العلامة
--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 1/1 Running 0 2m
istiod-asm-1-18-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
هام
لا تعمل التسمية الافتراضية 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
إشعار
ستحتاج المجموعات التي تستخدم وكيل 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، والأخرى هي حاوية التطبيق.
لاختبار نموذج التطبيق هذا مقابل الدخول، تحقق من الخطوات التالية.
حذف الموارد
استخدم 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
الخطوات التالية
Azure Kubernetes Service