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.

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.

  1. Téléchargez guestbook-all-in-one.yamlici
  2. 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.

  1. Déployez ing-guestbook.yaml en l’exécutant :

    kubectl apply -f ing-guestbook.yaml
    
  2. 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.

  1. 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>
    
  2. 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 fichier ing-guestbook-tls.yaml.

  3. Déployez ing-guestbook-tls.yam en l’exécutant

    kubectl apply -f ing-guestbook-tls.yaml
    
  4. 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é.

  1. 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 section hosts 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
    
  2. Déployez ing-guestbook-tls-sni.yaml en l’exécutant

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. 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