Aracılığıyla paylaş


Kapsayıcılar için Application Gateway ile SSL boşaltma - Ağ Geçidi API'si

Bu belge, Ağ Geçidi API'sinden aşağıdaki kaynakları kullanan örnek bir uygulama ayarlamanıza yardımcı olur. Adımlar şunlar için sağlanır:

Background

Kapsayıcılar için Application Gateway, daha iyi arka uç performansı için SSL boşaltmayı etkinleştirir. Aşağıdaki örnek senaryoya bakın:

Kapsayıcılar için Application Gateway ile SSL boşaltmayı gösteren şekil.

Önkoşullar

  1. BYO dağıtım stratejisini izliyorsanız Kapsayıcılar için Application Gateway kaynaklarınızı ve ALB Denetleyicisi'ni ayarladığınızdan emin olun

  2. ALB yönetilen dağıtım stratejisini izliyorsanız, ApplicationLoadBalancer özel kaynağı aracılığıyla ALB Denetleyicinizi ve Kapsayıcılar için Application Gateway kaynaklarınızı sağladığınızdan emin olun.

  3. Örnek HTTPS uygulaması dağıtma TLS/SSL boşaltmayı göstermek üzere örnek bir web uygulaması oluşturmak için kümenize aşağıdaki deployment.yaml dosyasını uygulayın.

    kubectl apply -f https://trafficcontrollerdocs.blob.core.windows.net/examples/https-scenario/ssl-termination/deployment.yaml
    

    Bu komut kümenizde aşağıdakileri oluşturur:

    • adlı bir ad alanı test-infra
    • ad alanında çağrılan echo test-infra bir hizmet
    • ad alanında test-infra adlı echo bir dağıtım
    • ad alanında test-infra adlı listener-tls-secret bir gizli dizi

Gerekli Ağ Geçidi API'sini dağıtma

  1. Ağ Geçidi Oluşturma

    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
    

Not

ALB Denetleyicisi ARM'de Kapsayıcılar için Application Gateway kaynaklarını oluşturduğunda, bir ön uç kaynağı için şu adlandırma kuralını kullanır: fe-8< rastgele oluşturulan karakterler>

Azure'da oluşturulan ön ucun adını değiştirmek isterseniz kendi dağıtım stratejinizi getirin seçeneğini uygulamayı göz önünde bulundurun.

Ağ geçidi kaynağı oluşturulduğunda durumun geçerli olduğundan, dinleyicinin Programlandığından ve ağ geçidine bir adres atandığından emin olun.

kubectl get gateway gateway-01 -n test-infra -o yaml

Başarılı ağ geçidi oluşturma işleminin örnek çıktısı.

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

Ağ geçidi oluşturulduktan sonra bir HTTPRoute kaynağı oluşturun.

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 kaynağı oluşturulduktan sonra yolun Kabul Edildi ve Kapsayıcılar için Application Gateway kaynağının Programlandığından emin olun.

kubectl get httproute https-route -n test-infra -o yaml

Kapsayıcılar için Application Gateway kaynağının başarıyla güncelleştirildiğinden emin olun.

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

Uygulamaya erişimi test etme

Artık ön uçta atanan FQDN aracılığıyla örnek uygulamamıza trafik göndermeye hazırız. FQDN'yi almak için aşağıdaki komutu kullanın.

fqdn=$(kubectl get gateway gateway-01 -n test-infra -o jsonpath='{.status.addresses[0].value}')

Bu FQDN'nin kümelenmesi, HTTPRoute'ta yapılandırıldığı gibi arka uçtan yanıt döndürmelidir.

curl --insecure https://$fqdn/

Tebrikler, ALB Denetleyicisi'ni yüklediniz, bir arka uç uygulaması dağıttınız ve kapsayıcılar için Application Gateway'e giriş yoluyla trafiği uygulamaya yönlendirdiniz.