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 do 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_ID
pela ID do seu projeto.Defina o local de gerenciamento padrão:
gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
Substitua
GOOGLE_CLOUD_LOCATION
pela 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_NAME
pelo nome do grupo de recursos que contém a rede virtual, conforme configurado na etapa de Criar uma rede virtual do Azure.VNET_NAME
pelo 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_NAME
por 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_NAME
pelo nome da rede virtual; Pode ser o nome da sua rede virtual configurada em Criar uma rede virtual do Azure.SUBNET_NAME
pelo 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/20Intervalo 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.29.3-gke.600 \
--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 do Google Cloud.FLEET_PROJECT_ID
pelo ID do projeto host da fleet em que o cluster será registrado.CLIENT_NAME
: nome do seu AzureClientPOD_CIDR_BLOCK
: o intervalo de endereços de pods do clusterSERVICE_CIDR_BLOCK
: o intervalo de endereços de serviço do clusterSSH_PUBLIC_KEY
pelo 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.29.3-gke.600 \
--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 do 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:
--image
especifica 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.0
indica a versão da imagem específica a ser extraída. Se você não especificar uma versão, a imagem marcada comlatest
será 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-server
em execução no cluster.Use
kubectl get service
para inspecionar o serviçohello-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 delete
para excluir o pool de nós:gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
Execute
gcloud container azure clusters delete
para excluir o cluster:gcloud container azure clusters delete azure-cluster-0