Tutorial: Habilitación del complemento del controlador de entrada de una puerta de enlace de aplicación y para un clúster de AKS existente con una puerta de enlace de aplicación existente
Puede usar la CLI de Azure o el portal para habilitar el complemento del controlador de entrada de una puerta de enlace de aplicación (AGIC) para un clúster existente de Azure Kubernetes Services (AKS). En este tutorial, aprenderá a usar el complemento AGIC para exponer su aplicación de Kubernetes en un clúster de AKS existente a través de una puerta de enlace de aplicación existente implementada en redes virtuales independientes. Comenzaremos por crear un clúster de AKS en una red virtual y una puerta de enlace de aplicación en una red virtual independiente para simular los recursos existentes. A continuación, habilitará el complemento AGIC, emparejará las dos redes virtuales e implementará una aplicación de ejemplo que se expondrá a través de la puerta de enlace de aplicación mediante el complemento AGIC. Si va a habilitar el complemento AGIC para una puerta de enlace de aplicación existente un clúster de AKS existente en la misma red virtual, puede omitir el paso de emparejamiento que aparece a continuación. El complemento proporciona una manera mucho más rápida de implementar AGIC para el clúster de AKS que cuando se hacía mediante Helm y también ofrece una experiencia totalmente administrada.
En este tutorial, aprenderá a:
- Cree un grupo de recursos.
- Cree un nuevo clúster de AKS.
- Cree una nueva puerta de enlace de aplicaciones.
- Habilite el complemento AGIC en el clúster de AKS existente a través de la CLI de Azure.
- Habilite el complemento AGIC en el clúster de AKS existente a través de Azure Portal.
- Emparejar la red virtual de Application Gateway con la red virtual del clúster de AKS.
- Implemente una aplicación de ejemplo mediante AGIC para la entrada en el clúster de AKS.
- Comprobar que la aplicación es accesible mediante la puerta de enlace de aplicación.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
Crear un grupo de recursos
En Azure, puede asignar recursos relacionados a un grupo de recursos. Para crear un grupo de recursos, use az group create. En el ejemplo siguiente se crea un grupo de recursos denominado myResourceGroup en la ubicación (región) Este de EE. UU.:
az group create --name myResourceGroup --location eastus
Implementación de un clúster de AKS
Ahora implementará un nuevo clúster de AKS para simular un clúster de AKS existente para el que quiere habilitar el complemento AGIC.
En el ejemplo siguiente, va a implementar un nuevo clúster de AKS denominado myCluster mediante Azure CNI e identidades administradas en el grupo de recursos que creó, myResourceGroup.
az aks create --name myCluster --resource-group myResourceGroup --network-plugin azure --enable-managed-identity --generate-ssh-keys
Si quiere configurar más parámetros para el comando anterior, consulte az aks create.
Nota
Se creará un grupo de recursos de nodo con el nombre MC_resource-group-name_cluster-name_location.
Implementación de una nueva puerta de enlace de aplicación
Ahora implementará una nueva puerta de enlace de aplicación para simular una puerta de enlace de aplicación existente que quiera usar para equilibrar la carga del tráfico en el clúster de AKS, myCluster. El nombre de la puerta de enlace de aplicación será myApplicationGateway, pero tendrá que crear primero un recurso de dirección IP pública, denominado myPublicIp, y una nueva red virtual denominada myVnet con el espacio de direcciones 10.0.0.0/16 y una subred con el espacio de direcciones 10.0.0.0/24 llamada mySubnet e implementar la puerta de enlace de aplicación en mySubnet con myPublicIp.
Precaución
Al usar un clúster de AKS y una puerta de enlace de aplicación en redes virtuales independientes, los espacios de direcciones de las dos redes virtuales no deben superponerse. El espacio de direcciones predeterminado en el que se implementa un clúster de AKS es 10.224.0.0/12.
az network public-ip create --name myPublicIp --resource-group myResourceGroup --allocation-method Static --sku Standard
az network vnet create --name myVnet --resource-group myResourceGroup --address-prefix 10.0.0.0/16 --subnet-name mySubnet --subnet-prefix 10.0.0.0/24
az network application-gateway create --name myApplicationGateway --resource-group myResourceGroup --sku Standard_v2 --public-ip-address myPublicIp --vnet-name myVnet --subnet mySubnet --priority 100
Nota
El complemento del controlador de entrada de Application Gateway (AGIC) admite solo las SKU de Application Gateway v2 (estándar y WAF) y no las SKU de Application Gateway v1.
Habilitación del complemento AGIC en un clúster de AKS existente a través de la CLI de Azure
Si quiere seguir usando la CLI de Azure, puede seguir habilitando el complemento AGIC en el clúster de AKS que creó, myCluster, y especificar el complemento AGIC para usar la puerta de enlace de aplicación existente que creó, myApplicationGateway.
appgwId=$(az network application-gateway show --name myApplicationGateway --resource-group myResourceGroup -o tsv --query "id")
az aks enable-addons --name myCluster --resource-group myResourceGroup --addon ingress-appgw --appgw-id $appgwId
Habilitación del complemento AGIC en un clúster de AKS existente a través de Azure Portal
- En la página principal de Azure Portal, vaya al recurso de clúster de AKS.
- En el menú servicio, en Configuración, seleccione Red>Integración de red virtual.
- En controlador de entrada de Application Gateway, seleccione Administrar.
- En la página controlador de entrada de Application Gateway, active la casilla para habilitar el controlador de entrada y, a continuación, seleccione la puerta de enlace de aplicaciones existente en la lista desplegable.
- Seleccione Guardar.
Importante
Si se usa una puerta de enlace de aplicaciones en un grupo de recursos diferente al grupo de recursos del clúster de AKS, la identidad administrada entradaapplicationgateway-{AKSNAME} que se crea debe tener colaborador de red y roles lector establecidos en el grupo de recursos de puerta de enlace de aplicación.
Emparejamiento de dos redes virtuales juntas
Dado que se implementó el clúster de AKS en su propia red virtual y la puerta de enlace de aplicación en otra red virtual, deberá emparejar las dos redes virtuales juntas para que el tráfico fluya de la puerta de enlace de aplicación a los pods del clúster. Emparejar las dos redes virtuales requiere ejecutar el comando de la CLI de Azure dos veces independientes para asegurarse de que la conexión sea bidireccional. El primer comando creará una conexión de emparejamiento desde la red virtual de la puerta de enlace de aplicación a la red virtual de AKS; el segundo comando creará una conexión de emparejamiento en la otra dirección.
nodeResourceGroup=$(az aks show --name myCluster --resource-group myResourceGroup -o tsv --query "nodeResourceGroup")
aksVnetName=$(az network vnet list --resource-group $nodeResourceGroup -o tsv --query "[0].name")
aksVnetId=$(az network vnet show --name $aksVnetName --resource-group $nodeResourceGroup -o tsv --query "id")
az network vnet peering create --name AppGWtoAKSVnetPeering --resource-group myResourceGroup --vnet-name myVnet --remote-vnet $aksVnetId --allow-vnet-access
appGWVnetId=$(az network vnet show --name myVnet --resource-group myResourceGroup -o tsv --query "id")
az network vnet peering create --name AKStoAppGWVnetPeering --resource-group $nodeResourceGroup --vnet-name $aksVnetName --remote-vnet $appGWVnetId --allow-vnet-access
Nota
En el paso "Implementación de un nuevo clúster de AKS" anterior hemos creado AKS con Azure CNI. En caso de que tenga un clúster de AKS existente que use el modo Kubenet, tendrá que actualizar la tabla de rutas para ayudar a los paquetes destinados a una dirección IP de POD a llegar al nodo que hospeda el pod. Una manera sencilla de lograrlo es asociar la misma tabla de rutas creada por AKS a la subred de Application Gateway.
Implementación de una aplicación de ejemplo mediante AGIC
Ahora implementará una aplicación de ejemplo en el clúster de AKS creado que usará el complemento AGIC para la entrada y conectará la puerta de enlace de aplicación al clúster de AKS. En primer lugar, obtendrá las credenciales para el clúster de AKS que implementó mediante la ejecución del comando az aks get-credentials
.
az aks get-credentials --name myCluster --resource-group myResourceGroup
Una vez que tiene las credenciales para el clúster que creó, ejecute el siguiente comando para configurar una aplicación de ejemplo que use AGIC para la entrada al clúster. AGIC actualizará la puerta de enlace de aplicación que configuró anteriormente con las reglas de enrutamiento correspondientes a la nueva aplicación de ejemplo que implementó.
kubectl apply -f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml
Comprobación de que la aplicación sea accesible
Ahora que la puerta de enlace de aplicación está configurada para enviar el tráfico al clúster de AKS, vamos a comprobar que la aplicación sea accesible. Primero, obtenga la dirección IP de la entrada.
kubectl get ingress
Compruebe que la aplicación de ejemplo que ha creado está en funcionamiento; para ello, visite la dirección IP de la puerta de enlace de aplicación que obtuvo al ejecutar el comando anterior o consulte curl
. La puerta de enlace de aplicación puede tardar un minuto en obtener la actualización, por lo que si la puerta de enlace de aplicación todavía está en el estado "Actualizando" en Azure Portal, permita que finalice antes de intentar conectarse a la dirección IP.
Limpieza de recursos
Cuando ya no los necesite, elimine todos los recursos creados en este tutorial borrando myResourceGroup y MC_myResourceGroup_myCluster_eastus:
az group delete --name myResourceGroup
az group delete --name MC_myResourceGroup_myCluster_eastus