Dela via


SSL-avlastning med Application Gateway för containrar – Gateway-API

Det här dokumentet hjälper dig att konfigurera ett exempelprogram som använder följande resurser från Gateway-API:et. Här är steg för att:

Bakgrund

Application Gateway för containrar möjliggör SSL-avlastning för bättre bakändsprestanda. Se följande exempelscenario:

En bild som visar SSL-avlastning med Application Gateway för containrar.

Förutsättningar

  1. Om du följer BYO-distributionsstrategin, se till att du konfigurerar Application Gateway för Containers-resurser och ALB Controller

  2. Om du följer den hanterade distributionsstrategin för ALB, säkerställ att du tillhandahåller din ALB Controller och applikationsgatewayen för containrar via den anpassade resursen ApplicationLoadBalancer.

  3. Distribuera HTTPS-exempelprogrammet Tillämpa följande deployment.yaml-fil på klustret för att skapa ett exempelwebbprogram för att demonstrera TLS/SSL-avlastning.

    kubectl apply -f https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/refs/heads/main/articles/application-gateway/for-containers/examples/https-scenario/ssl-termination/deployment.yaml
    

    Det här kommandot skapar följande i klustret:

    • ett namnområde med namnet test-infra
    • en tjänst som kallas echo i test-infra-namnområdet
    • en implementering som anropas echo i test-infra namnrymden
    • en hemlighet som heter listener-tls-secret i test-infra namnområdet

Distribuera de gateway-API-resurser som krävs

  1. Skapa en gateway

    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
    

Anmärkning

När ALB-styrenheten skapar Application Gateway for Containers-resurser i Azure Resource Manager använder den följande namngivningskonvention för en klientdelsresurs: fe-<eight randomly generated characters>.

Om du vill ändra namnet på den frontend-resurs som skapats i Azure kan du överväga att följa en egen distributionsstrategi.

När gatewayresursen skapas kontrollerar du att statusen är giltig, att lyssnaren är programmerad och att en adress har tilldelats till gatewayen.

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

Exempel på resultatet av en lyckad gateway-skapelse.

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

När gatewayen har skapats skapar du en HTTPRoute-resurs.

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

När HTTPRoute-resursen har skapats kontrollerar du att vägen är Godkänd och att Application Gateway for Containers-resursen är programmerad.

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

Kontrollera att Application Gateway for Containers-resursen har uppdaterats.

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

Testa åtkomsten till programmet

Nu är vi redo att skicka trafik till vårt exempelprogram via det FQDN som tilldelats klientdelen. Använd följande kommando för att hämta FQDN.

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

Genom att använda curl-kommandot på detta FQDN bör svar från serverdelen returneras enligt inställningarna på HTTPRoute.

curl --insecure https://$fqdn/

Grattis, du har installerat ALB Controller, distribuerat en backend-applikation och dirigerat trafik till applikationen via ingressen på Application Gateway för containrar.