إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يمكنك إضافة تعليق توضيحي لمورد دخول Kubernetes مع أزواج مفاتيح/قيمة عشوائية. تعتمد وحدة تحكم دخول بوابة التطبيق (AGIC) على التعليقات التوضيحية لبرمجة ميزات بوابة تطبيق Azure غير القابلة للتكوين عبر YAML للدخول. يتم تطبيق التعليقات التوضيحية للدخول على جميع إعدادات HTTP وتجمعات الواجهة الخلفية والمستمعين المشتقة من مورد دخول.
تلميح
ضع في اعتبارك بوابة التطبيق للحاويات لحل دخول Kubernetes الخاص بك. لمزيد من المعلومات، راجع التشغيل السريع: نشر بوابة التطبيق لوحدة تحكم ALB للحاويات.
قائمة التعليقات التوضيحية المدعومة
لكي تلاحظ AGIC مورد دخول، يجب إضافة تعليق توضيحي للمورد باستخدام kubernetes.io/ingress.class: azure/application-gateway.
بادئة المسار الخلفي
يسمح التعليق التوضيحي التالي بإعادة كتابة مسار الواجهة الخلفية المحدد في مورد دخول بالبادئة المحددة. استخدمه لعرض الخدمات التي تختلف نقاط النهاية الخاصة بها عن أسماء نقاط النهاية التي تستخدمها لعرض خدمة في مورد دخول.
الاستخدام
appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-bkprefix
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/.
يعرف المثال قاعدة واحدة فقط. ومع ذلك، تنطبق التعليقات التوضيحية على مورد الدخول بأكمله. لذلك إذا قمت بتعريف قواعد متعددة، يمكنك إعداد بادئة مسار الخلفية لكل مسار من المسارات المحددة. إذا كنت تريد قواعد مختلفة مع بادئات مسار مختلفة (حتى لنفس الخدمة)، تحتاج إلى تحديد موارد دخول مختلفة.
اسم مضيف الواجهة الخلفية
استخدم التعليق التوضيحي التالي لتحديد اسم المضيف الذي يجب أن تستخدمه بوابة التطبيق أثناء التحدث إلى pods.
الاستخدام
appgw.ingress.kubernetes.io/backend-hostname: "internal.example.com"
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-timeout
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-hostname: "internal.example.com"
spec:
rules:
- http:
paths:
- path: /hello/
backend:
service:
name: store-service
port:
number: 80
pathType: Exact
فحص السلامة المخصص
يمكنك تكوين Application Gateway لإرسال فحص صحة مخصص إلى تجمع عناوين الواجهة الخلفية. عند وجود التعليقات التوضيحية التالية، تنشئ وحدة تحكم دخول Kubernetes مسبارا مخصصا لمراقبة تطبيق الواجهة الخلفية. ثم تطبق وحدة التحكم التغييرات على بوابة التطبيق.
-
health-probe-hostname: يسمح هذا التعليق التوضيحي باسم مضيف مخصص على التحقيق الصحي. -
health-probe-port: يقوم هذا التعليق التوضيحي بتكوين منفذ مخصص لفحص السلامة. -
health-probe-path: يحدد هذا التعليق التوضيحي مسار فحص السلامة. -
health-probe-status-codes: يسمح هذا التعليق التوضيحي لفحص الصحة بقبول رموز حالة HTTP المختلفة. -
health-probe-interval: يحدد هذا التعليق التوضيحي الفاصل الزمني الذي يتم فيه تشغيل فحص السلامة. -
health-probe-timeout: يحدد هذا التعليق التوضيحي المدة التي ينتظر فيها مسبار السلامة استجابة قبل فشل الفحص. -
health-probe-unhealthy-threshold: يحدد هذا التعليق التوضيحي عدد فحوصات السلامة التي يجب أن تفشل حتى يتم وضع علامة غير سليم على الواجهة الخلفية.
الاستخدام
appgw.ingress.kubernetes.io/health-probe-hostname: "contoso.com"
appgw.ingress.kubernetes.io/health-probe-port: 80
appgw.ingress.kubernetes.io/health-probe-path: "/"
appgw.ingress.kubernetes.io/health-probe-status-codes: "100-599"
appgw.ingress.kubernetes.io/health-probe-interval: 30
appgw.ingress.kubernetes.io/health-probe-timeout: 30
appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: 2
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/health-probe-hostname: "contoso.com"
appgw.ingress.kubernetes.io/health-probe-port: 81
appgw.ingress.kubernetes.io/health-probe-path: "/probepath"
appgw.ingress.kubernetes.io/health-probe-status-codes: "100-599"
appgw.ingress.kubernetes.io/health-probe-interval: 31
appgw.ingress.kubernetes.io/health-probe-timeout: 31
appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: 2
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
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
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
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
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
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 خاص لبوابة التطبيق.
بالنسبة لمثيل Application Gateway الذي لا يحتوي على عنوان 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-privateip
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/use-private-ip: "true"
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
تجاوز منفذ الواجهة الأمامية
استخدم التعليق التوضيحي التالي لتكوين وحدة استماع أمامية لاستخدام منافذ أخرى غير 80 ل HTTP و443 ل HTTPS.
إذا كان المنفذ ضمن النطاق المعتمد لبوابة التطبيق (من 1 إلى 64999)، يتم إنشاء وحدة الاستماع على هذا المنفذ المحدد. إذا قمت بتعيين منفذ غير صالح أو لا يوجد منفذ في التعليق التوضيحي، يستخدم التكوين الافتراضي 80 أو 443.
الاستخدام
appgw.ingress.kubernetes.io/override-frontend-port: "port"
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-overridefrontendport
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/override-frontend-port: "8080"
spec:
rules:
- http:
paths:
- path: /hello/
backend:
service:
name: store-service
port:
number: 80
pathType: Exact
إشعار
تحتاج الطلبات الخارجية إلى الهدف http://somehost:8080 بدلا من http://somehost.
بروتوكول الواجهة الخلفية
استخدم ما يلي لتحديد البروتوكول الذي يجب أن تستخدمه بوابة التطبيق عند اتصالها بوحدات الجراب. البروتوكولات المدعومة هي HTTP وHTTPS.
على الرغم من أن الشهادات الموقعة ذاتيا مدعومة على Application Gateway، فإن AGIC تدعم حاليا HTTPS فقط عندما تستخدم 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
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-protocol: "https"
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 443
ملحق اسم المضيف
يمكنك تكوين بوابة التطبيق لقبول أسماء مضيفين متعددة. استخدم التعليق التوضيحي hostname-extension لتعريف أسماء مضيفين متعددة، بما في ذلك أسماء مضيفي أحرف البدل. يقوم هذا الإجراء بإلحاق أسماء المضيفين ب FQDN المحدد في معلومات الدخول spec.rules.host على وحدة الاستماع الأمامية، لذلك يتم تكوينه كمستمع متعدد المواقع.
الاستخدام
appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-multisite
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"
spec:
rules:
- host: contoso.com
http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 443
يقوم المثال السابق بتكوين وحدة الاستماع لقبول نسبة استخدام الشبكة لأسماء المضيفين hostname1.contoso.com و hostname2.contoso.com.
نهج WAF للمسار
استخدم التعليق التوضيحي التالي لإرفاق نهج جدار حماية تطبيق ويب (WAF) موجود بمسارات القائمة لمضيف داخل مورد دخول Kubernetes الذي يتم التعليق عليه. يتم تطبيق نهج WAF على كل من /ad-server وعناوين /auth URL.
الاستخدام
appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SampleRG/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/AGICWAFPolcy"
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ad-server-ingress
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/abcd/resourceGroups/rg/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/adserver"
spec:
rules:
- http:
paths:
- path: /ad-server
backend:
service:
name: ad-server
port:
number: 80
pathType: Exact
- path: /auth
backend:
service:
name: auth-server
port:
number: 80
pathType: Exact
شهادة SSL لبوابة التطبيق
يمكنك تكوين شهادة SSL إلى Application Gateway إما من ملف شهادة PFX محلي أو مرجع إلى معرف سري غير منفر ل Azure Key Vault. عندما يكون التعليق التوضيحي موجودا باسم شهادة ويتم تثبيت الشهادة مسبقا في بوابة التطبيق، تقوم وحدة تحكم دخول Kubernetes بإنشاء قاعدة توجيه مع مستمع HTTPS وتطبيق التغييرات على مثيل Application Gateway. يمكنك أيضا استخدام التعليق التوضيحي appgw-ssl-certificate مع ssl-redirect تعليق توضيحي في حالة إعادة توجيه SSL.
إشعار
appgw-ssl-certificate يتم تجاهل التعليق التوضيحي عند تعريف مواصفات TLS في الدخول في نفس الوقت. إذا كنت تريد شهادات مختلفة مع مضيفين مختلفين (إنهاء شهادات TLS متعددة)، تحتاج إلى تحديد موارد دخول مختلفة.
الاستخدام
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
ملف تعريف SSL لبوابة التطبيق
يمكنك تكوين ملف تعريف SSL على مثيل Application Gateway لكل وحدة استماع. عندما يكون التعليق التوضيحي موجودا باسم ملف تعريف ويتم تثبيت ملف التعريف مسبقا في Application Gateway، تنشئ وحدة تحكم دخول Kubernetes قاعدة توجيه مع وحدة استماع HTTPS وتطبق التغييرات على مثيل Application Gateway.
الاستخدام
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
شهادة الجذر الموثوق بها لبوابة التطبيق
يمكنك الآن تكوين شهادات الجذر الخاصة بك إلى Application Gateway ليتم الوثوق بها عبر AGIC. يمكنك استخدام التعليق التوضيحي appgw-trusted-root-certificate مع التعليق التوضيحي backend-protocol للإشارة إلى تشفير SSL من طرف إلى طرف. إذا قمت بتحديد شهادات جذر متعددة، فافصلها بفاسمة؛ على سبيل المثال، name-of-my-root-cert1,name-of-my-root-cert2.
الاستخدام
appgw.ingress.kubernetes.io/backend-protocol: "https"
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-protocol: "https"
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
إعادة كتابة مجموعة القواعد
استخدم التعليق التوضيحي التالي لتعيين قاعدة إعادة كتابة موجودة تم تعيينها إلى قاعدة توجيه الطلب المقابلة.
الاستخدام
appgw.ingress.kubernetes.io/rewrite-rule-set: <rewrite rule set name>
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-bkprefix
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
إعادة كتابة مورد مخصص لمجموعة القواعد
إشعار
يقدم إصدار Application Gateway for Containers العديد من تغييرات الأداء والمرونة والميزات. ضع في اعتبارك استخدام بوابة التطبيق للحاويات للنشر التالي.
يمكنك العثور على قواعد إعادة كتابة عنوان URL لبوابة التطبيق للحاويات في هذه المقالة حول واجهة برمجة تطبيقات البوابة وهذه المقالة حول واجهة برمجة تطبيقات الدخول. يمكنك العثور على قواعد إعادة كتابة العنوان لبوابة التطبيق للحاويات في هذه المقالة حول واجهة برمجة تطبيقات البوابة.
تسمح لك بوابة التطبيق بإعادة كتابة محتويات محددة من الطلبات والاستجابات. باستخدام هذه الميزة، يمكنك ترجمة عناوين URL وتغيير معلمات سلسلة الاستعلام وتعديل عناوين الطلب والاستجابة. يمكنك أيضا استخدام هذه الميزة لإضافة شروط للتأكد من إعادة كتابة عنوان URL أو العناوين المحددة فقط عند استيفاء شروط معينة. إعادة كتابة مجموعة القواعد المورد المخصص يجلب هذه الميزة إلى AGIC.
تتيح عناوين HTTP للعميل والخادم تمرير معلومات إضافية مع طلب أو استجابة. من خلال إعادة كتابة هذه الرؤوس، يمكنك إنجاز مهام مهمة مثل إضافة حقول عناوين متعلقة بالأمان (على سبيل المثال، HSTS أو X-XSS-Protection)، وإزالة حقول رأس الاستجابة التي قد تكشف عن معلومات حساسة، وإزالة معلومات المنفذ من X-Forwarded-For الرؤوس.
باستخدام إمكانية إعادة كتابة عنوان URL، يمكنك:
- أعد كتابة اسم المضيف والمسار وسلسلة الاستعلام الخاصة بعنوان URL للطلب.
- اختر إعادة كتابة عنوان URL لجميع الطلبات أو الطلبات التي تطابق شرطا واحدا أو أكثر من الشروط التي قمت بتعيينها. تستند هذه الشروط إلى خصائص الطلب والاستجابة (عنوان الطلب ورأس الاستجابة ومتغيرات الخادم).
- اختر توجيه الطلب استنادا إلى عنوان URL الأصلي أو عنوان URL المعاد كتابته.
إشعار
هذه الميزة مدعومة منذ 1.6.0-rc1. استخدم appgw.ingress.kubernetes.io/rewrite-rule-set، والذي يسمح باستخدام مجموعة قواعد إعادة كتابة موجودة على Application Gateway.
الاستخدام
appgw.ingress.kubernetes.io/rewrite-rule-set-custom-resource
مثال
apiVersion: appgw.ingress.azure.io/v1beta1
kind: AzureApplicationGatewayRewrite
metadata:
name: my-rewrite-rule-set-custom-resource
spec:
rewriteRules:
- name: rule1
ruleSequence: 21
conditions:
- ignoreCase: false
negate: false
variable: http_req_Host
pattern: example.com
actions:
requestHeaderConfigurations:
- actionType: set
headerName: incoming-test-header
headerValue: incoming-test-value
responseHeaderConfigurations:
- actionType: set
headerName: outgoing-test-header
headerValue: outgoing-test-value
urlConfiguration:
modifiedPath: "/api/"
modifiedQueryString: "query=test-value"
reroute: false
أولوية القاعدة
يسمح التعليق التوضيحي التالي لوحدة تحكم دخول بوابة التطبيق بتعيين أولوية قواعد توجيه الطلب المقترنة بشكل صريح.
الاستخدام
appgw.ingress.kubernetes.io/rule-priority:
مثال
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-rulepriority
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/rule-priority: 10
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 8080
يعين المثال السابق أولوية 10 لقاعدة توجيه الطلب.