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:
- Crie um grupo de recursos.
- Crie um novo cluster AKS.
- Crie um novo gateway de aplicativo.
- 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.
- Emparelhe a rede virtual do gateway de aplicativos com a rede virtual do cluster AKS.
- Implante 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 --name myCluster --resource-group 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 --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
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 --name myApplicationGateway --resource-group myResourceGroup -o tsv --query "id")
az aks enable-addons --name myCluster --resource-group myResourceGroup --addon ingress-appgw --appgw-id $appgwId
Habilite o complemento AGIC no cluster AKS existente por meio do portal do Azure
- Na home page do portal do Azure, navegue até o recurso de cluster AKS.
- No menu de serviço, em Configurações, selecione Rede>Integração de rede virtual.
- Em Controlador de entrada do Application Gateway, selecione Gerenciar.
- Na página Controlador de entrada do Gateway de Aplicativo, marque a caixa de seleção para habilitar o controlador de entrada e selecione o gateway de aplicativo existente na lista suspensa.
- Selecione Guardar.
Importante
Se você usar um gateway de aplicativo em um grupo de recursos diferente do grupo de recursos de cluster AKS, a identidade gerenciada ingressapplicationgateway-{AKSNAME} criada deverá 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 --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
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 --name myCluster --resource-group 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