Tutorial: Habilitar o complemento do controlador de entrada do gateway de aplicativo para um cluster AKS existente com um gateway de aplicativo existente

Você pode usar a CLI ou o portal do Azure para habilitar o complemento AGIC (controlador de entrada do gateway de aplicativo) para um cluster existente do Azure Kubernetes Services (AKS). Neste tutorial, você aprenderá a usar o complemento AGIC para expor seu aplicativo Kubernetes em um cluster AKS existente por meio de um gateway de aplicativo existente implantado em redes virtuais separadas. Você começará criando um cluster AKS em uma rede virtual e um gateway de aplicativo em uma rede virtual separada para simular recursos existentes. Em seguida, você habilitará o complemento AGIC, emparelhará as duas redes virtuais juntas e implantará um aplicativo de exemplo que será exposto por meio do gateway de aplicativo usando o complemento AGIC. Se você estiver habilitando o complemento AGIC para um gateway de aplicativo existente e cluster AKS existente na mesma rede virtual, poderá ignorar a etapa de emparelhamento abaixo. O complemento fornece uma maneira muito mais rápida de implantar o AGIC para seu cluster AKS do que através do Helm e também oferece uma experiência totalmente gerenciada.

Neste tutorial, irá aprender a:

  • Criar um grupo de recursos
  • Criar um novo cluster AKS
  • Criar um novo gateway de aplicação
  • Habilite o complemento AGIC no cluster AKS existente por meio da CLI do Azure
  • Habilite o complemento AGIC no cluster AKS existente por meio do portal do Azure
  • Emparelhar a rede virtual do gateway de aplicativos com a rede virtual do cluster AKS
  • Implantar um aplicativo de exemplo usando AGIC para entrada no cluster AKS
  • Verifique se o aplicativo está acessível por meio do gateway de aplicativo

Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

Criar um grupo de recursos

No Azure, você aloca recursos relacionados a um grupo de recursos. Crie um grupo de recursos usando az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup no local (região) Leste dos EUA :

az group create --name myResourceGroup --location eastus

Implantar um novo cluster AKS

Agora você implantará um novo cluster AKS, para simular ter um cluster AKS existente para o qual deseja habilitar o complemento AGIC.

No exemplo a seguir, você implantará um novo cluster AKS chamado myCluster usando CNI do Azure e Identidades Gerenciadas no grupo de recursos criado, myResourceGroup.

az aks create -n myCluster -g myResourceGroup --network-plugin azure --enable-managed-identity --generate-ssh-keys

Para configurar mais parâmetros para o comando acima, consulte az aks create.

Nota

Um grupo de recursos de nó será criado com o nome MC_resource-group-name_cluster-name_location.

Implantar um novo gateway de aplicativo

Agora você implantará um novo gateway de aplicativo, para simular ter um gateway de aplicativo existente que deseja usar para balancear a carga do tráfego para seu cluster AKS, myCluster. O nome do gateway de aplicativo será myApplicationGateway, mas você precisará primeiro criar um recurso IP público, chamado myPublicIp, e uma nova rede virtual chamada myVnet com espaço de endereço 10.0.0.0/16, e uma sub-rede com espaço de endereço 10.0.0.0/24 chamada mySubnet, e implantar seu gateway de aplicativo em mySubnet usando myPublicIp.

Atenção

Quando você usa um cluster AKS e um gateway de aplicativo em redes virtuais separadas, os espaços de endereço das duas redes virtuais não devem se sobrepor. O espaço de endereço padrão em que um cluster AKS implanta é 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

O complemento AGIC (Application Gateway Ingress Controller) suporta apenas SKUs (Standard e WAF) do gateway de aplicativo, e não as SKUs v1 do gateway de aplicativo.

Habilitar o complemento AGIC no cluster AKS existente por meio da CLI do Azure

Se quiser continuar a utilizar a CLI do Azure, pode continuar a ativar o suplemento AGIC no cluster AKS que criou, myCluster, e especificar o suplemento AGIC para utilizar o gateway de aplicação existente que criou, 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

Quando você usa um gateway de aplicativo em um grupo de recursos diferente do grupo de recursos de cluster AKS, a identidade gerenciada ingressapplicationgateway-{AKSNAME} criada deve ter as funções de Colaborador de Rede e Leitor definidas no grupo de recursos do gateway de aplicativo.

Emparelhar as duas redes virtuais

Como você implantou o cluster AKS em sua própria rede virtual e o gateway de aplicativo em outra rede virtual, você precisará emparelhar as duas redes virtuais para que o tráfego flua do gateway de aplicativo para os pods no cluster. Emparelhar as duas redes virtuais requer a execução do comando CLI do Azure duas vezes separadas, para garantir que a conexão seja bidirecional. O primeiro comando criará uma conexão de emparelhamento da rede virtual do gateway de aplicativo para a rede virtual AKS; O segundo comando criará uma conexão de emparelhamento na outra direção.

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

Na etapa "Implantar um novo cluster AKS" acima, criamos o AKS com o Azure CNI, caso você tenha um cluster AKS existente usando o modo Kubenet, você precisa atualizar a tabela de rotas para ajudar os pacotes destinados a um IP POD a alcançar o nó que está hospedando o pod. Uma maneira simples de conseguir isso é associando a mesma tabela de rotas criada pelo AKS à sub-rede do Application Gateway.

Implantar um aplicativo de exemplo usando AGIC

Agora você implantará um aplicativo de exemplo no cluster AKS criado que usará o complemento AGIC para Ingress e conectará o gateway de aplicativo ao cluster AKS. Primeiro, você obterá credenciais para o cluster AKS implantado executando o az aks get-credentials comando.

az aks get-credentials -n myCluster -g myResourceGroup

Depois de ter as credenciais para o cluster criado, execute o seguinte comando para configurar um aplicativo de exemplo que usa AGIC para Ingress no cluster. A AGIC atualizará o gateway de aplicativo que você configurou anteriormente com as regras de roteamento correspondentes para o novo aplicativo de exemplo que você implantou.

kubectl apply -f https://raw.githubusercontent.com/Azure/application-gateway-kubernetes-ingress/master/docs/examples/aspnetapp.yaml 

Verifique se o aplicativo está acessível

Agora que o gateway de aplicativo está configurado para servir o tráfego para o cluster AKS, vamos verificar se seu aplicativo está acessível. Primeiro, você obterá o endereço IP do Ingresso.

kubectl get ingress

Verifique se o aplicativo de exemplo que você criou está ativo e em execução visitando o endereço IP do gateway de aplicativo que você obteve ao executar o comando acima ou verifique com curl. Pode levar um minuto para o gateway de aplicativo obter a atualização, portanto, se o gateway de aplicativo ainda estiver em um estado de "Atualização" no portal do Azure, deixe-o concluir antes de tentar acessar o endereço IP.

Clean up resources (Limpar recursos)

Quando não for mais necessário, exclua todos os recursos criados neste tutorial excluindo myResourceGroup e MC_myResourceGroup_myCluster_eastus grupos de recursos:

az group delete --name myResourceGroup 
az group delete --name MC_myResourceGroup_myCluster_eastus

Próximos passos