Läs på engelska

Dela via


TLS från slutpunkt till slutpunkt 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 TLS från slutpunkt till slutpunkt för bättre sekretess och säkerhet. I den här designen krypteras trafiken mellan klienten och en Application Gateway för containrars klientdel och trafik som skickas från Application Gateway för containrar till serverdelsmålet krypteras. Se följande exempelscenario:

En bild som visar TLS från slutpunkt till slutpunkt med Application Gateway för containrar.

Förutsättningar

  1. Om du följer BYO-distributionsstrategin kontrollerar du att du konfigurerar application gateway för containrar-resurser 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 HTTPS-exempelprogrammet Tillämpa följande deployment.yaml-fil på klustret för att skapa ett exempelwebbprogram för att demonstrera TLS/SSL-avlastning.

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

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

    • ett namnområde med namnet test-infra
    • en tjänst som anropas https-app test-infra i namnområdet
    • en distribution som anropas https-app i test-infra namnområdet
    • en konfigurationskarta som heter https-app-cm i test-infra namnområdet
    • en hemlighet som heter contoso.com i test-infra namnområdet
    • en hemlighet som heter contoso.xyz i test-infra namnområdet

Distribuera nödvändiga INGRESS API-resurser

  1. Skapa en ingress
Bash
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:
    - contoso.com
    secretName: contoso.com
  rules:
  - host: contoso.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: https-app
            port:
              number: 443
EOF

Anteckning

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.

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

Exempel på utdata från skapande av inkommande.

YAML
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":"contoso.com","http":{"paths":[{"backend":{"service":{"name":"https-app","port":{"number":443}}},"path":"/","pathType":"Prefix"}]}}],"tls":[{"hosts":["contoso.com"],"secretName":"contoso.com"}]}}
  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: contoso.com
    http:
      paths:
      - backend:
          service:
            name: https-app
            port:
              number: 443
        path: /
        pathType: Prefix
  tls:
  - hosts:
    - contoso.com
    secretName: contoso.com
status:
  loadBalancer:
    ingress:
    - hostname: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.fzyy.alb.azure.com
      ports:
      - port: 443
        protocol: TCP

Skapa en IngressExtension för att konfigurera Application Gateway för containrar för att initiera anslutningar till serverdelsservern via TLS.

Bash
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: IngressExtension
metadata:
  name: https-ingress
  namespace: test-infra
spec:
  backendSettings:
    - service: https-app
      ports:
        - port: 443
          protocol: HTTPS
      trustedRootCertificate: contoso.xyz
EOF

När IngressExtension-resursen har skapats kontrollerar du statusen för objektet för att säkerställa att principen är giltig:

Bash
kubectl get IngressExtension https-ingress -n test-infra -o yaml

Exempel på utdata från skapande av giltigt IngressExtension-objekt:

YAML
status:
  conditions:
  - lastTransitionTime: "2023-06-29T16:54:42Z"
    message: Valid IngressExtension
    observedGeneration: 1
    reason: Accepted
    status: "True"
    type: Accepted

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.

Bash
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.

Bash
fqdnIp=$(dig +short $fqdn)
curl -k --resolve contoso.com:443:$fqdnIp https://contoso.com --insecure

Följande resultat bör visas:

Hello world!

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