التعليقات التوضيحية لوحدة تحكم الدخول لبوابة التطبيق

يمكن أن يكون مورد Kubernetes Ingress مشروحًا بأزواج مفاتيح/قيم عشوائية. تعتمد AGIC على التعليقات التوضيحية لبرمجة ميزات Application Gateway، والتي ليست قابلة للتكوين باستخدام Ingress YAML. يتم تطبيق التعليقات التوضيحية للدخول على جميع إعدادات HTTP وتجمعات الواجهة الخلفية والمستمعين المشتقة من مورد دخول.

قائمة التعليقات التوضيحية المدعومة

لكي تتم مراقبة مورد Ingress من قِبل AGIC، يجب أن يكون مشروحًا بـ kubernetes.io/ingress.class: azure/application-gateway. ثم يعمل AGIC فقط مع مورد الدخول المعني.

التعليق التوضيحي نوع القيمة القيمة الافتراضية القيم المسموح بها
appgw.ingress.kubernetes.io/backend-path-prefix string nil
appgw.ingress.kubernetes.io/ssl-redirect bool false
appgw.ingress.kubernetes.io/connection-draining bool false
appgw.ingress.kubernetes.io/connection-draining-timeout int32(ثوانٍ) 30
appgw.ingress.kubernetes.io/cookie-based-affinity bool false
appgw.ingress.kubernetes.io/request-timeout int32(ثوانٍ) 30
appgw.ingress.kubernetes.io/use-private-ip bool false
appgw.ingress.kubernetes.io/backend-protocol string http http, https
appgw.ingress.kubernetes.io/rewrite-rule-set string nil

بادئة المسار الخلفي

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

الاستخدام

appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>

مثال

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-bkprefix
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-path-prefix: "/test/"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

في المثال السابق، قمت بتعريف مورد دخول باسم go-server-ingress-bkprefix مع تعليق توضيحي appgw.ingress.kubernetes.io/backend-path-prefix: "/test/". يخبر التعليق التوضيحي بوابة التطبيق بإنشاء إعداد HTTP، والذي يحتوي على تجاوز بادئة مسار للمسار /hello إلى /test/.

إشعار

في المثال أعلاه، يتم تعريف قاعدة واحدة فقط. ومع ذلك، تنطبق التعليقات التوضيحية على مورد الدخول بأكمله، لذلك إذا قام مستخدم بتعريف قواعد متعددة، فسيتم إعداد بادئة مسار الخلفية لكل مسار من المسارات المحددة. إذا أراد المستخدم قواعد مختلفة ببادئات مسار مختلفة (حتى بالنسبة لنفس الخدمة)، فسيحتاج إلى تحديد موارد دخول مختلفة.

TLS إعادة توجيه

بوابة التطبيقيمكن تكوينهالإعادة توجيه عناوين URL HTTP تلقائيًا إلى نظرائهم HTTPS. عند وجود هذا التعليق التوضيحي وتكوين TLS بشكل صحيح، تنشئ وحدة تحكم دخول Kubernetes قاعدة توجيه مع تكوين إعادة توجيه وتطبق التغييرات على Application Gateway. ستكون إعادة التوجيه التي تم إنشاؤها HTTP 301 Moved Permanently.

الاستخدام

appgw.ingress.kubernetes.io/ssl-redirect: "true"

مثال

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-redirect
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  tls:
   - hosts:
     - www.contoso.com
     secretName: testsecret-tls
  rules:
  - host: www.contoso.com
    http:
      paths:
      - backend:
          service:
            name: websocket-repeater
            port:
              number: 80

استنزاف الاتصال

connection-draining: يسمح لنا هذا التعليق التوضيحي بتحديد ما إذا كان يجب تمكين استنزاف الاتصال. connection-draining-timeout: يسمح لنا هذا التعليق التوضيحي بتحديد مهلة، وبعد ذلك تنهي بوابة التطبيق الطلبات إلى نقطة نهاية الواجهة الخلفية المستنفدة.

الاستخدام

appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"

مثال

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-drain
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/connection-draining: "true"
    appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

يسمح لك التعليق التوضيحي التالي بتحديد ما إذا كنت تريد تمكين الترابط المستند إلى ملف تعريف الارتباط.

الاستخدام

appgw.ingress.kubernetes.io/cookie-based-affinity: "true"

مثال

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-affinity
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

مهلة الطلب

يسمح لك التعليق التوضيحي التالي بتحديد مهلة الطلب في ثوان، وبعد ذلك تفشل بوابة التطبيق في الطلب إذا لم يتم تلقي الاستجابة.

الاستخدام

appgw.ingress.kubernetes.io/request-timeout: "20"

مثال

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/request-timeout: "20"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

استخدام IP خاص

يسمح لك التعليق التوضيحي التالي بتحديد ما إذا كنت تريد عرض نقطة النهاية هذه على عنوان IP الخاص لبوابة التطبيق.

إشعار

  • لا تعتمد بوابة التطبيق عدة IPs على نفس المنفذ (مثال: 80/443). سيؤدي الدخول مع التعليق التوضيحي appgw.ingress.kubernetes.io/use-private-ip: "false" وآخر مع appgw.ingress.kubernetes.io/use-private-ip: "true" تشغيل HTTP إلى فشل AGIC أثناء تحديث بوابة التطبيق.
  • بالنسبة لبوابة التطبيق التي لا تحتوي على عنوان IP خاص، يتم تجاهل الدخول باستخدام appgw.ingress.kubernetes.io/use-private-ip: "true" . وينعكس هذا في سجلات وحدة التحكم وأحداث الدخول لتلك الدخول مع NoPrivateIP تحذير.

الاستخدام

appgw.ingress.kubernetes.io/use-private-ip: "true"

مثال

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/use-private-ip: "true"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

بروتوكول الواجهة الخلفية

يسمح لك التعليق التوضيحي التالي بتحديد البروتوكول الذي يجب أن تستخدمه بوابة التطبيق أثناء الاتصال بوحدات الجراب. البروتوكولات المدعومة هي http و https.

إشعار

بينما يتم دعم الشهادات الموقعة ذاتيا على Application Gateway، تدعم https AGIC حاليا فقط عندما تستخدم pods شهادة موقعة من قبل مرجع مصدق معروف.

لا تستخدم المنفذ 80 مع HTTPS والمنفذ 443 مع HTTP على pods.

الاستخدام

appgw.ingress.kubernetes.io/backend-protocol: "https"

مثال

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-protocol: "https"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 443

إعادة كتابة مجموعة القواعد

يسمح لك التعليق التوضيحي التالي بتعيين قاعدة إعادة كتابة موجودة تم تعيينها إلى قاعدة توجيه الطلب المقابلة.

الاستخدام

appgw.ingress.kubernetes.io/rewrite-rule-set: <rewrite rule set name>

مثال

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-bkprefix
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/rewrite-rule-set: add-custom-response-header
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 8080