تفريغ SSL مع بوابة التطبيق للحاويات - واجهة برمجة تطبيقات البوابة
يساعد هذا المستند في إعداد تطبيق مثال يستخدم الموارد التالية من واجهة برمجة تطبيقات البوابة. يتم توفير الخطوات إلى:
- إنشاء مورد بوابة مع وحدة استماع HTTPS واحدة.
- إنشاء HTTPRoute يشير إلى خدمة خلفية.
خلفية
تتيح بوابة التطبيق للحاويات إلغاء تحميل SSL للحصول على أداء خلفية أفضل. راجع المثال التالي للسيناريو:
المتطلبات الأساسية
إذا اتبع استراتيجية نشر BYO، فتأكد من إعداد بوابة التطبيق لموارد الحاويات ووحدة تحكم ALB
إذا اتبع استراتيجية النشر المدارة ALB، فتأكد من توفير وحدة تحكم ALB الخاصة بك وموارد Application Gateway للحاويات عبر مورد ApplicationLoadBalancer المخصص.
نشر نموذج تطبيق HTTPS تطبيق ملف deployment.yaml التالي على نظام المجموعة لإنشاء نموذج تطبيق ويب لإظهار تفريغ TLS/SSL.
kubectl apply -f https://trafficcontrollerdocs.blob.core.windows.net/examples/https-scenario/ssl-termination/deployment.yaml
ينشئ هذا الأمر ما يلي على نظام المجموعة:
- مساحة اسم تسمى
test-infra
- خدمة واحدة تسمى
echo
فيtest-infra
مساحة الاسم - نشر واحد يسمى
echo
فيtest-infra
مساحة الاسم - سر واحد يسمى
listener-tls-secret
فيtest-infra
مساحة الاسم
- مساحة اسم تسمى
توزيع موارد واجهة برمجة تطبيقات البوابة المطلوبة
إنشاء بوابة
kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: gateway-01 namespace: test-infra annotations: alb.networking.azure.io/alb-namespace: alb-test-infra alb.networking.azure.io/alb-name: alb-test spec: gatewayClassName: azure-alb-external listeners: - name: https-listener port: 443 protocol: HTTPS allowedRoutes: namespaces: from: Same tls: mode: Terminate certificateRefs: - kind : Secret group: "" name: listener-tls-secret EOF
إشعار
عندما تنشئ وحدة تحكم ALB موارد بوابة التطبيق للحاويات في ARM، ستستخدم اصطلاح التسمية التالي لمورد الواجهة الأمامية: أحرف fe-8< التي تم إنشاؤها عشوائيا>
إذا كنت ترغب في تغيير اسم الواجهة الأمامية التي تم إنشاؤها في Azure، ففكر في اتباع استراتيجية إحضار التوزيع الخاصة بك.
عند إنشاء مورد البوابة، تأكد من صحة الحالة، وبرمجة وحدة الاستماع، وتعيين عنوان إلى البوابة.
kubectl get gateway gateway-01 -n test-infra -o yaml
مثال على مخرجات إنشاء البوابة الناجحة.
status:
addresses:
- type: Hostname
value: xxxx.yyyy.alb.azure.com
conditions:
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Valid Gateway
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
listeners:
- attachedRoutes: 0
conditions:
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: ""
observedGeneration: 1
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Listener is accepted
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
name: https-listener
supportedKinds:
- group: gateway.networking.k8s.io
kind: HTTPRoute
بمجرد إنشاء البوابة، قم بإنشاء مورد HTTPRoute.
kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: https-route
namespace: test-infra
spec:
parentRefs:
- name: gateway-01
rules:
- backendRefs:
- name: echo
port: 80
EOF
بمجرد إنشاء مورد HTTPRoute، تأكد من قبول المسار وبرمجة مورد Application Gateway for Containers.
kubectl get httproute https-route -n test-infra -o yaml
تحقق من تحديث مورد Application Gateway for Containers بنجاح.
status:
parents:
- conditions:
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: ""
observedGeneration: 1
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: Route is Accepted
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
controllerName: alb.networking.azure.io/alb-controller
parentRef:
group: gateway.networking.k8s.io
kind: Gateway
name: gateway-01
namespace: test-infra
اختبار الوصول إلى التطبيق
الآن نحن على استعداد لإرسال بعض نسبة استخدام الشبكة إلى نموذج التطبيق الخاص بنا، عبر FQDN المعين للواجهة الأمامية. استخدم الأمر التالي للحصول على FQDN.
fqdn=$(kubectl get gateway gateway-01 -n test-infra -o jsonpath='{.status.addresses[0].value}')
يجب أن يرجع Curling FQDN هذا الاستجابات من الخلفية كما تم تكوينها على HTTPRoute.
curl --insecure https://$fqdn/
تهانينا، لقد قمت بتثبيت وحدة تحكم ALB، ونشر تطبيق الخلفية وتوجيه حركة المرور إلى التطبيق عبر الدخول على بوابة التطبيق للحاويات.