Déchargement SSL avec Azure Passerelle d’application pour conteneurs – API Passerelle
Ce document permet de configurer un exemple d’application qui utilise la ressource suivante depuis l’API Gateway. Les étapes sont fournies pour :
- Créez une ressource de passerelle avec un écouteur HTTPS.
- Créez une HTTPRoute qui fait référence à un service principal.
Background
Application Gateway pour conteneurs active le déchargement de SSL pour améliorer les performances du back-end. Consultez l’exemple de scénario suivant :
Prérequis
Si vous suivez la stratégie de déploiement BYO, veillez à configurer vos ressources Application Gateway pour conteneurs et à Contrôleur ALB
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.
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 appelé
test-infra
- un service appelé
echo
dans l’espace de nomstest-infra
- un déploiement appelé
echo
dans l’espace de nomstest-infra
- un secret appelé
listener-tls-secret
dans l’espace de nomstest-infra
- un espace de noms appelé
Déployer les ressources d’API de passerelle requises
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 Passerelle d’application pour conteneurs dans ARM, il utilise la convention de dénomination suivante pour une ressource front-end : fe-<8 caractères générés aléatoirement>
Si vous souhaitez modifier le nom du front-end créé dans Azure, il peut être préférable de suivre la stratégie de déploiement BYO.
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 de la création réussie de la 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 à notre exemple d’application, via le nom de domaine complet affecté 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}')
Le curling 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 on Application Gateway pour conteneurs.