تفريغ SSL مع بوابة التطبيق للحاويات - واجهة برمجة تطبيقات البوابة

يساعد هذا المستند في إعداد تطبيق مثال يستخدم الموارد التالية من واجهة برمجة تطبيقات البوابة. يتم توفير الخطوات إلى:

خلفية

تتيح بوابة التطبيق للحاويات إلغاء تحميل SSL للحصول على أداء خلفية أفضل. راجع المثال التالي للسيناريو:

رسم توضيحي يظهر تفريغ SSL مع بوابة التطبيق للحاويات.

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

  1. إذا اتبع استراتيجية نشر BYO، فتأكد من إعداد بوابة التطبيق لموارد الحاويات ووحدة تحكم ALB

  2. إذا اتبع استراتيجية النشر المدارة ALB، فتأكد من توفير وحدة تحكم ALB الخاصة بك وموارد Application Gateway للحاويات عبر مورد ApplicationLoadBalancer المخصص.

  3. نشر نموذج تطبيق 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 مساحة الاسم

توزيع موارد واجهة برمجة تطبيقات البوابة المطلوبة

  1. إنشاء بوابة

    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، ونشر تطبيق الخلفية وتوجيه حركة المرور إلى التطبيق عبر الدخول على بوابة التطبيق للحاويات.