إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تنبيه
أعلنت شبكة Kubernetes SIG ولجنة الاستجابة الأمنية عن التقاعد القادملمشروع Ingress NGINX، مع انتهاء الصيانة في مارس 2026. لا يوجد إجراء فوري اليوم لمجموعات AKS التي تستخدم إضافة توجيه التطبيقات مع NGINX. ستوفر مايكروسوفت دعما رسميا للتصحيحات الأمنية الحرجة لموارد NGINX Ingress الإضافية لتوجيه التطبيقات حتى نوفمبر 2026.
تتوافق AKS مع Kubernetes المتقدمة من خلال الانتقال إلى واجهة برمجة تطبيقات Gateway كمعيار طويل الأمد لإدارة حركة المرور في الداخل والطبقة السابعة. ننصحك بأن تبدأ في تخطيط مسار الهجرة بناء على إعدادك الحالي:
- مستخدمو إضافات توجيه التطبيقات: تظل أعباء العمل الإنتاجية مدعومة بالكامل حتى نوفمبر 2026. انتقل إلى تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات للحصول على تجربة إدارة حركة المرور القائمة على واجهة برمجة تطبيقات البوابة.
-
لدى مستخدمي OSS NGINX عدة خيارات:
- انتقل إلى إضافة توجيه التطبيقات باستخدام NGINX للاستفادة من الدعم الرسمي حتى نوفمبر 2026 أثناء التخطيط لترحيل واجهة برمجة التطبيقات طويلة الأمد لبوابة.
- انتقل إلى تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات للحصول على تجربة إدارة حركة المرور القائمة على واجهة برمجة تطبيقات البوابة.
- انتقل إلى Application Gateway for Containers، الذي يدعم كل من واجهة برمجة تطبيقات Ingress وواجهة Gateway.
- مستخدمو شبكة الخدمة: إذا كنت تخطط لاعتماد شبكة خدمة، فكر في إضافة شبكة الخدمات المبنية على Istio. استخدم Istio Ingress اليوم، وخطط للانتقال إلى دعم واجهة برمجة تطبيقات Istio Gateway عندما يصبح GA.
تدعم إضافة توجيه التطبيقات واجهة برمجة تطبيقات بوابة Kubernetes لإدارة حركة المرور الداخلة. واجهة برمجة تطبيقات بوابة كوبيرنتيز هي مجموعة من الموارد التي توفر إطارا موحدا وموجها للأدوار وقابلا للتوسعة لإدارة حركة المرور، صممت لتكون خليفة وتطورا لواجهة برمجة تطبيقات إنغريس. لذا يهدف تنفيذ واجهة برمجة تطبيقات بوابة التوجيه إلى أن يكون خليفة لإضافة NGINX المدارة ، والتي تعتمد على واجهة برمجة التطبيقات القديمة Ingress وستتوقف عن تلقي دعم Azure من Azure بعد نوفمبر 2026. إذا كنت تستخدم NGINX المدار، يجب عليك الانتقال إلى تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيق، أو تنفيذ مدعوم آخر، بحلول نوفمبر 2026.
يقوم تنفيذ إضافة توجيه التطبيقات في Kubernetes Gateway بنشر مستوى تحكم Istio لإدارة البنية التحتية لموارد واجهة برمجة تطبيقات Kubernetes Gateway. ومع ذلك، يختلف عن إضافة شبكة خدمة Istio لنظام AKS من الجوانب التالية:
| الميزة | واجهة برمجة تطبيقات بوابة توجيه التطبيقات | إضافة شبكة خدمة Istio |
|---|---|---|
| اسم فئة البوابة | approuting-istio |
istio |
| حقن العربة الجانبية ودعم Istio CRD | غير مدعومة. يدير فقط البنية التحتية لموارد واجهة برمجة تطبيقات Kubernetes Gateway | مدعوم |
| المراجعات والترقيات | لم يتم تعديله. تمت ترقيته في مكانه لتحديثات الإصدارات البسيطة والتحديثات | تم تعديله. تمت ترقيته عبر ترقيات Canary لتحديثات الإصدارات الطفيفة وتم وضعها في التحديثات الخاصة بإصدار التحديث |
القيود
لا يمكن تفعيل تنفيذ واجهة برمجة تطبيقات بوابة التوجيه للتطبيقات وإضافة شبكة خدمة إيستيو في نفس الوقت. يجب عليك تعطيل أحدهما أولا وتفعيل الآخر في عملية منفصلة. عند الانتقال من إضافة شبكة خدمة Istio إلى تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات، يجب عليك حذف CRDs من Istio GatewayClass وIstio بعد تعطيل إضافة Istio. تقوم إضافة Istio بتثبيت CRDs (مثل
virtualservices.networking.istio.io،destinationrules.networking.istio.io، وغيرها فيnetworking.istio.ioمجموعات ،security.istio.io،telemetry.istio.io، وAPIextensions.istio.io) التي لا تزال عند تعطيل الإضافة. إذا بقيت هذه الأقراص على العنقود، فإن مستوى التحكم Istio الذي يوجه التطبيق يبدأ. شغل الأمر التالي لحذفها:kubectl delete crd $(kubectl get crd -o name | grep -E 'istio\.io') kubectl delete gatewayclass istio
ملحوظة
إذا كان لديك موارد مخصصة موجودة في Istio (مثل VirtualServices أو DestinationRules)، فإن حذف CRDs سيحذف تلك الموارد أيضا. تأكد من أنك لم تعد بحاجة إليها قبل المتابعة.
- يستخدم تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات نفس قائمة صلاحيات تخصيص الموارد كما في إضافة Istio للتحقق من تخصيصات ConfigMap للموارد
Gateway. التعديلات غير المدرجة في قائمة الصلاحيات يتم حجبها عبر webhooks المدارة الإضافية. -
إدارة شهادات Azure DNS وTLS عبر إضافة توجيه التطبيقات غير مدعومة حاليا لواجهة Kubernetes Gateway. يمكنك اتباع الخطوات في دليل الدخول الآمن لتنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات لتكوين تنفيذ
Gatewayإنهاء TLS. - إعداد الوصول إلى خدمات HTTPS – أي إشارة اسم الخادم (SNI) Passthrough) – عبر
TLSRouteالمورد غير مدعوم حاليا. سيكون دعم الموردTLSRouteمتاحا بمجرد أن تضيف AKS دعم Istio 1.30، وعندها سيتم ترقية مستوى التحكم الذي يوجه تطبيقك تلقائيا إلى ذلك الإصدار. - إدارة حركة المرور الخارجة عبر تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات غير مدعومة.
المتطلبات المسبقه
تحديث Azure CLI edition
يجب استخدام azure-cli الإصدار 2.86.0 أو الإصدارات الأحدث. اركض az --version للعثور على نسختك azure-cli ، واركض az upgrade للترقية.
تمكين CRDs لواجهة برمجة التطبيقات للبوابة المدارة
تفعيل تثبيت واجهة برمجة تطبيقات البوابة المدارة. استخدام CRDs API Gateway المدار ذاتيا مع إضافة توجيه التطبيقات غير مدعوم.
تمكين تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات
تعيين متغيرات البيئة
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
تفعيل أثناء إنشاء العنقود
شغل الأمر التالي لتمكين تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيق أثناء إنشاء العنقود:
az aks create --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio
تمكين مجموعة موجودة
شغل الأمر التالي لتمكين تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيق لمجموعة موجودة:
az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --enable-app-routing-istio
يجب أن ترى istiod الكبسولات في aks-istio-system مساحة الأسماء:
kubectl get pods -n aks-istio-system
NAME READY STATUS RESTARTS AGE
istiod-54b4ff45cf-htph8 1/1 Running 0 3m15s
istiod-54b4ff45cf-wlvgd 1/1 Running 0 3m
يجب أن ترى أيضا كيفية نشرها ValidatingWebhookConfiguration :
kubectl get validatingwebhookconfiguration
NAME WEBHOOKS AGE
aks-node-validating-webhook 1 117m
azure-service-mesh-ccp-validating-webhook 1 4m2s
إذا كان لديك تثبيت واجهة برمجة تطبيقات البوابة المدارة مفعلة، يجب أن ترى أيضا إنشاء خريطة إعدادات تخصيص بوابة Istio:
kubectl get cm -n aks-istio-system
NAME DATA AGE
...
istio-gateway-class-defaults 2 43s
...
تكوين الدخول باستخدام بوابة Kubernetes
نشر تطبيق العينة
أولا، انشر نموذج httpbin التطبيق في مساحة الاسم default :
export ISTIO_RELEASE="release-1.27"
kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_RELEASE/samples/httpbin/httpbin.yaml
إنشاء بوابة Kubernetes وHTTPRoute
بعد ذلك، انشر تكوين واجهة برمجة تطبيقات البوابة في مساحة الاسم default مع تعيين الملف gatewayClassName على approuting-istio.
kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: httpbin-gateway
spec:
gatewayClassName: approuting-istio
listeners:
- name: http
port: 80
protocol: HTTP
allowedRoutes:
namespaces:
from: Same
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: httpbin
spec:
parentRefs:
- name: httpbin-gateway
hostnames: ["httpbin.example.com"]
rules:
- matches:
- path:
type: PathPrefix
value: /get
backendRefs:
- name: httpbin
port: 8000
EOF
ملحوظة
ينشئ المثال أعلاه خدمة موازن تحميل دخول خارجي يمكن الوصول إليها من خارج نظام المجموعة. يمكنك إضافة تعليقات لإنشاء موازن تحميل داخلي وتخصيص إعدادات موازن التحميل الأخرى.
ملحوظة
بشكل افتراضي، سيقوم مستوى التحكم في Istio بإضافة GatewayClass الاسم approuting-istio إلى اسم الموارد التي يوفرها ل .Gateway يمكنك إضافة تعليقات على موردك Gateway لتجاوز gateway.istio.io/name-override اسم الموارد المخصصة. يجب أن تكون أسماء الموارد أقل من 63 الأحرف ويجب أن تكون أسماء DNS صالحة.
تحقق من إنشاء DeploymentServiceملف ، HorizontalPodAutoscaler، PodDisruptionBudgetوhttpbin-gateway:
kubectl get deployment httpbin-gateway-approuting-istio
NAME READY UP-TO-DATE AVAILABLE AGE
httpbin-gateway-approuting-istio 2/2 2 2 6m41s
kubectl get service httpbin-gateway-approuting-istio
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
httpbin-gateway-approuting-istio LoadBalancer 10.0.54.96 <external-ip> 15021:30580/TCP,80:32693/TCP 7m13s
kubectl get hpa httpbin-gateway-approuting-istio
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
httpbin-gateway-approuting-istio Deployment/httpbin-gateway-approuting-istio cpu: 3%/80% 2 5 2 8m13s
kubectl get pdb httpbin-gateway-approuting-istio
NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE
httpbin-gateway-approuting-istio 1 N/A 1 9m1s
إرسال طلب إلى نموذج الطلب
أخيرا ، حاول إرسال curl طلب إلى httpbin التطبيق. أولا، قم بتعيين INGRESS_HOST متغير البيئة:
kubectl wait --for=condition=programmed gateways.gateway.networking.k8s.io httpbin-gateway
export INGRESS_HOST=$(kubectl get gateways.gateway.networking.k8s.io httpbin-gateway -ojsonpath='{.status.addresses[0].value}')
بعد ذلك، حاول إرسال طلب HTTP إلى httpbin:
curl -s -I -HHost:httpbin.example.com "http://$INGRESS_HOST/get"
يجب أن ترى استجابة HTTP 200 .
ملحوظة
لتأمين حركة المرور الداخلة مع تنفيذ واجهة برمجة تطبيقات بوابة التوجيه التطبيقية، راجع الدليل التالي لمزامنة أسرار Azure Key Vault (AKV) لتأمين حركة مرور الدخول في واجهة برمجة تطبيقات البوابة مع إنهاء TLS.
الإصدار والترقيات
يقوم تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات بنشر وترقية مستوى التحكم Istio بناء على نسخة Kubernetes في عنقود AKS لترقيات الإصدار الثانوي وإصدار التحديث.
نسخة Istio هي النسخة الثانوية الأكثر دعما من Istio والمتوافقة مع نسخة AKS الخاصة بالعنقود. على سبيل المثال، إذا كنت تستخدم نسخة 1.34AKS، فإن الحد الأقصى المدعوم من إصدار Istio minor المثبت (حتى مارس 2026) هو 1.28. ضع في اعتبارك أن الحد الأقصى لإصدار Istio المدعوم لإصدار Kubernetes قد يختلف بين عناقيد دعمLong-Term (LTS) ومجموعات غير LTS.
للعثور على أقصى نسخة فرعية مدعومة من Istio لإصدار AKS Kubernetes الخاص بك، يمكنك التحقق من تقويم إصدارات الشبكة الإضافية الخاصة بالخدمة. بينما لم يتم تعديل تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات، فإن إصدار سطح التحكم الثانوي في إيستيو يتوافق مع مراجعة إضافة شبكة الخدمة المعطاة (على سبيل المثال: بالنسبة لإضافة asm-1-28شبكة الخدمة، فإن إصدار 1.28مستوى التحكم الصغير في مستوى التحكم الخاص ب Istio هو ). يمكنك أيضا رؤية نسخة Istio الثانوية من خلال التحقق من نسخة التصحيح في istiod صورة النشر: kubectl get deployment istiod -n aks-istio-system -o=jsonpath="{.spec.template.spec.containers[*].image}".
Upgrades
تحدث ترقيات إصدار التصحيح والإصدارات الطفيفة لمستوى التحكم Istio لتنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات في المكان. يتم تفعيل ترقيات نسخة التحديث من طائرة التحكم Istio تلقائيا كجزء من إصدارات AKS. يمكن تفعيل ترقيات الإصدارات البسيطة تلقائيا أو يدويا حسب نسخة AKS Kubernetes وتوقيت إصدارات الإصدارات الصغرى من Istio. تحدث ترقيات الإصدار الطفيفة في السيناريوهين التاليين:
- تم ترقية عنقود AKS إلى إصدار جديد يحتوي على نسخة Istio مدعومة بأقصى حد أعلى مثبتة عليها. سيتم ترقية طائرة التحكم Istio إلى النسخة الصغرى الأعلى كجزء من ترقية مجموعة AKS.
- تم إصدار نسخة جديدة من Istio لجهاز AKS وهي الآن النسخة الأكثر دعما لإصدار عنقود AKS. سيتم ترقية مستوى التحكم Istio على عنقودك تلقائيا إلى النسخة الجديدة الثانوية بعد نشر الإصدار في منطقتك. اتبع ملاحظات الإصدار وجهاز تتبع الإصدارات الخاصة ب AKS لتتبع إصدارات Istio الجديدة وشاهد متى تم طرح النسخة الجديدة في منطقتك.
من الممكن أن تحدث اضطرابات في حركة المرور أثناء عملية الترقية. لتقليل الاضطرابات أثناء الترقيات، يقوم إضافة توجيه التطبيقات بنشر جهاز التدرج التلقائي الأفقي (HPA) مع نسختين لا تقل عن النسخ وPodDisruptionBudget (PDB) بتوفر حد أدنى واحد لكل مشروع Gateway. يمكنك تخصيص هذه الموارد لتعديل هذه الإعدادات.
تخصيصات الموارد
تخصيص التدرج التلقائي لجهاز الوحدة الأفقية (HPA) لمستوى التحكم
يدعم تنفيذ واجهة برمجة التطبيقات لبوابة التوجيه تخصيص جهاز التدرج التلقائي لجهاز التحكم الأفقي في سطح التحكم Istio (HPA). يحتوي مورد istiod HPA على التكوينات الافتراضية التالية:
- الحد الأدنى من النسخ المقلدة: 2
- أقصى نسخ مقلدة: 5
- استخدام المعالج: 80%
ملحوظة
لمنع التعارض مع ، PodDisruptionBudgetلا يسمح تنفيذ واجهة برمجة تطبيقات بوابة التوجيه بتعيين الإعداد minReplicas الأولي أدناه ل 2.
يمكن تعديل تكوين HPA من خلال التحديثات والتعديلات المباشرة. مثال:
kubectl patch hpa istiod -n aks-istio-system --type merge --patch '{"spec": {"minReplicas": 3, "maxReplicas": 6}}'
تخصيص موارد البوابة
يدعم Gateway تنفيذ واجهة برمجة تطبيقات بوابة التوجيه تخصيص الموارد عبر التعليقات التوضيحية وخرائط التهيئة (ConfigMaps). يستخدم توجيه التطبيقات نفس قائمة صلاحيات تخصيص الموارد كما في إضافة شبكة خدمة Istio لتخصيص موارد واجهة برمجة التطبيقات Gateway. اتبع الخطوات في مستندات واجهة برمجة التطبيقات الخاصة ب Gateway الإضافية في Istio لتكوين الموارد المولدة لل Gateways ومعرفة الحقول التي تندرج تحت قائمة الصلاحيات.
ملحوظة
يتم توفير وتوفيق ConfigMap istio-gateway-class-defaults بواسطة AKS عندما يتم تفعيل CRDs API لواجهة برمجة تطبيقات البوابة المدارة وتنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات معا. إذا كنت قد أنشأت istio-gateway-class-defaults ConfigMap سابقا في مساحة الأسماء aks-istio-system بنفسك، يجب عليك حذف نسخة ConfigMap المدارة ذاتيا قبل تفعيل CRDs API لبوابة الإدارة لتجنب التعارض مع تسوية ConfigMap المدارة بواسطة AKS.
تعطيل تنفيذ واجهة برمجة تطبيقات بوابة التوجيه للتطبيقات
شغل الأمر التالي لتعطيل تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيق:
az aks update --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --disable-app-routing-istio
موارد التنظيف
شغل الأوامر التالية لحذف و GatewayHttpRoute:
kubectl delete gateways.gateway.networking.k8s.io httpbin-gateway
kubectl delete httproute httpbin
إذا أنشأت ConfigMap لتخصيص وضعك Gateway، قم بتشغيل الأمر التالي لحذف ConfigMap:
kubectl delete configmap gw-options
إذا أنشأت SecretProviderClass وسرا لاستخدامه لإنهاء TLS، قم بحذف الموارد التالية أيضا:
kubectl delete secret httpbin-credential
kubectl delete pod secrets-store-sync-httpbin
kubectl delete secretproviderclass httpbin-credential-spc
الخطوات التالية
تأمين حركة المرور داخل مع تنفيذ واجهة برمجة تطبيقات بوابة توجيه التطبيقات