Exposer un service AKS via HTTP ou HTTPS à l’aide d’Application Gateway
Cet article illustre l’utilisation des ressources d’entrée Kubernetes pour exposer un exemple de service AKS (Azure Kubernetes Service) par l’intermédiaire d’Azure Application Gateway via HTTP ou HTTPS.
Conseil
Envisagez une Passerelle d'application pour conteneurs pour votre solution d’entrée Kubernetes.
Prérequis
- Graphique Helm
ingress-azure
installé :- 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 avec 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’un déploiement Application Gateway, reportez-vous à ces instructions pour installer le contrôleur d’entrée de la passerelle d’application sur le cluster AKS.
- Un certificat x509 et sa clé privée, si vous souhaitez utiliser le protocole HTTPS sur cette application.
Déployer l’application livre d’or
L’application guestbook
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 ressource d’entrée Kubernetes, le service n’est pas accessible depuis l’extérieur du cluster AKS. Vous utilisez l’application et configurez des ressources d’entrée pour accéder à l’application via HTTP et HTTPS.
Pour déployer l’application guestbook
:
Téléchargez
guestbook-all-in-one.yaml
à partir de cette page GitHub.Déployez
guestbook-all-in-one.yaml
dans votre cluster AKS en l’exécutant la commande suivante :kubectl apply -f guestbook-all-in-one.yaml
Exposer des services via HTTP
Pour exposer l’application guestbook
, 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 du déploiement Application Gateway.
Enregistrez la ressource d’entrée précédente en tant que ing-guestbook.yaml
:
Déployez
ing-guestbook.yaml
en exécutant la commande suivante :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 vérifier la disponibilité en accédant à l’adresse publique du déploiement Application Gateway.
Exposer des services via HTTPS
Sans spécification de nom d’hôte
Si vous ne spécifiez pas de nom d’hôte, le service guestbook
est disponible sur tous les noms d’hôte qui pointent vers le déploiement Application Gateway.
Avant de déployer la ressource d’entrée, créez un secret Kubernetes pour héberger le certificat et la clé privée :
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Définissez la ressource d’entrée suivante. Dans la section
secretName
, remplacez<guestbook-secret-name>
par le nom de votre secret.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
Stockez la ressource d’entrée dans fichier nommé
ing-guestbook-tls.yaml
.Déployez
ing-guestbook-tls.yaml
en exécutant la commande suivante :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 spécification d’un nom d’hôte
Vous pouvez également spécifier le nom d’hôte sur la ressource d’entrée afin de multiplexer les configurations et services TLS. Lorsque vous spécifiez un nom d’hôte, le service guestbook
est disponible uniquement sur l’hôte spécifié.
Définissez la ressource d’entrée suivante. Dans la section
secretName
, remplacez<guestbook-secret-name>
par le nom de votre secret. Dans les sectionshosts
ethost
, remplacez<guestbook.contoso.com>
par le nom de votre hôte.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 exécutant la commande suivante :kubectl 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é.
Intégrer aux autres services
Utilisez la ressource d’entrée suivante pour ajouter des chemins d’accès et 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