Déchargement SSL avec Application Gateway pour les conteneurs – Entrée API
Ce document permet de configurer un exemple d’application qui utilise la ressource d’entrée à partir de l’API d’entrée:
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 d’entrée requises
- Créer une entrée
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
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 d’entrée est créée, vérifiez que l’état affiche le nom d’hôte de votre équilibreur de charge et que les deux ports écoutent les requêtes.
kubectl get ingress ingress-01 -n test-infra -o yaml
Exemple de sortie de création d’entrée réussie.
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
Tester l’accès à l’application
Nous sommes maintenant prêts à envoyer du trafic vers notre exemple d'application, via le FQDN attribué au frontend. Utilisez la commande ci-dessous pour obtenir le nom de domaine complet.
fqdn=$(kubectl get ingress ingress-01 -n test-infra -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Le curling de ce nom de domaine complet doit retourner des réponses du back-end tel qu’il est configuré sur HTTPRoute.
fqdnIp=$(dig +short $fqdn)
curl -vik --resolve example.com:443:$fqdnIp https://example.com
Félicitations, vous avez installé le contrôleur ALB, déployé une application principale et routé le trafic vers l’application via Ingress on Application Gateway pour conteneurs.