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:

  • Crear un grupo de recursos
  • Creación de un clúster de AKS
  • Crear una nueva puerta de enlace de aplicación
  • Habilitar el complemento AGIC en el clúster de AKS existente a través de la CLI de Azure
  • Habilitar el complemento AGIC en el clúster de AKS existente mediante Azure Portal
  • Emparejar la red virtual de la puerta de enlace de aplicación con la red virtual del clúster de AKS
  • Implementar una aplicación de ejemplo mediante AGIC para la entrada en el clúster de AKS
  • Comprobar que la aplicación es accesible a través de 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

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 -n myCluster -g 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 -n myPublicIp -g myResourceGroup --allocation-method Static --sku Standard
az network vnet create -n myVnet -g myResourceGroup --address-prefix 10.0.0.0/16 --subnet-name mySubnet --subnet-prefix 10.0.0.0/24 
az network application-gateway create -n myApplicationGateway -g 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 -n myApplicationGateway -g myResourceGroup -o tsv --query "id") 
az aks enable-addons -n myCluster -g myResourceGroup -a ingress-appgw --appgw-id $appgwId

Importante

Cuando 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 -n myCluster -g myResourceGroup -o tsv --query "nodeResourceGroup")
aksVnetName=$(az network vnet list -g $nodeResourceGroup -o tsv --query "[0].name")

aksVnetId=$(az network vnet show -n $aksVnetName -g $nodeResourceGroup -o tsv --query "id")
az network vnet peering create -n AppGWtoAKSVnetPeering -g myResourceGroup --vnet-name myVnet --remote-vnet $aksVnetId --allow-vnet-access

appGWVnetId=$(az network vnet show -n myVnet -g myResourceGroup -o tsv --query "id")
az network vnet peering create -n AKStoAppGWVnetPeering -g $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 -n myCluster -g 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

Pasos siguientes