Exposer un service AKS via HTTP ou HTTPS à l’aide d’Application Gateway
Ces tutoriels aident à illustrer l’utilisation des ressources d’entrée de Kubernetes pour exposer un exemple de service Kubernetes par l’intermédiaire d’Azure Application Gateway via HTTP ou HTTPS.
Conseil
Consultez également Présentation de Passerelle d’application pour conteneurs.
Prérequis
- Installer le graphique Helm
ingress-azure
.- Déploiement Greenfield : si vous partez de zéro, reportez-vous à ces instructions d’installation, qui décrivent les étapes à suivre pour déployer un cluster AKS à l’aide d’Application Gateway et y installer le contrôleur d’entrée de la passerelle applicative.
- Déploiement Brownfield : si vous disposez déjà d’un cluster AKS et d’Application Gateway, reportez-vous à ces instructions pour installer le contrôleur d’entrée de la passerelle d’application sur le cluster AKS.
- Si vous souhaitez utiliser le protocole HTTPS sur cette application, vous avez besoin d’un certificat x509 et de sa clé privée.
Déployer l’application guestbook
L’application de livre d’or est une application Kubernetes canonique qui se compose d’un serveur frontal pour l’interface utilisateur Web, d’un serveur principal et d’une base de données Redis. Par défaut, guestbook
expose son application par le biais d’un service nommé frontend
sur le port 80
. Sans une ressource d’entrée Kubernetes, le service n’est pas accessible depuis l’extérieur du cluster AKS. Nous utilisons les ressources d’entrée de l’application et du programme d’installation pour accéder à l’application via HTTP et HTTPS.
Utilisez les instructions suivantes pour déployer l’application de livre d’or.
- Téléchargez
guestbook-all-in-one.yaml
ici - Déployez
guestbook-all-in-one.yaml
dans votre cluster AKS en l’exécutant
kubectl apply -f guestbook-all-in-one.yaml
L’application guestbook
est à présent déployée.
Exposer des services via HTTP
Pour exposer l’application de livre d’or, utilisez la ressource d’entrée suivante :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- backend:
serviceName: frontend
servicePort: 80
Cette entrée expose le service frontend
du déploiement guestbook-all-in-one
comme serveur principal par défaut d’Application Gateway.
Enregistrez la ressource d’entrée ci-dessus sous ing-guestbook.yaml
.
Déployez
ing-guestbook.yaml
en l’exécutant :kubectl apply -f ing-guestbook.yaml
Vérifiez l’état du déploiement dans le journal du contrôleur d’entrée.
L’application guestbook
devrait maintenant être disponible. Vous pouvez le vérifier en vous rendant sur l’adresse publique d’Application Gateway.
Exposer des services via HTTPS
Sans nom d’hôte spécifié
Si vous ne spécifiez pas de nom d’hôte, le service de livre d’or est disponible sur tous les noms d’hôtes pointant vers la passerelle de l’application.
Avant de déployer l’entrée, vous devez créer un secret Kubernetes pour héberger le certificat et la clé privée. Vous pouvez créer un secret Kubernetes en l’exécutant
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Définissez l’entrée suivante. Dans l’entrée, indiquez le nom du secret dans la section
secretName
.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - secretName: <guestbook-secret-name> rules: - http: paths: - backend: serviceName: frontend servicePort: 80
Remarque
Remplacez
<guestbook-secret-name>
dans la ressource d’entrée ci-dessus par le nom de votre clé secrète. Stockez la ressource d’entrée ci-dessus dans un nom de fichiering-guestbook-tls.yaml
.Déployez ing-guestbook-tls.yam en l’exécutant
kubectl apply -f ing-guestbook-tls.yaml
Vérifiez l’état du déploiement dans le journal du contrôleur d’entrée.
L’application guestbook
est désormais disponible sur HTTP et HTTPS.
Avec le nom d’hôte spécifié
Vous pouvez également spécifier le nom d’hôte sur l’entrée afin de multiplexer les configurations et les services TLS. En spécifiant le nom d’hôte, le service de livre d’or n’est disponible que sur l’hôte spécifié.
Définissez l’entrée suivante. Dans l’entrée, spécifiez le nom du secret dans la section
secretName
et remplacez le nom d’hôte dans la sectionhosts
en conséquence.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - hosts: - <guestbook.contoso.com> secretName: <guestbook-secret-name> rules: - host: <guestbook.contoso.com> http: paths: - backend: serviceName: frontend servicePort: 80
Déployez
ing-guestbook-tls-sni.yaml
en l’exécutantkubectl apply -f ing-guestbook-tls-sni.yaml
Vérifiez l’état du déploiement dans le journal du contrôleur d’entrée.
L’application guestbook
est désormais disponible sur HTTP et HTTPS uniquement sur l’hôte spécifié (<guestbook.contoso.com>
dans cet exemple).
Intégrer aux autres services
L’entrée suivante vous permet d’ajouter des chemins supplémentaires dans cette entrée et de rediriger ces chemins vers d’autres services :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: </other/*>
backend:
serviceName: <other-service>
servicePort: 80
- backend:
serviceName: frontend
servicePort: 80