Entrada NGINX administrada con el complemento de enrutamiento de aplicaciones

Precaución

La SIG Network de Kubernetes y el Comité de respuesta a la seguridad anunciaron la retirada del proyecto Ingress NGINX, con un mantenimiento que finalizó en marzo de 2026. Microsoft proporcionará soporte oficial para revisiones de seguridad críticas para los recursos de NGINX Ingress del complemento de enrutamiento de aplicaciones hasta noviembre de 2026.

AKS se alinea con Kubernetes upstream y usa la Gateway API como estándar a largo plazo para la administración del tráfico L7 y de ingress. Migre antes de que finalice el soporte técnico en noviembre de 2026, en función de sus requisitos:

Una manera de enrutar el tráfico de Protocolo de transferencia de hipertexto (HTTP) y seguro (HTTPS) a las aplicaciones que se ejecutan en un clúster de Azure Kubernetes Service (AKS) es usar el objeto de entrada de Kubernetes. Al habilitar el complemento de enrutamiento de aplicaciones con NGINX, crea, configura y administra un controlador de entrada en el clúster de AKS.

En este artículo se muestra cómo habilitar el controlador de entrada NGINX administrado y configurar un objeto de entrada para enrutar el tráfico a una aplicación del clúster de AKS.

Complemento de enrutamiento de aplicaciones con características de NGINX

El complemento de enrutamiento de aplicaciones con NGINX ofrece lo siguiente:

  • Configuración sencilla de controladores de entrada NGINX administrados basados en controlador de entrada NGINX de Kubernetes.
  • Integración con Azure DNS para la administración de zonas públicas y privadas.
  • Terminación SSL con certificados almacenados en Azure Key Vault.

Para ver otras configuraciones, consulta:

Importante

A partir del 30 de septiembre de 2027, Azure Kubernetes Service (AKS) ya no admite el complemento Open Service Mesh (OSM). Se ha retirado el proyecto Open Service Mesh original.

Si el clúster usa el complemento de OSM, migre al complemento de Istio antes de la fecha de fin del soporte. Este aviso de retirada solo se aplica al complemento de OSM administrado y no aborda las instalaciones de malla de servicio de código abierto o autoadministrado. Para conocer los pasos de migración, consulte Guía de migración del complemento de OSM al complemento de Istio. Para mantenerse informado sobre los anuncios y actualizaciones de AKS, consulte las notas de versión de AKS.

Requisitos previos

  • Suscripción a Azure. Si no tiene una suscripción a Azure, puede crear una cuenta gratuita.
  • CLI de Azure versión 2.54.0 o posterior instalada y configurada. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Limitaciones

  • El complemento de enrutamiento de aplicaciones admite hasta cinco zonas DNS de Azure.

  • El complemento de enrutamiento de aplicaciones solo se puede habilitar en aquellos clústeres de AKS que tengan identidad administrada.

  • Todas las zonas globales de Azure DNS integradas con el complemento deben estar en el mismo grupo de recursos.

  • Todas las zonas DNS privadas de Azure integradas con el complemento deben estar en el mismo grupo de recursos.

  • No se permite editar ingress-nginx ConfigMap en el espacio de nombres app-routing-system.

  • Si un valor de anotación de fragmento coincide con cualquiera de los siguientes valores bloqueados, el Ingress no se configura:

    Valor bloqueado Effect
    load_module Ingress no está configurado.
    lua_package Ingress no está configurado.
    _by_lua Ingress no está configurado.
    location Ingress no está configurado.
    root Ingress no está configurado.
    proxy_pass Ingress no está configurado.
    serviceaccount Ingress no está configurado.
    { Ingress no está configurado.
    } Ingress no está configurado.
    ' Ingress no está configurado.
  • El complemento no admite oficialmente la inserción de sidecars no administrados por Microsoft (por ejemplo, telemetría personalizada, registro o agentes de seguridad) en los pods del proxy de ingress-nginx que administra. Si decide inyectar su propio sidecar en un pod proxy administrado, Microsoft solo ofrece soporte limitado para cualquier problema que encuentre.

Habilitación del complemento de enrutamiento de aplicaciones mediante CLI de Azure

Habilitación en un nuevo clúster

Para habilitar el enrutamiento de aplicaciones en un nuevo clúster, use el comando az aks create y especifique la marca --enable-app-routing.

az aks create \
    --resource-group <resource-group-name> \
    --name <cluster-name> \
    --location <location> \
    --enable-app-routing \
    --generate-ssh-keys

Habilitación en un clúster ya existente

Para habilitar el enrutamiento de aplicaciones en un clúster existente, use el comando az aks approuting enable.

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

Conectarse al clúster AKS

Para conectarse al clúster de Kubernetes desde su equipo local, use kubectl, el cliente de la línea de comandos de Kubernetes. Puede realizar la instalación localmente mediante el comando az aks install-cli. Si usa Azure Cloud Shell, kubectl ya está instalado.

Para configurar kubectl para conectarse a su clúster de Kubernetes, use el comando az aks get-credentials.

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

Implementar una aplicación

Los objetos de entrada de Kubernetes definen reglas de enrutamiento para un controlador de entrada. Use la clase Ingress administrada del complemento de enrutamiento de aplicaciones y las anotaciones admitidas para configurar cómo su controlador gestiona el tráfico.

  1. Cree el espacio de nombres de la aplicación llamado aks-store para ejecutar los pods de ejemplo mediante el comando kubectl create namespace.

    kubectl create namespace aks-store
    
  2. Implemente la aplicación de almacén de AKS mediante el siguiente archivo de manifiesto de YAML:

    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
    

Este manifiesto crea los despliegues rabbitmq, order-service, product-service y store-front, y los servicios correspondientes. El servicio store-front expone el puerto 80, al que el Ingress dirige el tráfico en la siguiente sección.

Crear el objeto Ingress

Al habilitar el complemento de enrutamiento de aplicaciones, crea una clase de entrada denominada webapprouting.kubernetes.azure.com. Especifique esta clase en un objeto Ingress para usar el controlador Ingress de NGINX gestionado por el complemento.

  1. Copie el siguiente manifiesto YAML en un nuevo archivo denominado ingress.yaml y guarde el archivo en el equipo 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. Cree el recurso de entrada con el comando kubectl apply.

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

    En la siguiente salida de ejemplo se muestran los recursos creados:

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

Verifique el recurso Ingress gestionado

Compruebe que la entrada administrada se ha creado con el comando kubectl get ingress.

kubectl get ingress -n aks-store

En la siguiente salida de ejemplo se muestra la entrada administrada creada:

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

Puede comprobar que la tienda en AKS funciona dirigiendo el navegador a la dirección IP pública del controlador de Ingress. El siguiente comando obtiene la dirección IP externa asignada por el equilibrador de carga al Servicio nginx del controlador de entrada NGINX administrado en el espacio de nombres app-routing-system:

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

Quitar el complemento de enrutamiento de aplicaciones

Para eliminar el espacio de nombres asociado, use el comando kubectl delete namespace.

kubectl delete namespace aks-store

Para eliminar el complemento enrutamiento de aplicaciones del clúster, use el comando az aks approuting disable.

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

Nota:

Para evitar posibles interrupciones del tráfico en el clúster al deshabilitar el complemento de enrutamiento de aplicaciones, algunos recursos de Kubernetes, incluidos configMaps, secretos y la implementación que ejecuta el controlador, permanecen en el clúster. Estos recursos se encuentran en el espacio de nombres app-routing-system. Puede quitar estos recursos si ya no los necesita eliminando el espacio de nombres con kubectl delete ns app-routing-system.