Le NGINX Ingress Controller sert de passerelle d'entrée pour les clusters managés Alibaba Cloud Container Service for Kubernetes (ACK). Il achemine le trafic externe vers les services internes en appliquant des règles de routage flexibles. Grâce à la prise en charge du chiffrement HTTPS, des déploiements canary et des configurations personnalisées via des annotations, il offre un accès réseau sécurisé, hautement disponible et évolutif au niveau 7 (L7).
À compter du 11 septembre 2025, suite à l'arrêt de la facturation basée sur les spécifications pour le Classic Load Balancer (CLB), des instances Network Load Balancer (NLB) seront utilisées par défaut lors de la création de services de type équilibreur de charge ou de l'installation de nouveaux NGINX Ingress Controllers dans la console Container Service for Kubernetes. La création de services basés sur CLB sera restreinte à une liste d'autorisation (allowlist) et ces services utiliseront par défaut le modèle de facturation paiement à l'utilisation. Pour plus d'informations, consultez la rubrique [[Product change] Announcement on changes to the default load balancer type and billing method for new services and the NGINX Ingress Controller](t2980097.xdita#).
Le projet open source Ingress-NGINX en amont ne sera plus maintenu après mars 2026. Par conséquent, Container Service for Kubernetes cessera de maintenir le composant NGINX Ingress Controller. Veuillez prendre conscience des risques associés. Pour plus d'informations, consultez la rubrique [[Product announcement] Announcement on the end of maintenance for the NGINX Ingress Controller component](t3212739.xdita#).
Notes d'utilisation
Ne supprimez pas le service par défaut utilisé par le NGINX Ingress Controller. Après l'installation du module complémentaire, un service par défaut nommé
nginx-ingress-lbest créé dans le namespacekube-system. La suppression de ce service rend le module complémentaire instable et peut provoquer son arrêt brutal.Utilisez les Modules complémentaires ou l'OpenAPI pour configurer les paramètres personnalisés du module complémentaire. La modification de la configuration par d'autres méthodes peut entraîner un dysfonctionnement du module et interférer avec les futures mises à niveau.
Utilisez le ConfigMap NGINX Ingress pour les configurations personnalisées. Le support technique ne couvre pas les problèmes causés par des configurations supplémentaires, telles que les extraits de code (snippets) ou le code Lua.
Mettez à jour rapidement le module complémentaire NGINX Ingress Controller afin d'éviter les interruptions d'activité dues à des bugs ou des vulnérabilités de sécurité dans la version communautaire en amont.
Installer le module complémentaire NGINX Ingress Controller
Créer un exemple d'application
L'exemple d'application déploie deux charges de travail sans état (Deployments) nommées coffee et tea, ainsi que leurs Services correspondants nommés coffee-svc et tea-svc.
Console
|
1. Créez les ressources
|
|
2. Consultez le résultat Dans la boîte de dialogue YAML Resource Creation Result, cliquez sur View dans la colonne Actions d'une ressource pour confirmer qu'elle a bien été créée. |
kubectl
Récupérez le fichier KubeConfig de votre cluster et utilisez kubectl pour vous y connecter.
-
Créez un fichier nommé test-deployment-service.yaml avec le contenu suivant.
-
Appliquez la configuration pour créer le Deployment et le Service.
kubectl apply -f test-deployment-service.yaml -
Vérifiez l'état des Deployments
coffeeettea.kubectl get deployment coffee teaSortie attendue :
NAME READY UP-TO-DATE AVAILABLE AGE coffee 2/2 2 2 14m tea 2/2 2 2 14m -
Vérifiez l'état des Services
coffee-svcettea-svc.kubectl get service coffee-svc tea-svcSortie attendue :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc ClusterIP 192.168.xxx.xxx <none> 80/TCP 15m tea-svc ClusterIP 192.168.xxx.xxx <none> 80/TCP 15m
Créer un NGINX Ingress
Cet exemple utilise test-nginx-ingress.com comme nom de domaine (host). Remplacez-le par votre propre nom de domaine enregistré. Le mappage de chemin (paths) est issu de l'exemple Créer un exemple d'application. Modifiez ces chemins pour qu'ils correspondent à la configuration de votre application.
Console
|
1. Créez un Ingress
|
|
2. Obtenez le endpoint Après environ une minute, actualisez la page. Le Nginx Ingress est créé avec succès lorsqu'une adresse IP élastique (EIP) apparaît dans la colonne Endpoint. Cette EIP est l'adresse de service publique de l'instance Cloud Load Balancer (CLB) associée. Si les informations de endpoint n'apparaissent pas après quelques minutes, cliquez sur le nom de l'Ingress et vérifiez l'onglet Events pour le dépannage. |
kubectl
-
Créez un fichier nommé test-ingress.yaml avec le contenu suivant.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-nginx-ingress namespace: default spec: ingressClassName: nginx rules: - host: test-nginx-ingress.com # Replace with your registered domain name http: paths: - path: /coffee backend: service: name: coffee-svc port: number: 80 pathType: ImplementationSpecific - path: /tea backend: service: name: tea-svc port: number: 80 pathType: ImplementationSpecific - host: www.test-nginx-ingress.com # Replace with your registered domain name http: paths: - path: /coffee backend: service: name: coffee-svc port: number: 80 pathType: ImplementationSpecific - path: /tea backend: service: name: tea-svc port: number: 80 pathType: ImplementationSpecificDescriptions des paramètres :
name: le nom de l'Ingress. Dans cet exemple, le nom esttest-nginx-ingress.host: le nom de domaine utilisé pour accéder au service. Dans cet exemple, le nom de domaine esttest-nginx-ingress.com. Remplacez cette valeur par votre nom de domaine enregistré.path: le chemin URL de la règle. Pour qu'une requête soit routée vers le backend, elle doit correspondre au host et au path spécifiés. Dans cet exemple, les chemins sont/coffeeet/tea.-
backend: composé d'un nom de service et d'un port de service.Nom du service : le nom du service backend vers lequel l'Ingress transfère le trafic. Par exemple,
coffee-svcettea-svc.Port du service : le port cible sur le Service backend. Dans cet exemple, le port est
80.
-
Créez l'Ingress.
kubectl apply -f test-ingress.yaml -
Consultez l'Ingress et obtenez son adresse IP élastique (EIP), par exemple
8.xxx.xxx.117.kubectl get ingressRésultat attendu :
NAME CLASS HOSTS ADDRESS PORTS AGE test-nginx-ingress nginx test-nginx-ingress.com,www.test-nginx-ingress.com 8.xxx.xxx.117 80 2m39s -
Utilisez l'EIP pour vérifier que le Nginx Ingress fonctionne correctement.
curl http://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"Résultat attendu :
... <title>Hello World</title> ... <p><span>Server address:</span> <span>10.xxx.xxx.19:80</span></p> <p><span>Server name:</span> <span>coffee-96d4bc87-l29dh</span></p> <p class="smaller"><span>Date:</span> <span>08/Aug/2025:02:21:02 +0000</span></p> <p class="smaller"><span>URI:</span> <span>/coffee</span></p> ... <div id="footer"> <div id="center" align="center"> Request ID: 42e2d73c85b16b55b6ab52deb7d995d4<br/> © NGINX, Inc. 2018 </div> </div> ...
Configurer la résolution DNS
Enregistrer un nom de domaine. Il vous suffit d'ajouter un nom de domaine s'il est enregistré auprès d'un fournisseur tiers. Alibaba Cloud ajoute automatiquement les noms de domaine achetés via sa plateforme aux zones autoritaires publiques dans Alibaba Cloud DNS, ce qui vous permet d'ajouter directement des enregistrements DNS.
|
1. Ajouter un nom de domaine
|
|
2. Ajouter un enregistrement DNS
Pour plus d'informations, consultez la rubrique Ajouter un enregistrement de résolution de site Web. |
|
3. Vérifier le nom de domaine et le chemin Dans votre navigateur, accédez à Si la requête aboutit, la page renvoie les informations du pod backend NGINX, y compris les champs server address, server name, Date et URI. Pour confirmer le résultat, vous pouvez également consulter les Méthodes de test de la résolution DNS. Si un enregistrement DNS ne prend pas effet, consultez la rubrique Dépannage rapide des échecs de résolution DNS. |
Configurer la sécurité HTTPS
Achetez un certificat commercial, puis demandez le certificat. Assurez-vous que le certificat est à l'état Issued. Suivez ensuite les étapes ci-dessous pour télécharger le certificat et ajouter une configuration TLS. Cela permet d'activer l'accès HTTPS chiffré à votre domaine.
Console
|
1. Télécharger le certificat
Pour plus de détails, consultez la rubrique Télécharger un certificat SSL. |
|
2. Créer un Secret
|
|
3. Ajouter une configuration TLS
|
|
4. Vérifier l'accès HTTPS Dans votre navigateur web, accédez à |
Kubectl
Connectez-vous à la console Certificate Management Service. Dans le volet de navigation de gauche, sélectionnez .
Dans l'onglet Commercial Certificates, sélectionnez le certificat à télécharger, puis cliquez sur Download dans le coin inférieur gauche de la liste des certificats.
Dans la boîte de dialogue qui s'affiche, sélectionnez Nginx comme type de serveur, téléchargez le package de certificat et décompressez-le.
-
Utilisez le fichier de certificat téléchargé (.pem) et le fichier de clé privée (.key) pour créer un Secret.
kubectl create secret tls nginx-ingress-tls --cert test-nginx-ingress.com.pem --key test-nginx-ingress.com.key -n default -
Ajoutez une configuration TLS à l'Ingress
test-nginx-ingress. Remplaceztest-nginx-ingress.comdans la commande par votre nom de domaine enregistré réel.kubectl patch ingress test-nginx-ingress -p '{"spec":{"tls":[{"hosts":["test-nginx-ingress.com"],"secretName":"nginx-ingress-tls"}]}}' -
Vérifiez l'accès HTTPS chiffré au chemin du service en exécutant la commande suivante avec votre adresse IP élastique réelle.
curl -v -k https://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"-
Paramètres :
-v: Affiche une sortie détaillée, y compris la négociation TLS.-k(ou --insecure) : Ignore la vérification du certificat. Utilisez cette option si vous utilisez un certificat auto-signé.
-
Sortie attendue :
... * Trying 8.xxx.xxx.117:443... * Connected to 8.xxx.xxx.117 (8.xxx.xxx.117) port 443 * ALPN: curl offers h2,http/1.1 * (304) (OUT), TLS handshake, Client hello (1): * (304) (IN), TLS handshake, Server hello (2): * (304) (IN), TLS handshake, Unknown (8): * (304) (IN), TLS handshake, Certificate (11): * (304) (IN), TLS handshake, CERT verify (15): * (304) (IN), TLS handshake, Finished (20): * (304) (OUT), TLS handshake, Finished (20): ... <title>Hello World</title> ... <p><span>Server address:</span> <span>10.xxx.xxx.159:80</span></p> <p><span>Server name:</span> <span>coffee-96d4bc87-6cstv</span></p> <p class="smaller"><span>Date:</span> <span>14/Aug/2025:09:27:42 +0000</span></p> <p class="smaller"><span>URI:</span> <span>/coffee</span></p> ... <div id="footer"> <div id="center" align="center"> Request ID: fee5fe107106748a35d99a2dbbbc6652<br/> © NGINX, Inc. 2018 </div> </div> ...
-
Autres configurations
Déploiement Canary
Pour mettre à niveau les services, vous pouvez utiliser diverses stratégies de déploiement, telles que les mises à jour progressives, les déploiements par phases, les déploiements blue-green et les déploiements canary. Pour obtenir des instructions détaillées, consultez la rubrique Mettre en œuvre des déploiements par phases et blue-green à l'aide de NGINX Ingress.
Protocole du service backend
Pour spécifier le protocole d'un service backend, ajoutez l'annotation nginx.ingress.kubernetes.io/backend-protocol. Les protocoles pris en charge sont HTTP, HTTPS, gRPC et gRPCS. Pour un exemple de configuration, consultez la rubrique Configurer un service gRPC pour NGINX Ingress.
Réécriture d'URL
Lorsque vous utilisez le contrôleur NGINX Ingress, il transfère les requêtes en fonction du chemin complet. Par exemple, une requête vers /service1/api est transférée vers le chemin /service1/api du pod backend. Si le chemin de votre service backend est /api, une incompatibilité de chemin se produit, entraînant une erreur 404. Pour résoudre ce problème, vous pouvez ajouter l'annotation nginx.ingress.kubernetes.io/rewrite-target afin de réécrire le chemin de la requête vers le répertoire correct.
Pour obtenir des instructions détaillées, consultez la rubrique Configurer la redirection d'URL.
Annotations
NGINX Ingress prend en charge un large éventail de fonctionnalités que vous pouvez activer via des annotations. Pour plus d'informations, consultez les rubriques Dictionnaire de configuration NGINX Ingress et Configurations avancées de NGINX Ingress.
Observabilité
Activez Simple Log Service (SLS) lors de la création du cluster pour accéder à des rapports complets d'analyse des journaux d'accès NGINX Ingress et à des tableaux de bord de surveillance en temps réel. Pour plus de détails, consultez la rubrique Analyser et surveiller les journaux d'accès NGINX Ingress.
Scénarios à forte charge
Pour améliorer les performances et la stabilité du contrôleur NGINX Ingress dans les scénarios à forte charge, consultez les rubriques Configurer un contrôleur NGINX Ingress pour les scénarios à charge élevée et Recommandations pour l'utilisation d'un contrôleur NGINX Ingress.
FAQ
IP externe inaccessible depuis l'intérieur d'un cluster
En-têtes ou cookies volumineux
Configuration CORS
Transmission de l'adresse IP du client
Références
Pour les versions et les notes de publication, consultez la rubrique Contrôleur NGINX Ingress.
Pour les problèmes courants et le dépannage, consultez les rubriques FAQ NGINX Ingress et Dépanner les problèmes NGINX Ingress.