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

Avertissement

Le réseau SIG Kubernetes et le Comité de réponse à la sécurité ont annoncé la mise hors service du projet NGINX d’entrée, avec la maintenance se terminant en mars 2026. Aucune action immédiate n’est requise aujourd’hui pour les clusters AKS à l’aide du module complémentaire de routage des applications avec NGINX. Microsoft fournira une prise en charge officielle des correctifs de sécurité critiques pour les ressources NGINX Ingress de l'add-on de routage d'applications jusqu’en novembre 2026.

AKS s’aligne sur Kubernetes en amont en passant à l’API de passerelle comme standard à long terme pour la gestion du trafic d’entrée et L7. Nous vous recommandons de commencer à planifier votre chemin de migration en fonction de votre configuration actuelle :

L’un des moyens d’acheminer le trafic HTTP (Hypertext Transfer Protocol) et HTTPS (sécurisé) vers des applications s’exécutant sur un cluster Azure Kubernetes Service (AKS) consiste à utiliser l’objet d’entrée Kubernetes. Lorsque vous activez le module complémentaire de routage des applications avec NGINX, il crée, configure et gère un contrôleur d’entrée dans votre cluster AKS.

Cet article explique comment activer le contrôleur d’entrée NGINX managé et configurer un objet d’entrée pour router le trafic vers une application 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 d'entrée NGINX 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 :

Important

À compter du 30 septembre 2027, Azure Kubernetes Service (AKS) ne prend plus en charge le module complémentaire Open Service Mesh (OSM). Le projet Open Service Mesh en amont a été mis hors service.

Si votre cluster utilise le module complémentaire OSM, migrez vers le module complémentaire Istio avant la date de fin de support. Cette notification de mise hors service s’applique uniquement au module complémentaire OSM managé et ne traite pas les installations de maillage de services open source ou libre-managé. Pour connaître les étapes de migration, consultez les instructions de migration du module complémentaire OSM vers le module complémentaire Istio. Pour rester informé des annonces et mises à jour AKS, suivez les notes de publication d’AKS.

Conditions préalables

  • 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é et configuré. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Limites

  • Le module complémentaire de routage d’applications prend en charge jusqu’à cinq zones Azure DNS.

  • Le module complémentaire de routage d’applications ne peut être activé que sur des clusters AKS avec identité managée.

  • 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 ingress-nginx dans l’espace de noms app-routing-system n’est pas prise en charge.

  • Si une valeur d’annotation d’extrait de code correspond à l’une des valeurs bloquées suivantes, l’entrée n’est pas configurée :

    Valeur bloquée Résultat
    load_module L’entrée n’est pas configurée.
    lua_package L’entrée n’est pas configurée.
    _by_lua L’entrée n’est pas configurée.
    location L’entrée n’est pas configurée.
    root L’entrée n’est pas configurée.
    proxy_pass L’entrée n’est pas configurée.
    serviceaccount L’entrée n’est pas configurée.
    { L’entrée n’est pas configurée.
    } L’entrée n’est pas configurée.
    ' L’entrée n’est pas configurée.
  • Le module complémentaire ne prend pas officiellement en charge l'injection de sidecars non gérés par Microsoft (par exemple, les données de télémétrie personnalisées, la journalisation ou les agents de sécurité) dans les pods proxy d'entrée-nginx qu'il gère. Si vous choisissez d’injecter votre propre side-car dans un pod proxy géré, Microsoft fournit uniquement une assistance dans la mesure du possible pour tout problème que vous rencontrez.

Activer le module complémentaire de routage des applications à l’aide de 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 \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --enable-app-routing \
    --generate-ssh-keys

Activer sur un cluster existant

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

az aks approuting enable --resource-group <resource-group-name> --name <cluster-name>

Se connecter à votre cluster AKS

Pour vous connecter au cluster Kubernetes à partir de votre ordinateur local, vous 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 --resource-group <resource-group-name> --name <cluster-name>

Déployer une application

Les objets d’entrée Kubernetes définissent des règles de routage pour un contrôleur d’entrée. Utilisez la classe d’entrée managée du module complémentaire de routage d’application et les annotations prises en charge pour configurer la façon dont son contrôleur gère le trafic.

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

    kubectl create namespace aks-store
    
  2. Déployez l’application de magasin AKS à l’aide du fichier manifeste YAML suivant :

    kubectl apply -f https://raw.githubusercontent.com/Azure-Samples/aks-store-demo/main/sample-manifests/docs/app-routing/aks-store-deployments-and-services.yaml -n aks-store
    

Ce manifeste crée rabbitmq, order-service, product-serviceet déploiements et store-front services correspondants. Le service expose le store-front port 80, vers lequel l’entrée est acheminée dans la section suivante.

Créer l’objet d'entrée

Lorsque vous activez le module complémentaire de routage d’application, il crée une classe d’entrée nommée webapprouting.kubernetes.azure.com. Spécifiez cette classe dans un objet d’entrée pour utiliser le contrôleur d’entrée NGINX managé du 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: store-front
      namespace: aks-store
    spec:
      ingressClassName: webapprouting.kubernetes.azure.com
      rules:
      - http:
          paths:
          - backend:
              service:
                name: store-front
                port:
                  number: 80
            path: /
            pathType: Prefix
    
  2. Créez la ressource d’entrée avec la commande kubectl apply.

    kubectl apply -f ingress.yaml -n aks-store
    

    La sortie de l’exemple suivant montre la ressource créée :

    ingress.networking.k8s.io/store-front created
    

Vérifier la ressource d’entrée managé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 aks-store

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

NAME          CLASS                                HOSTS   ADDRESS       PORTS   AGE
store-front   webapprouting.kubernetes.azure.com   *       51.8.10.109   80      110s

Vous pouvez vérifier que le magasin AKS fonctionne en pointant votre navigateur vers l’adresse IP publique du contrôleur d’entrée. La commande suivante récupère l’adresse IP externe affectée par l’équilibreur de charge au service d’entrée du contrôleur d’entrée NGINX managé dans l’espace app-routing-system de nginx noms :

kubectl get service -n app-routing-system nginx -o jsonpath="{.status.loadBalancer.ingress[0].ip}"

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 aks-store

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 <cluster-name> --resource-group <resource-group-name>

Remarque

Pour éviter toute interruption potentielle du trafic vers le cluster lorsque vous désactivez le module complémentaire de routage des applications, certaines ressources Kubernetes, notamment configMaps, secrets et le déploiement qui exécute le contrôleur, restent sur le cluster. Ces ressources se trouvent dans l’espace de noms app-routing-system. Vous pouvez supprimer ces ressources si elles ne sont plus nécessaires en supprimant l’espace de noms avec kubectl delete ns app-routing-system.