Partager via


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 :

  1. Téléchargez guestbook-all-in-one.yaml à partir de cette page GitHub.

  2. 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 :

  1. Déployez ing-guestbook.yaml en exécutant la commande suivante :

    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 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.

  1. 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>
    
  2. 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
    
  3. Stockez la ressource d’entrée dans fichier nommé ing-guestbook-tls.yaml.

  4. Déployez ing-guestbook-tls.yaml en exécutant la commande suivante :

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

  1. Définissez la ressource d’entrée suivante. Dans la section secretName, remplacez <guestbook-secret-name> par le nom de votre secret. Dans les sections hosts et host, 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
    
  2. Déployez ing-guestbook-tls-sni.yaml en exécutant la commande suivante :

    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é.

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