El NGINX Ingress Controller funciona como puerta de enlace de entrada para los clústeres administrados de Alibaba Cloud Container Service for Kubernetes (ACK). Este componente enruta el tráfico externo hacia los servicios internos mediante reglas de enrutamiento flexibles. Admite funciones como cifrado HTTPS, versiones canary y configuraciones personalizadas a través de anotaciones, por lo que ofrece acceso de red de capa 7 (L7) seguro, de alta disponibilidad y escalable.
A partir del 11 de septiembre de 2025, se suspenderá la facturación basada en especificaciones para Classic Load Balancer (CLB). Por este motivo, cuando cree servicios de tipo load balancer o instale nuevos NGINX Ingress Controllers en la consola de Container Service for Kubernetes, se utilizarán instancias de Network Load Balancer (NLB) de forma predeterminada. La creación de servicios basados en CLB quedará restringida a una lista de permitidos y estos servicios usarán el modelo de facturación pay-as-you-go de manera predeterminada. Para obtener más información, consulte [[Product change] Announcement on changes to the default load balancer type and billing method for new services and the NGINX Ingress Controller](t2980097.xdita#).
El proyecto de código abierto upstream Ingress-NGINX dejará de recibir mantenimiento después de marzo de 2026. Como consecuencia, Container Service for Kubernetes suspenderá el mantenimiento del componente NGINX Ingress Controller. Tenga en cuenta los riesgos asociados. Para obtener más información, consulte [[Product announcement] Announcement on the end of maintenance for the NGINX Ingress Controller component](t3212739.xdita#).
Notas de uso
No elimine el servicio predeterminado que utiliza el NGINX Ingress Controller. Después de instalar el complemento, se crea un servicio predeterminado llamado
nginx-ingress-lben el namespacekube-system. Si elimina este servicio, el complemento se vuelve inestable y puede fallar.Utilice Add-ons o OpenAPI para configurar parámetros personalizados del complemento. Si modifica la configuración por otros métodos, el complemento puede funcionar mal e interferir con futuras actualizaciones.
Use NGINX Ingress ConfigMap para las configuraciones personalizadas. El soporte técnico no cubre los problemas derivados de configuraciones adicionales, como snippets o código Lua.
Actualice NGINX Ingress Controller add-on de inmediato para evitar interrupciones del negocio causadas por errores o vulnerabilidades de seguridad en la versión de la comunidad upstream.
Instalar el complemento NGINX Ingress Controller
Crear una aplicación de ejemplo
La aplicación de ejemplo despliega dos cargas de trabajo sin estado (Deployments) llamadas coffee y tea, junto con sus Services correspondientes: coffee-svc y tea-svc.
Console
|
1. Crear recursos
|
|
2. Consultar el resultado En el cuadro de diálogo YAML Resource Creation Result, haga clic en View dentro de la columna Actions de un recurso para confirmar que se creó correctamente. |
kubectl
Obtain the KubeConfig for your cluster and use kubectl to connect to the cluster.
-
Cree un archivo llamado test-deployment-service.yaml con el siguiente contenido.
-
Aplique la configuración para crear el Deployment y el Service.
kubectl apply -f test-deployment-service.yaml -
Compruebe el estado de los Deployments
coffeeytea.kubectl get deployment coffee teaSalida esperada:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 2/2 2 2 14m tea 2/2 2 2 14m -
Compruebe el estado de los Services
coffee-svcytea-svc.kubectl get service coffee-svc tea-svcSalida esperada:
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
Crear un NGINX Ingress
Este ejemplo utiliza test-nginx-ingress.com como nombre de dominio (host). Sustitúyalo por su propio nombre de dominio registrado. La asignación de rutas (paths) proviene del ejemplo de Create a sample application. Modifique estas rutas para que coincidan con la configuración de su aplicación.
Console
|
1. Crear un Ingress
|
|
2. Obtener el endpoint Después de aproximadamente un minuto, actualice la página. El Nginx Ingress se habrá creado correctamente cuando aparezca una dirección IP elástica (EIP) en la columna Endpoint. Esta EIP es la dirección de servicio pública de la instancia de Cloud Load Balancer (CLB) asociada. Si la información del endpoint no aparece después de unos minutos, haga clic en el nombre del Ingress y revise la pestaña Events para solucionar el problema. |
kubectl
-
Cree un archivo llamado test-ingress.yaml con el siguiente contenido.
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: ImplementationSpecificDescripción de los parámetros:
name: nombre del Ingress. En este ejemplo, el nombre estest-nginx-ingress.host: nombre de dominio utilizado para acceder al servicio. En este ejemplo, el nombre de dominio estest-nginx-ingress.com. Sustitúyalo por su nombre de dominio registrado.path: ruta de URL de la regla. Para que una solicitud se enrute al backend, debe coincidir con el host y la path especificados. En este ejemplo, las rutas son/coffeey/tea.-
backend: consta de un nombre de servicio y un puerto de servicio.Nombre del servicio: nombre del servicio de backend al que el Ingress reenvía el tráfico. Por ejemplo,
coffee-svcytea-svc.Puerto del servicio: puerto de destino en el Service de backend. En este ejemplo, el puerto es
80.
-
Cree el Ingress.
kubectl apply -f test-ingress.yaml -
Consulte el Ingress y obtenga su dirección IP elástica (EIP), por ejemplo,
8.xxx.xxx.117.kubectl get ingressSalida esperada:
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 -
Utilice la EIP para comprobar que el Nginx Ingress funciona correctamente.
curl http://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"Salida esperada:
... <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> ...
Configurar la resolución de DNS
Register a domain name. Solo necesita agregar un nombre de dominio si está registrado con un proveedor externo. Alibaba Cloud agrega automáticamente los nombres de dominio adquiridos en su plataforma a las zonas autoritativas públicas de Alibaba Cloud DNS, por lo que puede añadir directamente los registros DNS.
|
1. Agregar un nombre de dominio
|
|
2. Agregar un registro DNS
Para obtener más información, consulte Add a website resolution record. |
|
3. Comprobar el nombre de dominio y la ruta En su navegador, visite Si la solicitud se ejecuta correctamente, la página devuelve información del pod de backend de NGINX, incluidos los campos server address, server name, Date y URI. Para confirmar el resultado, también puede consultar Methods for testing DNS resolution. Si un registro DNS no surte efecto, consulte Quickly troubleshoot DNS resolution failures. |
Configurar la seguridad HTTPS
Adquiera un commercial certificate, y apply for the certificate. Asegúrese de que el certificado tenga el estado Issued. A continuación, siga estos pasos para descargar el certificado y agregar una configuración TLS. Esto habilita el acceso HTTPS cifrado a su dominio.
Console
|
1. Descargar el certificado
Para obtener más detalles, consulte Download an SSL certificate. |
|
2. Crear un Secret
|
|
3. Agregar una configuración TLS
|
|
4. Comprobar el acceso HTTPS En su navegador web, vaya a |
Kubectl
Inicie sesión en la consola de Certificate Management Service. En el panel de navegación izquierdo, elija .
En la pestaña Commercial Certificates, seleccione el certificado que desea descargar y haga clic en Download en la esquina inferior izquierda de la lista de certificados.
En el cuadro de diálogo que aparece, seleccione Nginx como tipo de servidor, descargue el paquete del certificado y descomprímalo.
-
Utilice el archivo de certificado descargado (.pem) y el archivo de clave privada (.key) para crear un Secret.
kubectl create secret tls nginx-ingress-tls --cert test-nginx-ingress.com.pem --key test-nginx-ingress.com.key -n default -
Agregue una configuración TLS al Ingress
test-nginx-ingress. Reemplacetest-nginx-ingress.comen el comando por su nombre de dominio registrado real.kubectl patch ingress test-nginx-ingress -p '{"spec":{"tls":[{"hosts":["test-nginx-ingress.com"],"secretName":"nginx-ingress-tls"}]}}' -
Compruebe el acceso HTTPS cifrado a la ruta del servicio mediante la ejecución del siguiente comando con su Elastic IP Address real.
curl -v -k https://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"-
Parámetros:
-v: muestra una salida detallada, incluido el handshake TLS.-k(o --insecure): omite la verificación del certificado. Utilice esta opción si usa un certificado autofirmado.
-
Salida esperada:
... * 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> ...
-
Más configuraciones
Canary release
Para actualizar servicios, puede utilizar diversas estrategias de despliegue, como actualizaciones continuas, versiones por fases, despliegues blue-green y canary releases. Para obtener instrucciones detalladas, consulte Implement phased releases and blue-green deployments using NGINX Ingress.
Protocolo del servicio de backend
Para especificar el protocolo de un servicio de backend, agregue la anotación nginx.ingress.kubernetes.io/backend-protocol. Los protocolos compatibles son HTTP, HTTPS, gRPC y gRPCS. Para ver un ejemplo de configuración, consulte Configure a gRPC service for NGINX Ingress.
Reescritura de URL
Cuando utiliza el controlador NGINX Ingress, este reenvía las solicitudes según la ruta completa. Por ejemplo, una solicitud a /service1/api se reenvía a la ruta /service1/api del pod de backend. Si la ruta de su servicio de backend es /api, se produce una discrepancia de rutas que genera un error 404. Para resolver este problema, agregue la anotación nginx.ingress.kubernetes.io/rewrite-target y reescriba la ruta de la solicitud hacia el directorio correcto.
Para obtener instrucciones detalladas, consulte Configure URL redirection.
Anotaciones
NGINX Ingress es compatible con una amplia gama de funciones que se habilitan mediante anotaciones. Para obtener más información, consulte NGINX Ingress configuration dictionary y Advanced NGINX Ingress configurations.
Observability
Habilite Simple Log Service (SLS) durante la creación del clúster para acceder a informes completos de análisis de registros de acceso de NGINX Ingress y paneles de monitoreo en tiempo real. Para obtener más detalles, consulte Analyze and monitor NGINX Ingress access logs.
Escenarios de alta carga
Para mejorar el rendimiento y la estabilidad de NGINX Ingress Controller en escenarios de alta carga, consulte Configure an NGINX Ingress Controller for high-payload scenarios y Suggestions for using an NGINX Ingress Controller.
Preguntas frecuentes
Dirección IP externa inaccesible desde dentro de un clúster
Encabezados o cookies de gran tamaño
Configuración de CORS
Paso directo de la IP del cliente
Referencias
Para consultar las versiones y las notas de la versión, consulte NGINX Ingress Controller.
Para conocer los problemas comunes y sus soluciones, consulte NGINX Ingress FAQ y Troubleshoot NGINX Ingress issues.