Dela via


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

Det här dokumentet hjälper dig att konfigurera ett exempelprogram som använder ingressresursen från INGRESS-API:et:

Bakgrund

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

A figure showing SSL offloading with Application Gateway for Containers.

Förutsättningar

  1. Om du följer DISTRIBUTIONsstrategin för BYO kontrollerar du att du har konfigurerat application gateway för containrar och ALB-styrenhet

  2. Om du följer den hanterade distributionsstrategin för ALB kontrollerar du att du etablerar ALB-styrenheten och application gatewayen för containrar via den anpassade resursen ApplicationLoadBalancer.

  3. Distribuera ett HTTPS-exempelprogram: Använd följande deployment.yaml-fil i 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 anropas echo test-infra i namnområdet
    • en distribution som anropas echo i test-infra namnområdet
    • en hemlighet som heter listener-tls-secret i test-infra namnområdet

Distribuera nödvändiga INGRESS API-resurser

  1. Skapa en ingress
kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-01
  namespace: test-infra
  annotations:
    alb.networking.azure.io/alb-name: alb-test
    alb.networking.azure.io/alb-namespace: alb-test-infra
spec:
  ingressClassName: azure-alb-external
  tls:
  - hosts:
    - example.com
    secretName: listener-tls-secret
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: echo
            port:
              number: 80
EOF

Kommentar

När ALB-styrenheten skapar Application Gateway for Containers-resurser i ARM använder den följande namngivningskonvention för en klientdelsresurs: fe-8< slumpmässigt genererade tecken>

Om du vill ändra namnet på klientdelen som skapats i Azure kan du överväga att följa din egen distributionsstrategi.

När ingressresursen skapas kontrollerar du att statusen visar värdnamnet för lastbalanseraren och att båda portarna lyssnar efter begäranden.

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

Exempel på utdata från skapande av inkommande.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.networking.azure.io/alb-frontend: FRONTEND_NAME
    alb.networking.azure.io/alb-id: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzz
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"alb.networking.azure.io/alb-frontend":"FRONTEND_NAME","alb.networking.azure.io/alb-id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzz"},"name"
:"ingress-01","namespace":"test-infra"},"spec":{"ingressClassName":"azure-alb-external","rules":[{"host":"example.com","http":{"paths":[{"backend":{"service":{"name":"echo","port":{"number":80}}},"path":"/","pathType":"Prefix"}]}}],"tls":[{"hosts":["example.com"],"secretName":"listener-tls-secret"}]}}
  creationTimestamp: "2023-07-22T18:02:13Z"
  generation: 2
  name: ingress-01
  namespace: test-infra
  resourceVersion: "278238"
  uid: 17c34774-1d92-413e-85ec-c5a8da45989d
spec:
  ingressClassName: azure-alb-external
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          service:
            name: echo
            port:
              number: 80
        path: /
        pathType: Prefix
  tls:
  - hosts:
    - example.com
    secretName: listener-tls-secret
status:
  loadBalancer:
    ingress:
    - hostname: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.fzyy.alb.azure.com
      ports:
      - port: 80
        protocol: TCP
      - port: 443
        protocol: TCP

Testa åtkomsten till programmet

Nu är vi redo att skicka trafik till vårt exempelprogram via det FQDN som tilldelats klientdelen. Använd kommandot nedan för att hämta det fullständiga domännamnet.

fqdn=$(kubectl get ingress ingress-01 -n test-infra -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')

Curling detta FQDN bör returnera svar från serverdelen enligt konfigurationen på HTTPRoute.

fqdnIp=$(dig +short $fqdn)
curl -vik --resolve example.com:443:$fqdnIp https://example.com

Grattis, du har installerat ALB-styrenheten, distribuerat ett serverdelsprogram och dirigerat trafik till programmet via Ingress på Application Gateway för containrar.