Partager via


Déchargement SSL avec Azure Passerelle d’application pour conteneurs – API Passerelle

Ce document permet de configurer un exemple d’application qui utilise les ressources suivantes depuis l’API Gateway. Les étapes sont fournies pour :

Contexte

Application Gateway pour conteneurs active le déchargement SSL pour un meilleur niveau de performance du back-end. Consultez l’exemple de scénario suivant :

Figure montrant le déchargement SSL avec Application Gateway pour conteneurs.

Conditions préalables

  1. Si vous suivez la stratégie de déploiement BYO, veillez à configurer vos ressources de Passerelle d’application pour conteneurs et votre Contrôleur ALB.

  2. Si vous suivez la stratégie de déploiement managé ALB, veillez à provisionner vos Contrôleur ALB et les ressources Application Gateway pour conteneurs via les ressources ApplicationLoadBalancer personnalisée.

  3. Déployer un exemple d’application HTTPS. Appliquez le fichier deployment.yaml suivant sur votre cluster pour créer un exemple d’application web pour illustrer le déchargement TLS/SSL.

    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
    

    Cette commande crée les éléments suivants sur votre cluster :

    • un espace de noms nommé test-infra
    • un service appelé echo dans l’espace de noms test-infra
    • un déploiement appelé echo dans l’espace de noms test-infra
    • un secret appelé listener-tls-secret dans l’espace de noms test-infra

Déployer les ressources d’API de passerelle requises

  1. Créer une passerelle

    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
    

Remarque

Lorsque le contrôleur ALB crée les ressources Application Gateway pour conteneurs dans Azure Resource Manager, il utilise la convention d’affectation de noms suivante pour une ressource frontend : fe-<eight randomly generated characters>

Si vous souhaitez modifier le nom de la ressource front-end créée dans Azure, envisagez de suivre la stratégie de déploiement bring-your-own.

Lorsque la ressource de passerelle est créée, vérifiez que l’état est valide, que l’écouteur est programméet qu’une adresse est affectée à la passerelle.

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

Exemple de sortie d’une création réussie de passerelle.

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

Une fois la passerelle créée, créez une ressource 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

Une fois la ressource HTTPRoute créée, vérifiez que l’itinéraire est accepté et que la ressource Passerelle d’application pour conteneurs est programmée.

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

Vérifiez que l’état de la ressource Passerelle d'application pour conteneurs est correctement mis à jour.

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

Tester l’accès à l’application

Nous sommes maintenant prêts à envoyer du trafic vers notre exemple d’application, via le FQDN attribué au front-end. Utilisez la commande suivante pour obtenir le nom de domaine complet.

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

L’appel à l’aide de la commande curl de ce nom de domaine complet doit retourner des réponses du back-end tel qu’il est configuré sur HTTPRoute.

curl --insecure https://$fqdn/

Félicitations, vous avez installé le contrôleur ALB, déployé une application principale et routé le trafic vers l’application via l’Ingress sur Application Gateway pour conteneurs.