Implantar um aplicativo no GKE no Azure
Nesta página, descrevemos como criar um cluster e um pool de nós e, em seguida, implantar um aplicativo de exemplo usando o GKE no Azure.
Suporte ao Terraform
Se você já conhece o Terraform, use os scripts do Terraform disponíveis no GitHub para automatizar os pré-requisitos e criar um cluster.
Antes de começar
Antes de criar um cluster, conclua os pré-requisitos. Especificamente, é necessário fornecer os seguintes recursos:
- Uma rede virtual do Azure em que o cluster será executado.
- Uma sub-rede para as réplicas do plano de controle do Kubernetes.
- Atribuições de papéis do Azure que concederão ao GKE no Azure acesso ao ambiente do Azure usando um principal de serviço.
- Um recurso do AzureClient que o GKE no Azure usa para se autenticar nos serviços do Azure e gerenciar recursos na conta do Azure.
- Um par de chaves SSH para acessar máquinas virtuais do Azure no cluster.
É sua responsabilidade criar e gerenciar esses recursos, que podem ser compartilhados entre todos os clusters. Todos os outros recursos subjacentes do Azure para o cluster são gerenciados pelo GKE no Azure.
Definir as configurações padrão para a CLI gcloud
Use a CLI gcloud para definir as configurações padrão do projeto padrão e da região do Google Cloud .
O projeto tem um ID como identificador exclusivo. Ao criar um projeto, é possível usar o ID do projeto gerado automaticamente ou criar um próprio.
Sua região Google Cloud é um local onde os clusters serão gerenciados
 Por exemplo, us-west1. Consulte as
regiões de gerenciamento para mais detalhes.
Ao definir essas configurações padrão, não é necessário incluí-las ao
executar a Google Cloud CLI. Também é possível especificar configurações ou modificar as configurações
padrão transmitindo as sinalizações --project e --location para a
Google Cloud CLI.
Quando você cria recursos do GKE no Azure depois de configurar o projeto e o local padrão, os recursos são criados automaticamente nesse projeto e local.
Para definir os padrões, siga estas etapas:
- Defina o projeto padrão. - gcloud config set project PROJECT_ID- Substitua - PROJECT_IDpela ID do seu projeto.
- Defina o local de gerenciamento padrão: - gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION- Substitua - GOOGLE_CLOUD_LOCATIONpela sua localização, por exemplo,- us-west1.
Selecionar IDs de recursos do Azure para o cluster
Selecionar um ID de grupo de recursos
Salve o grupo de recursos do cluster em uma variável de ambiente executando o seguinte comando:
CLUSTER_RESOURCE_GROUP_ID=$(az group show --query id --output tsv \
    --resource-group=CLUSTER_RESOURCE_GROUP_NAME)
Substitua CLUSTER_RESOURCE_GROUP_NAME pelo nome do
grupo de recursos para provisionar os recursos do cluster, que você configurou na etapa de pré-requisito de
  Criar um grupo de recursos do Azure.
Selecionar um ID de rede virtual
Salve o ID do VNet do cluster em uma variável de ambiente executando o comando:
VNET_ID=$(az network vnet show --query id --output tsv \
    --resource-group=VNET_RESOURCE_GROUP_NAME \
    --name=VNET_NAME)
Substitua:
- VNET_RESOURCE_GROUP_NAMEpelo nome do grupo de recursos que contém a rede virtual, conforme configurado na etapa de Criar uma rede virtual do Azure.
- VNET_NAMEpelo nome da rede virtual, conforme configurado na etapa de pré-requisito Criar uma rede virtual do Azure.
Selecionar um ID de sub-rede
Salve o ID da sub-rede do cluster em uma variável de ambiente executando o comando:
SUBNET_ID=$(az network vnet subnet show --query id --output tsv \
    --resource-group VNET_RESOURCE_GROUP_NAME \
    --vnet-name VNET_NAME \
    --name SUBNET_NAME)
Substitua:
- VNET_RESOURCE_GROUP_NAMEpor um nome de grupo de recursos existente que contenha sua rede virtual; Pode ser o nome do grupo de recursos configurado em Criar uma rede virtual do Azure.
- VNET_NAMEpelo nome da rede virtual; Pode ser o nome da sua rede virtual configurada em Criar uma rede virtual do Azure.
- SUBNET_NAMEpelo nome da sub-rede, por exemplo,- default.
Selecionar intervalos CIDR para o cluster
O Kubernetes exige que dois intervalos de CIDR sejam fornecidos para o cluster. Esses intervalos de CIDR precisam ser escolhidos para que não se sobreponham aos intervalos de CIDR usados pelas sub-redes VPC. Eles precisam ser grandes o suficiente para o tamanho máximo esperado do cluster.
- Intervalo de CIDR do endereço do pod: quando um novo - Podé criado, ele recebe um endereço IP desse intervalo. Exemplo de intervalo: 192.168.208.0/20
- Intervalo de CIDR do endereço do serviço: quando um novo Serviço é criado, um endereço IP desse intervalo é alocado para ele. Exemplo de intervalo: 192.168.224.0/20 
Criar um cluster
Use o seguinte comando para criar um cluster no GKE no Azure.
gcloud container azure clusters create azure-cluster-0 \
    --cluster-version 1.32.4-gke.200 \
    --azure-region AZURE_REGION \
    --fleet-project FLEET_PROJECT_ID \
    --client CLIENT_NAME \
    --resource-group-id $CLUSTER_RESOURCE_GROUP_ID \
    --vnet-id $VNET_ID \
    --subnet-id $SUBNET_ID \
    --pod-address-cidr-blocks POD_CIDR_BLOCK \
    --service-address-cidr-blocks SERVICE_CIDR_BLOCK \
    --ssh-public-key "SSH_PUBLIC_KEY" \
    --tags "google:gkemulticloud:cluster=azure-cluster-0"
Substitua:
- AZURE_REGION: uma região compatível do Azure associada à região Google Cloud .
- FLEET_PROJECT_IDpelo ID do projeto host da fleet em que o cluster será registrado.
- CLIENT_NAME: nome do seu AzureClient
- POD_CIDR_BLOCK: o intervalo de endereços de pods do cluster
- SERVICE_CIDR_BLOCK: o intervalo de endereços de serviço do cluster
- SSH_PUBLIC_KEYpelo texto da chave pública SSH, conforme criado na etapa de pré-requisito de Criar um par de chaves SSH. Se você salvou a chave pública em uma variável de ambiente nessa etapa, é possível usar- ${SSH_PUBLIC_KEY}.
Para mais informações e parâmetros opcionais, consulte a página de referência gcloud container azure clusters create.
Crie um pool de nós.
Crie um pool de nós com a Google Cloud CLI:
gcloud container azure node-pools create pool-0 \
    --cluster azure-cluster-0 \
    --node-version 1.32.4-gke.200 \
    --vm-size Standard_B2s \
    --max-pods-per-node 110 \
    --min-nodes 1 \
    --max-nodes 5 \
    --ssh-public-key "SSH_PUBLIC_KEY" \
    --subnet-id $SUBNET_ID \
    --tags "google:gkemulticloud:cluster=azure-cluster-0"
Substitua SSH_PUBLIC_KEY pelo texto da chave pública SSH,
  conforme criado na etapa de pré-requisito
  Criar um par de chaves SSH. Se você salvou a chave pública em uma variável de ambiente,
  será possível usar ${SSH_PUBLIC_KEY}.
Ver o status do cluster
Depois de criar um cluster e um pool de nós, é possível ver o status de um cluster com a Google Cloud CLI ou o console do Google Cloud . Para ver o status do cluster, escolha se você está usando a Google Cloud CLI ou o console do Google Cloud e siga estas etapas:
gcloud
Use o comando gcloud container azure clusters describe para ver detalhes
sobre o cluster:
gcloud container azure clusters describe CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION
Substitua:
- CLUSTER_NAME: o nome do cluster.
- GOOGLE_CLOUD_LOCATION: o nome do local do Google Cloud que gerencia o cluster
Console do Google Cloud
- No console Google Cloud , acesse a página Visão geral dos clusters do Google Kubernetes Engine. 
- Os clusters são listados por nome e local. 
- Clique no nome do cluster. Um painel com informações sobre o cluster, incluindo o status e os recursos ativados, será exibido. 
receba as credenciais de autenticação para o cluster
Depois de criar o cluster, você precisará das credenciais de autenticação para interagir com o cluster:
gcloud container azure clusters get-credentials azure-cluster-0
Esse comando configura kubectl para acessar o cluster que você criou pelo
Gateway do Connect. Você precisa de
pelo menos um pool de nós para usar o gateway do Connect porque ele depende do
agente do Connect, que é executado como uma implantação no cluster.
Implantar um aplicativo no cluster
Agora que criou um cluster, é possível implantar um aplicativo conteinerizado
nele. Para este guia de início rápido, implante nosso aplicativo da Web de exemplo,
hello-app.
Você usa objetos do Kubernetes para criar e gerenciar os recursos do cluster. Use o objeto de implantação para implantar aplicativos sem estado, como servidores da Web. Os objetos de Serviço definem as regras e os balanceadores de carga para acessar o aplicativo pela Internet.
Criar a implantação
Para executar hello-app no cluster, você precisa implantar o aplicativo
executando o seguinte comando:
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Este comando do Kubernetes, kubectl create deployment, cria uma implantação chamada hello-server. O pod da implantação executa a imagem de contêiner hello-app.
Nesse comando:
- --imageespecifica uma imagem de contêiner a ser implantada. Nesse caso, o comando extrai a imagem de exemplo de um repositório do Artifact Registry,- us-docker.pkg.dev/google-samples/containers/gke/hello-app.- :1.0indica a versão da imagem específica a ser extraída. Se você não especificar uma versão, a imagem marcada com- latestserá usada.
Expor a implantação
Após a implantação do aplicativo, você precisará expô-lo na Internet para que os usuários possam acessá-lo. Você pode expor seu aplicativo criando um serviço, um recurso do Kubernetes que expõe seu aplicativo ao tráfego externo.
Para expor seu aplicativo, execute o seguinte comando kubectl expose:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
Transmitir a sinalização --type LoadBalancer cria um balanceador de carga do Azure para
o contêiner. A sinalização --port inicializa a porta
pública 80 na Internet e a sinalização --target-port encaminha o tráfego para
a porta 8080 do aplicativo.
Os balanceadores de carga são cobrados de acordo com os preços dos balanceadores de carga do Azure.
Inspecionar e ver o aplicativo
- Inspecione os pods em execução usando - kubectl get pods:- kubectl get pods - Você verá um pod - hello-serverem execução no cluster.
- Use - kubectl get servicepara inspecionar o serviço- hello-server:- kubectl get service hello-server - Na saída desse comando, copie o endereço IP externo do serviço da coluna - EXTERNAL-IP.
- Use o IP externo com a porta exposta a seguir para ver o aplicativo pelo navegador da Web: - http://EXTERNAL-IP
Você acabou de implantar um web app conteinerizado no GKE no Azure.
Limpar
- Exclua o Serviço e a implantação do aplicativo: - kubectl delete service hello-server kubectl delete deployment hello-server 
- Execute - gcloud container azure node-pools deletepara excluir o pool de nós:- gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0 
- Execute - gcloud container azure clusters deletepara excluir o cluster:- gcloud container azure clusters delete azure-cluster-0