دخول NGINX المدار مع الوظيفة الإضافية لتوجيه التطبيق

تنبيه

أعلنت شبكة Kubernetes SIG ولجنة الاستجابة الأمنية عن التقاعد القادملمشروع Ingress NGINX، مع انتهاء الصيانة في مارس 2026. لا يوجد إجراء فوري اليوم لمجموعات AKS التي تستخدم إضافة توجيه التطبيقات مع NGINX. ستوفر مايكروسوفت دعما رسميا للتصحيحات الأمنية الحرجة لموارد NGINX Ingress الإضافية لتوجيه التطبيقات حتى نوفمبر 2026.

تتوافق AKS مع Kubernetes المتقدمة من خلال الانتقال إلى واجهة برمجة تطبيقات Gateway كمعيار طويل الأمد لإدارة حركة المرور في الداخل والطبقة السابعة. ننصحك بأن تبدأ في تخطيط مسار الهجرة بناء على إعدادك الحالي:

تتمثل إحدى الطرق لتوجيه بروتوكول نقل النص التشعبي (HTTP) وحركة مرور آمنة (HTTPS) إلى التطبيقات التي تعمل على مجموعة خدمة Azure Kubernetes ‏(AKS) في استخدام كائن Kubernetes Ingress. عند تمكين الوظيفة الإضافية لتوجيه التطبيق باستخدام NGINX، فإنه يقوم بإنشاء وحدة تحكم دخول وتكوينها وإدارتها في مجموعة AKS الخاصة بك.

توضح هذه المقالة كيفية تمكين وحدة تحكم دخول NGINX المدارة وتكوين كائن دخول لتوجيه حركة المرور إلى تطبيق في نظام مجموعة AKS.

الوظيفة الإضافية لتوجيه التطبيق مع ميزات NGINX

تقدم الوظيفة الإضافية لتوجيه التطبيق مع NGINX ما يلي:

  • تكوين سهل لوحدات تحكم دخول NGINX المدارة استنادا إلى وحدة تحكم دخول Kubernetes NGINX.
  • التكامل مع Azure DNS لإدارة المنطقة العامة والخاصة.
  • إنهاء SSL مع الشهادات المخزنة في Azure Key Vault.

للحصول على تكوينات أخرى، راجع:

مهم

ابتداء من 30 سبتمبر 2027، لم تعد خدمة خدمة Azure Kubernetes ‏(AKS) تدعم إضافة Open Service Mesh (OSM). تم إيقاف مشروع Open Service Mesh في المراحل الأولى.

إذا كان مجموعتك تستخدم إضافة OSM، انتقل إلى إضافة Istio قبل انتهاء الدعم. ينطبق إشعار التقاعد هذا فقط على إضافة OSM المدارة ولا يتناول تركيبات الشبكة المفتوحة المصدر أو المدارة ذاتيا للخدمات. لخطوات الترحيل، راجع إرشادات الهجرة من إضافة OSM إلى إضافة Istio. للبقاء على اطلاع بإعلانات وتحديثات AKS، تابع ملاحظات إصدار AKS.

المتطلبات الأساسية

  • اشتراك Azure. إذا لم يكن لديك اشتراك Azure، يمكنك إنشاء حساب مجاني.
  • تم تثبيت الإصدار 2.54.0 من Azure CLI أو إصدار أحدث وتكوينه. قم بتشغيل az --version للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.

القيود

  • تدعم الوظيفة الإضافية لتوجيه التطبيق ما يصل إلى خمس مناطق Azure DNS.

  • يمكن تمكين الوظيفة الإضافية لتوجيه التطبيق فقط على مجموعات AKS ذات الهوية المدارة.

  • يجب أن تكون جميع مناطق Azure DNS العمومية المدمجة مع الوظيفة الإضافية في نفس مجموعة الموارد.

  • يجب أن تكون جميع مناطق Azure DNS الخاصة المدمجة مع الوظيفة الإضافية في نفس مجموعة الموارد.

  • تحرير ingress-nginx ConfigMap في app-routing-system مساحة الاسم غير مدعوم.

  • إذا تطابقت قيمة التعليق التوضيحي للمقتطف مع أي من القيم المحظورة التالية، فلن يتم تكوين الدخول:

    القيمة المحظورة التأثير
    load_module لم يتم تكوين الدخول.
    lua_package لم يتم تكوين الدخول.
    _by_lua لم يتم تكوين الدخول.
    location لم يتم تكوين الدخول.
    root لم يتم تكوين الدخول.
    proxy_pass لم يتم تكوين الدخول.
    serviceaccount لم يتم تكوين الدخول.
    { لم يتم تكوين الدخول.
    } لم يتم تكوين الدخول.
    ' لم يتم تكوين الدخول.
  • لا تدعم الوظيفة الإضافية رسميا إدخال عناصر جانبية غير مدارة Microsoft (على سبيل المثال، بيانات تتبع الاستخدام المخصصة أو التسجيل أو عوامل الأمان) في جرابات وكيل ingress-nginx التي تديرها. إذا اخترت حقن جانبك الخاص بك في وحدة بروكسي مدارة، فإن Microsoft تقدم فقط دعما بأفضل جهد لأي مشاكل تواجهها.

تمكين الوظيفة الإضافية لتوجيه التطبيق باستخدام Azure CLI

تمكين على نظام مجموعة جديد

لتمكين توجيه التطبيق على نظام مجموعة جديد، استخدم az aks create الأمر ، مع تحديد العلامة --enable-app-routing .

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --enable-app-routing \
    --generate-ssh-keys

تمكين على نظام مجموعة موجود

لتمكين توجيه التطبيق على مجموعة موجودة، استخدم az aks approuting enable الأمر .

az aks approuting enable --resource-group <resource-group-name> --name <cluster-name>

قم بالاتصال بمجموعة AKS

للاتصال بمجموعة Kubernetes من الكمبيوتر المحلي الخاص بك، يمكنك استخدام kubectl، عميل سطر أوامر Kubernetes. يمكنك تثبيته محليا باستخدام az aks install-cli الأمر . في حال كنت تستخدم Azure Cloud Shell، يكون kubectl مثبتاً بالفعل.

قم بتكوين kubectl للاتصال بنظام مجموعة Kubernetes باستخدام أمر az aks get-credentials.

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

نشر تطبيق

تحدد كائنات دخول Kubernetes قواعد التوجيه لوحدة تحكم الدخول. استخدم فئة الدخول المدارة للوظيفة الإضافية لتوجيه التطبيق والتعليقات التوضيحية المدعومة لتكوين كيفية تعامل وحدة التحكم الخاصة بها مع نسبة استخدام الشبكة.

  1. قم بإنشاء مساحة اسم التطبيق التي تم استدعاؤها aks-store لتشغيل أمثلة pods باستخدام kubectl create namespace الأمر .

    kubectl create namespace aks-store
    
  2. انشر تطبيق مخزن AKS باستخدام ملف بيان YAML التالي:

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
    

ينشئ rabbitmqهذا البيان عمليات order-serviceproduct-servicestore-front النشر والنشر والخدمات المقابلة. store-front تعرض الخدمة المنفذ 80، الذي يوجهه الدخول في القسم التالي.

إنشاء كائن الدخول

عند تمكين الوظيفة الإضافية لتوجيه التطبيق، فإنه ينشئ فئة دخول تسمى webapprouting.kubernetes.azure.com. حدد هذه الفئة في كائن دخول لاستخدام وحدة تحكم دخول NGINX المدارة للوظيفة الإضافية.

  1. انسخ بيان YAML التالي في ملف جديد يسمى ingress.yaml واحفظ الملف إلى الكمبيوتر المحلي.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: store-front
      namespace: aks-store
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. إنشاء مورد الدخول باستخدام الأمر kubectl apply.

    kubectl apply -f ingress.yaml -n aks-store
    

    يظهر إخراج المثال التالي المورد الذي تم إنشاؤه:

    ingress.networking.k8s.io/store-front created
    

التحقق من مورد الدخول المدار

يمكنك التحقق من إنشاء الدخول المدار باستخدام kubectl get ingress الأمر .

kubectl get ingress -n aks-store

يظهر إخراج المثال التالي الدخول المدار الذي تم إنشاؤه:

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

يمكنك التحقق من أن مخزن AKS يعمل عن طريق توجيه المتصفح إلى عنوان IP العام لوحدة تحكم الدخول. يسترد الأمر التالي عنوان IP الخارجي المعين بواسطة موازن التحميل إلى خدمة وحدة تحكم nginx دخول NGINX المدارة app-routing-system في مساحة الاسم:

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

إزالة الوظيفة الإضافية لتوجيه التطبيق

لإزالة مساحة الاسم المقترنة kubectl delete namespace ، استخدم الأمر .

kubectl delete namespace aks-store

لإزالة الوظيفة الإضافية لتوجيه التطبيق من نظام المجموعة، استخدم az aks approuting disable الأمر .

az aks approuting disable --name <cluster-name> --resource-group <resource-group-name>

إشعار

لتجنب التعطيل المحتمل لنسبة استخدام الشبكة في نظام المجموعة عند تعطيل الوظيفة الإضافية لتوجيه التطبيق، تظل بعض موارد Kubernetes، بما في ذلك configMapsوالأسراروالنشر الذي يقوم بتشغيل وحدة التحكم، على نظام المجموعة. توجد هذه الموارد في مساحة اسم نظام توجيه التطبيق. يمكنك إزالة هذه الموارد إذا لم تعد هناك حاجة إليها عن طريق حذف مساحة الاسم باستخدام kubectl delete ns app-routing-system.