Entrée NGINX managée avec le module complémentaire de routage d’applications

L’un des moyens d’acheminer le trafic HTTP (Hypertext Transfer Protocol) et sécurisé (HTTPS) vers des applications s’exécutant sur un cluster Azure Kubernetes Service (AKS) consiste à utiliser l’objet d’entrée Kubernetes. Lorsque vous créez un objet Ingress qui utilise les classes d’entrées NGINX du module complémentaire de routage d’applications, ce dernier crée, configure et gère un ou plusieurs contrôleurs Ingress dans votre cluster AKS.

Cet article montre comment déployer et configurer un contrôleur d’entrée de base dans votre cluster AKS.

Module complémentaire de routage d’applications avec les fonctionnalités de NGINX

Le module complémentaire de routage d’applications avec NGINX offre les avantages suivants :

  • Configuration facile des contrôleurs NGINX Ingress managés basés sur le contrôleur d’entrée NGINX Kubernetes.
  • Intégration à Azure DNS pour la gestion des zones publiques et privées
  • Arrêt SSL avec des certificats stockés dans Azure Key Vault

Pour les autres configurations, consultez :

Avec la mise hors service de Open Service Mesh (OSM) par la Cloud Native Computing Foundation (CNCF), l’utilisation du module complémentaire de routage des applications avec OSM n’est pas recommandée.

Prérequis

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, vous pouvez créer un compte gratuit.
  • Azure CLI version 2.54.0 ou ultérieure installée et configurée. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
  • aks-preview Extension Azure CLI de la version 0.5.171 ou ultérieure installée

Limites

  • Le module complémentaire de routage d’applications prend en charge jusqu’à cinq zones Azure DNS.
  • Toutes les zones Azure DNS globales intégrées au module complémentaire doivent se trouver dans le même groupe de ressources.
  • Toutes les zones Azure DNS privées intégrées au module complémentaire doivent se trouver dans le même groupe de ressources.
  • La modification du ConfigMap d’entrée-nginx dans l’espace de noms app-routing-system n’est pas prise en charge.
  • Les annotations d’extrait de code suivantes sont bloquées et empêchent une entrée d’être configurée : load_module, lua_package, _by_lua, location, root, proxy_pass, serviceaccount, {, }, '.

Activer le routage d'applications à l’aide d’Azure CLI

Activer sur un nouveau cluster

Pour activer le routage d’applications sur un nouveau cluster, utilisez la commande az aks create, en spécifiant l’indicateur --enable-app-routing.

az aks create -g <ResourceGroupName> -n <ClusterName> -l <Location> --enable-app-routing

Activer sur un cluster existant

Pour activer le routage des applications sur un cluster existant, utilisez la commande az aks approuting enable.

az aks approuting enable -g <ResourceGroupName> -n <ClusterName>

Se connecter à votre cluster AKS

Pour vous connecter au cluster Kubernetes à partir de votre ordinateur local, utilisez kubectl, le client de ligne de commande Kubernetes. Vous pouvez l’installer localement avec la commande az aks install-cli. Si vous utilisez Azure Cloud Shell, kubectl est déjà installé.

Configurez kubectl afin de vous connecter à votre cluster Kubernetes avec la commande az aks get-credentials.

az aks get-credentials -g <ResourceGroupName> -n <ClusterName>

Déployer une application

Le module complémentaire de routage d’applications utilise des annotations sur des objets d’entrée Kubernetes pour créer les ressources appropriées.

  1. Créez un espace de noms de l’application appelé hello-web-app-routing pour exécuter les exemples de pods à l’aide de la commande kubectl create namespace.

    kubectl create namespace hello-web-app-routing
    
  2. Créez le déploiement en copiant le manifeste YAML suivant dans un nouveau fichier nommé deployment.yaml et enregistrez le fichier sur votre ordinateur local.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: aks-helloworld  
      namespace: hello-web-app-routing
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: aks-helloworld
      template:
        metadata:
          labels:
            app: aks-helloworld
        spec:
          containers:
          - name: aks-helloworld
            image: mcr.microsoft.com/azuredocs/aks-helloworld:v1
            ports:
            - containerPort: 80
            env:
            - name: TITLE
              value: "Welcome to Azure Kubernetes Service (AKS)"
    
  3. Créez le service en copiant le manifeste YAML suivant dans un nouveau fichier nommé service.yaml et enregistrez le fichier sur votre ordinateur local.

    apiVersion: v1
    kind: Service
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      type: ClusterIP
      ports:
      - port: 80
      selector:
        app: aks-helloworld
    

Créer l’objet Entrée (Ingress)

Le module complémentaire de routage d’applications crée une classe d’entrée sur le cluster appelée webapprouting.kubernetes.azure.com. Quand vous créez un objet d’entrée avec cette classe, cela active le module complémentaire.

  1. Copiez le manifeste YAML suivant dans un nouveau fichier nommé ingress.yaml et enregistrez le fichier sur votre ordinateur local.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: aks-helloworld
      namespace: hello-web-app-routing
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - host: <Hostname>
        http:
          paths:
          - backend:
              service:
                name: aks-helloworld
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Créez les ressources de cluster avec la commande kubectl apply.

    kubectl apply -f deployment.yaml -n hello-web-app-routing
    

    L’exemple de sortie suivant présente la ressource créée :

    deployment.apps/aks-helloworld created
    
    kubectl apply -f service.yaml -n hello-web-app-routing
    

    L’exemple de sortie suivant présente la ressource créée :

    service/aks-helloworld created
    
    kubectl apply -f ingress.yaml -n hello-web-app-routing
    

    L’exemple de sortie suivant présente la ressource créée :

    ingress.networking.k8s.io/aks-helloworld created
    

Vérifier que l’entrée managée a été créée

Vous pouvez vérifier que l’entrée managée a été créée avec la commande kubectl get ingress.

kubectl get ingress -n hello-web-app-routing

L’exemple de sortie suivant présente l’entrée managée créée :

NAME             CLASS                                HOSTS               ADDRESS       PORTS     AGE
aks-helloworld   webapprouting.kubernetes.azure.com   myapp.contoso.com   20.51.92.19   80, 443   4m

Supprimer le module complémentaire de routage d’applications

Pour supprimer l’espace de noms associé, utilisez la commande kubectl delete namespace.

kubectl delete namespace hello-web-app-routing

Pour supprimer le module complémentaire de routage d’applications de votre cluster, utilisez la commande az aks approuting disable.

az aks approuting disable --name myAKSCluster --resource-group myResourceGroup 

Lorsque le module complémentaire de routage d’applications est désactivé, certaines ressources Kubernetes peuvent rester dans le cluster. Ces ressources incluent configMaps et secrets, et sont créées dans l’espace de noms app-routing-system. Vous pouvez supprimer ces ressources si vous le souhaitez.

Étapes suivantes