Implantar um aplicativo no GKE no Azure

Esta página descreve como criar um cluster e um pool de nós e, em seguida, implantar um aplicativo de exemplo usando o GKE no Azure.

Suporte Terraform

Se você estiver familiarizado com o Terraform, poderá usar 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, você deve atender aos pré-requisitos . Em particular, você deve fornecer os seguintes recursos:

  • Uma rede virtual do Azure onde o cluster será executado.
  • Uma sub-rede para as réplicas do plano de controle do Kubernetes.
  • Atribuições de função do Azure que concederão ao GKE no Azure acesso ao seu ambiente do Azure usando uma entidade de serviço.
  • Um recurso do AzureClient que o GKE no Azure usa para autenticar serviços do Azure e gerenciar recursos na sua 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 seus clusters. Todos os outros recursos subjacentes do Azure para o seu cluster são gerenciados pelo GKE no Azure.

Definir configurações padrão para o gcloud CLI

Use o gcloud CLI para configurar as configurações padrão para seu projeto padrão e Google Cloud região.

Seu projeto tem um ID de projeto como identificador exclusivo. Ao criar um projeto, você pode usar o ID de projeto gerado automaticamente ou criar o seu próprio.

Seu Google Cloud região é o local de onde seus clusters serão gerenciados. Por exemplo, us-west1 . Consulte Regiões de gerenciamento para obter mais detalhes.

Ao configurar essas configurações padrão, você não precisa incluí-las ao executar a Google Cloud CLI. Você também pode especificar configurações ou substituí-las passando os sinalizadores --project e --location para a Google Cloud CLI.

Quando você cria recursos do GKE no Azure depois de configurar seu projeto e local padrão, os recursos são criados automaticamente nesse projeto e local.

Para definir padrões, siga estas etapas:

  1. Defina o projeto padrão:

    gcloud config set project PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do seu projeto.

  2. Defina o local de gerenciamento padrão:

    gcloud config set container_azure/location GOOGLE_CLOUD_LOCATION
    

    Substitua GOOGLE_CLOUD_LOCATION pela sua localização, como us-west1 .

Selecione IDs de recursos do Azure para seu cluster

Selecione um ID de grupo de recursos

Salve o grupo de recursos do seu 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 Criar um grupo de recursos do Azure .

Selecione uma ID de rede virtual

Salve o ID da VNet do seu cluster em uma variável de ambiente executando o seguinte comando:

VNET_ID=$(az network vnet show --query id --output tsv \
    --resource-group=VNET_RESOURCE_GROUP_NAME \
    --name=VNET_NAME)

Substitua o seguinte:

Selecione um ID de sub-rede

Salve o ID de sub-rede do seu cluster em uma variável de ambiente executando o seguinte 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)

Substituir:

  • 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 que você configurou em Criar uma rede virtual do Azure .
  • VNET_NAME pelo nome da sua rede virtual. Pode ser o nome da sua rede virtual configurada em Criar uma rede virtual do Azure .
  • SUBNET_NAME pelo nome da sua sub-rede — por exemplo, default .

Selecione intervalos CIDR para seu cluster

O Kubernetes exige que dois intervalos CIDR sejam fornecidos para o cluster. Esses intervalos CIDR devem ser escolhidos de forma que não se sobreponham aos intervalos CIDR usados ​​pelas suas sub-redes VPC. Eles devem ser grandes o suficiente para o tamanho máximo esperado do seu cluster.

  • Intervalo CIDR de endereço de pod : quando um novo Pod é criado, ele recebe um endereço IP desse intervalo. Exemplo de intervalo: 192.168.208.0/20

  • Intervalo CIDR de endereço de serviço : quando um novo serviço é criado, ele recebe um endereço IP desse intervalo. Exemplo de intervalo: 192.168.224.0/20

Criar um cluster

Use o comando a seguir para criar um cluster no GKE no Azure.

gcloud container azure clusters create azure-cluster-0 \
    --cluster-version 1.31.4-gke.500 \
    --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"

Substituir:

Para obter mais informações e parâmetros opcionais, consulte a página de referência do gcloud container azure clusters create .

Criar um pool de nós

Crie um pool de nós com o Google Cloud CLI:

gcloud container azure node-pools create pool-0 \
    --cluster azure-cluster-0 \
    --node-version 1.31.4-gke.500 \
    --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 sua chave pública SSH, conforme criado na etapa de pré-requisito " Criar um par de chaves SSH" . Se você salvou sua chave pública em uma variável de ambiente, pode usar ${SSH_PUBLIC_KEY} .

Visualize o status do seu cluster

Depois de criar um cluster e um pool de nós, você pode visualizar o status de um cluster com o Google Cloud CLI ou o Google Cloud console. Para visualizar o status do cluster, escolha se você está usando o Google Cloud CLI ou Google Cloud console e siga estes passos:

gcloud

Use o comando gcloud container azure clusters describe para obter detalhes sobre seu cluster:

gcloud container azure clusters describe CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

Substitua o seguinte:

  • CLUSTER_NAME : nome do seu cluster
  • GOOGLE_CLOUD_LOCATION : o nome do Google Cloudlocal que gerencia o cluster

Google Cloud console

  1. No Google Cloud console, acesse a página de visão geral dos clusters do Google Kubernetes Engine .

    Ir para clusters do GKE

  2. Seus clusters são listados por nome e localização.

  3. Clique no nome do cluster. Um painel com informações sobre o cluster, incluindo seu status e recursos habilitados, será exibido.

Obter credenciais de autenticação para o cluster

Depois de criar seu cluster, você precisa obter credenciais de autenticação para interagir com o cluster:

gcloud container azure clusters get-credentials azure-cluster-0

Este comando configura kubectl para acessar o cluster que você criou usando o Connect Gateway . Você precisa de pelo menos um pool de nós para usar o Connect Gateway, pois ele depende do agente Connect, que é executado como uma implantação no cluster.

Implantar um aplicativo no cluster

Agora que você criou um cluster, pode implantar um aplicativo em contêiner nele. Para este início rápido, você pode implantar nosso aplicativo web de exemplo, hello-app .

Use objetos do Kubernetes para criar e gerenciar os recursos do seu cluster. Use o objeto Deployment para implantar aplicativos sem estado, como servidores web. Objetos de serviço definem regras e balanceadores de carga para acessar seu aplicativo pela internet.

Criar a implantação

Para executar hello-app no ​​seu 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 do contêiner hello-app .

Neste 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 . O comando :1.0 indica a versão específica da imagem a ser extraída. Se você não especificar uma versão, a imagem marcada com latest será usada.

Exponha a implantação

Após implantar o aplicativo, você precisa expô-lo à 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

Passar o sinalizador --type LoadBalancer cria um balanceador de carga do Azure para o seu contêiner. O sinalizador --port inicializa a porta pública 80 para a internet e o sinalizador --target-port roteia o tráfego para a porta 8080 do aplicativo.

Os balanceadores de carga são cobrados de acordo com os preços do balanceador de carga do Azure.

Inspecionar e visualizar o aplicativo

  1. Inspecione os Pods em execução usando kubectl get pods :

    kubectl get pods
    

    Você deverá ver um Pod hello-server em execução no seu cluster.

  2. Inspecione o serviço hello-server usando kubectl get service :

    kubectl get service hello-server
    

    A partir da saída deste comando, copie o endereço IP externo do serviço da coluna EXTERNAL-IP .

  3. Visualize o aplicativo no seu navegador da web usando o IP externo com a porta exposta:

    http://EXTERNAL-IP
    

Você acabou de implantar um aplicativo Web em contêiner no GKE no Azure.

Limpar

  1. Exclua o Serviço e a Implantação do aplicativo:

    kubectl delete service hello-server
    kubectl delete deployment hello-server
    
  2. Exclua seu pool de nós executando gcloud container azure node-pools delete :

    gcloud container azure node-pools delete pool-0 --cluster azure-cluster-0
    
  3. Exclua seu cluster executando gcloud container azure clusters delete :

    gcloud container azure clusters delete azure-cluster-0
    

O que vem a seguir