إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
تنبيه
أعلنت شبكة 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.
توضح لك هذه المقالة كيفية تكوين أسماء النطاقات المخصصة وشهادات SSL/TLS لدخول AKS باستخدام Azure Key VaultوAzure DNS مع إضافة توجيه التطبيقات ل AKS.
المتطلبات الأساسية
نظام مجموعة AKS مع الوظيفة الإضافية لتوجيه التطبيق.
Azure Key Vault إذا كنت ترغب في تكوين إنهاء SSL وتخزين الشهادات في المخزن المستضاف في Azure. إذا لم يكن لديك واحد، انظر إنشاء خزنة مفاتيح باستخدام Azure CLI.
لتمكين دعم حركة مرور HTTPS، تحتاج إلى شهادة SSL. إذا لم يكن لديك شهادة، انظر إنشاء شهادة.
Azure DNS إذا كنت تريد تكوين إدارة المنطقة العامة والخاصة واستضافتها في Azure. إذا لم يكن لديك منطقة Azure DNS، يمكنك إنشاء منطقة. لتمكين دعم مناطق DNS:
- يجب أن تكون جميع مناطق DNS في Azure العالمية ضمن نفس مجموعة الموارد، وقد تختلف هذه المجموعة عن مجموعة موارد العنقود.
- يجب أن تكون جميع مناطق DNS الخاصة في Azure ضمن نفس مجموعة الموارد، والتي قد تختلف عن مجموعة موارد العنقود.
- لا تحتاج مجموعة الموارد إلى أن تكون في نفس الاشتراك مثل نظام المجموعة.
أذونات Azure المطلوبة
حساب المستخدم الخاص بك يحتاج: دور مالك، مسؤول حساب أزور، أو مدير مشارك في Azure على اشتراكك في أزور.
ما تفعله الأوامر: عندما تقوم بتشغيل az aks approuting update --attach-kv أو az aks approuting zone add --attach-zones، تستخدم هذه الأوامر أذونات تعيين الأدوار الخاصة بك لمنح هوية إدارة إضافة توجيه التطبيق تلقائيا الأدوار التالية:
- دور مستخدم شهادة Key Vault في Azure Key Vault الخاص بك (للوصول إلى الشهادة).
- دور مساهم منطقة DNS في مناطق Azure DNS الخاصة بك (لإدارة سجلات DNS).
لمزيد من المعلومات حول الهويات المدارة ل AKS، راجع ملخص الهويات المدارة.
قم بالاتصال بمجموعة AKS
للاتصال بمجموعة Kubernetes من الكمبيوتر المحلي الخاص بك، يمكنك استخدام kubectl، عميل سطر أوامر Kubernetes. يمكنك تثبيته محليا باستخدام الأمر az aks install-cli . في حال كنت تستخدم Azure Cloud Shell، يكون kubectl مثبتاً بالفعل.
تكوين kubectl للاتصال بمجموعة Kubernetes باستخدام
az aks get-credentialsالأمر .# Set environment variables for your resource group and cluster name export RESOURCE_GROUP=<resource-group-name> export CLUSTER_NAME=<cluster-name> # Get the AKS cluster credentials az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
إنشاء شهادة SSL موقعة ذاتيا وتصديرها
للاختبار، يمكنك استخدام شهادة عامة موقعة ذاتيًا بدلاً من شهادة موقعة من المرجع المصدق (CA). إذا كان لديك شهادة بالفعل، يمكنك تخطي هذه الخطوة.
تنبيه
الشهادات الموقعة ذاتيا هي شهادات رقمية لا يوقعها سلطة قانونية موثوقة من طرف ثالث. الشركة أو المطور المسؤول عن الموقع أو البرنامج هو من يقوم بإنشاء هذه الشهادات، وإصدارها، وتوقيعها. هذا هو السبب في أن الشهادات الموقعة ذاتيا تعتبر غير آمنة لمواقع الويب والتطبيقات العامة. لدى Azure Key Vault شراكة موثوق بها مع بعض المراجع المصدقة.
أنشئ شهادة SSL موقعة ذاتيا لاستخدامها مع الدخول باستخدام الأمر
openssl req. تأكد من استبدال<host-name>باسم DNS الذي تستخدمه.openssl req -new -x509 -nodes -out aks-ingress-tls.crt -keyout aks-ingress-tls.key -subj "/CN=<host-name>" -addext "subjectAltName=DNS:<host-name>"تصدير شهادة SSL وتخطي موجه كلمة المرور باستخدام
openssl pkcs12 -exportالأمر .openssl pkcs12 -export -in aks-ingress-tls.crt -inkey aks-ingress-tls.key -out aks-ingress-tls.pfx
استيراد شهادة SSL موقعة ذاتيا إلى Azure Key Vault
استيراد شهادة SSL إلى Azure Key Vault باستخدام
az keyvault certificate importالأمر . إذا كانت شهادتك محمية بكلمة مرور، يمكنك تمرير كلمة المرور من خلال العلامة--password.# Set environment variables for your key vault name and certificate name export KEY_VAULT_NAME=<key-vault-name> export KEY_VAULT_CERT_NAME=<key-vault-certificate-name> # Import the SSL certificate into Azure Key Vault az keyvault certificate import --vault-name $KEY_VAULT_NAME --name $KEY_VAULT_CERT_NAME --file aks-ingress-tls.pfx [--password <certificate password if specified>]
إشعار
لتمكين إضافة توجيه التطبيقات لإعادة تحميل الشهادات من Azure Key Vault عند تغييرها، يجب عليك تفعيل ميزة التدوير التلقائي السري في برنامج تشغيل CSI الخاص بمخزن الأسرار. عند تمكين التشغيل التلقائي، يقوم برنامج التشغيل بتحديث تحميل الجراب وسر Kubernetes عن طريق الاستقصاء عن التغييرات بشكل دوري، استنادا إلى الفاصل الزمني لاستطلاع التدوير الذي تحدده. الفاصل الزمني الافتراضي لاستطلاع الاستدارة دقيقتان.
تمكين تكامل Azure Key Vault
يوفر Azure Key Vault نظامين للتخويل: التحكم في الوصول المستند إلى الدور Azure (Azure RBAC)، والذي يعمل على مستوى الإدارة، ونموذج نهج الوصول، الذي يعمل على كل من مستوى الإدارة و مستوى البيانات. تختار العملية --attach-kv نموذج الوصول المناسب للاستخدام.
احصل على معرف الموارد لخزنة المفاتيح باستخدام
az keyvault showالأمر وقم بتعيين المخرج على متغير بيئتي.KEY_VAULT_ID=$(az keyvault show --name <KeyVaultName> --query "id" --output tsv)قم بتحديث إضافة توجيه التطبيقات لتمكين مزود Azure Key Vault لبرنامج تشغيل CSI لمخزن الأسرار وتطبيق تعيين الأدوار المطلوبة باستخدام
az aks approuting updateالأمر مع ووسيطات--enable-kv--attach-kv.az aks approuting update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-kv --attach-kv ${KEY_VAULT_ID}
إنشاء منطقة Azure DNS العالمية
إذا كان لديك بالفعل منطقة DNS في Azure، يمكنك تخطي هذه الخطوة.
إنشاء منطقة Azure DNS باستخدام
az network dns zone createالأمر .# Set environment variables for your resource group and DNS zone name export RESOURCE_GROUP=<resource-group-name> export ZONE_NAME=<zone-name> # Create the Azure DNS zone az network dns zone create --resource-group $RESOURCE_GROUP --name $ZONE_NAME
تمكين تكامل Azure DNS
احصل على معرف الموارد لمنطقة DNS باستخدام
az network dns zone showالأمر وقم بتعيين المخرج إلى متغير بيئي.ZONE_ID=$(az network dns zone show --resource-group $RESOURCE_GROUP --name $ZONE_NAME --query "id" --output tsv)قم بتحديث إضافة توجيه التطبيق لتمكين تكامل Azure DNS باستخدام
az aks approuting zoneالأمر. يمكنك تمرير قائمة مفصولة بفواصل لمعرفات موارد منطقة DNS.az aks approuting zone add --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --ids=${ZONE_ID} --attach-zones
إنشاء فئة Ingress تستخدم اسم مضيف وشهادة من Azure Key Vault
تنشئ الوظيفة الإضافية لتوجيه التطبيق فئة دخول على المجموعة المسماة webapprouting.kubernetes.azure.com. عند إنشاء كائن دخول باستخدام هذه الفئة، فإنه يقوم بتنشيط الوظيفة الإضافية.
احصل على URI الخاص بالشهادة لاستخدامه في الدخول من Azure Key Vault باستخدام
az keyvault certificate showالأمر.az keyvault certificate show --vault-name $KEY_VAULT_NAME --name $KEY_VAULT_CERT_NAME --query "id" --output tsvيظهر إخراج المثال التالي شهادة URI التي تم إرجاعها من الأمر:
https://KeyVaultName.vault.azure.net/certificates/KeyVaultCertificateName/ab12c34567d89e01f2345g6h78ijkl90انسخ بيان YAML التالي في ملف جديد يسمى ingress.yaml واحفظ الملف إلى الكمبيوتر المحلي.
تحديث
<host-name>باسم مضيف DNS الخاص بك وإذا<key-vault-certificate-uri>تم إعادة URI من الأمر السابق. يجب أن تتضمن<key-vault-certificate-uri>قيمة السلسلة لhttps://yourkeyvault.vault.azure.net/certificates/certnameفقط . قم بإزالة نسخة الشهادة من نهاية سلسلة URI للحصول على النسخة الحالية.secretNameيعرف المفتاح فيtlsالقسم اسم السر الذي يحتوي على الشهادة لمورد الدخول هذا. يتم تقديم هذه الشهادة في المستعرض عندما يستعرض العميل عنوان URL المحدد في<host-name>المفتاح. تأكد من أن قيمةsecretNameتساوي متبوعةkeyvault-بقيمة اسم مورد الدخول (منmetadata.name). في مثال YAML،secretNameيجب أن يكون مساويا لkeyvault-<your-ingress-name>.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.azure.com/tls-cert-keyvault-uri: <key-vault-certificate-uri> name: aks-helloworld namespace: hello-web-app-routing spec: ingressClassName: webapprouting.kubernetes.azure.com rules: - host: <host-name> http: paths: - backend: service: name: aks-helloworld port: number: 80 path: / pathType: Prefix tls: - hosts: - <host-name> secretName: keyvault-<your-ingress-name>إنشاء موارد نظام المجموعة باستخدام
kubectl applyالأمر .kubectl apply -f ingress.yaml -n hello-web-app-routingيظهر إخراج المثال التالي المورد الذي تم إنشاؤه:
Ingress.networking.k8s.io/aks-helloworld created
تحقق من إنشاء الدخول المدار
تحقق من إنشاء الدخول المدار باستخدام الأمر
kubectl get ingress.kubectl get ingress -n hello-web-app-routingيظهر المثال التالي الناتج المدخل المدار الذي تم إنشاؤه:
NAME CLASS HOSTS ADDRESS PORTS AGE aks-helloworld webapprouting.kubernetes.azure.com myapp.contoso.com 20.51.92.19 80, 443 4m
المحتوى ذو الصلة
تعرف على كيفية مراقبة مقاييس وحدة تحكم Ingress NGINX المرفقة مع إضافة توجيه التطبيقات باستخدام Prometheus في Grafana كجزء من تحليل أداء واستخدام تطبيقك.