arrow_back

Entrega contínua com Google Cloud Deploy

Acesse mais de 700 laboratórios e cursos

Entrega contínua com Google Cloud Deploy

Laboratório 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Introdutório
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

Visão geral

O Google Cloud Deploy é um serviço gerenciado que automatiza a entrega de aplicativos para uma série de ambientes de destino em uma sequência de promoções definida. Quando você quiser implantar seu aplicativo atualizado, será necessário criar uma versão, cujo ciclo de vida é gerenciado por um pipeline de entrega.

Neste laboratório, você vai criar um pipeline de entrega usando o Google Cloud Deploy. Depois você vai criar uma versão de um aplicativo básico e promovê-lo em uma série de destinos do Google Kubernetes Engine (GKE).

O exemplo de aplicativo é um app da Web simples que detecta uma porta, fornece um código de resposta HTTP e adiciona uma entrada de registro.

Objetivos

Neste laboratório, você aprenderá a fazer o seguinte:

  • Implantar uma imagem de contêiner no Google Cloud Artifact Registry usando o Skaffold
  • Criar um pipeline de entrega do Google Cloud Deploy
  • Criar uma versão para o pipeline de entrega
  • Promover o aplicativo usando os destinos no pipeline de entrega

Configuração do laboratório

Acesse o Qwiklabs

Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período sem custo financeiro.

  1. Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você vai encontrar o seguinte:

    • O botão Abrir console do Google Cloud
    • O tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações, se forem necessárias
  2. Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.

    O laboratório ativa os recursos e depois abre a página Fazer login em outra guia.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.

    {{{user_0.username | "Nome de usuário"}}}

    Você também encontra o Nome de usuário no painel Detalhes do laboratório.

  4. Clique em Seguinte.

  5. Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.

    {{{user_0.password | "Senha"}}}

    Você também encontra a Senha no painel Detalhes do laboratório.

  6. Clique em Seguinte.

    Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  7. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.

Observação: para acessar uma lista de produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo ou digite o nome do serviço ou produto no campo Pesquisar. Ícone do menu de navegação

Depois que você concluir as etapas iniciais de login, o painel do projeto será exibido.

Ative o Google Cloud Shell

O Google Cloud Shell é uma máquina virtual com ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud.

O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.

    Ícone do Cloud Shell em destaque

  2. Clique em Continuar.

O provisionamento e a conexão do ambiente podem demorar um pouco. Quando você estiver conectado, já estará autenticado, e o projeto estará definido com seu PROJECT_ID. Exemplo:

ID do projeto em destaque no terminal do Cloud Shell

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  • Para listar o nome da conta ativa, use este comando:
gcloud auth list

Saída:

Credentialed accounts: - @.com (active)

Exemplo de saída:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Para listar o ID do projeto, use este comando:
gcloud config list project

Saída:

[core] project =

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: a documentação completa da gcloud está disponível no guia com informações gerais sobre a gcloud CLI .

Tarefa 1: criar três clusters do GKE

Nesta tarefa, você vai criar os três clusters do GKE que serão os destinos do pipeline de entrega.

Três clusters do GKE serão criados, indicando os três destinos do pipeline de entrega:

  • teste
  • preparo
  • produção
  1. Defina as variáveis de ambiente que serão usadas por vários comandos:
export PROJECT_ID=$(gcloud config get-value project) export REGION={{{ project_0.default_region | "REGION" }}} gcloud config set compute/region $REGION
  1. Ative a API Google Kubernetes Engine:
gcloud services enable \ container.googleapis.com \ clouddeploy.googleapis.com
  1. Configure o preenchimento com tabulação da kubectl no Cloud Shell:
source <(kubectl completion bash)
  1. Crie os três clusters do GKE:
gcloud container clusters create-auto test --async gcloud container clusters create-auto staging --async gcloud container clusters create-auto prod --async Observação: o --async também sinaliza os clusters para provisionamento no segundo plano, enquanto o usuário pode continuar configurando outros elementos do pipeline.
  1. Confira o status dos três clusters:
gcloud container clusters list --format="csv(name,status)" Observação: como estamos usando a flag --async, esse comando é uma forma de saber o status da implantação dos clusters.

Saída

name,status prod,PROVISIONING staging,PROVISIONING test,RUNNING

Criar clusters pode demorar alguns minutos. Você não precisa esperar que os clusters estejam prontos. Continue o laboratório.

Clique em Verificar meu progresso para conferir o objetivo. Crie três clusters do GKE

Tarefa 2: preparar a imagem de contêiner do aplicativo da Web

Nesta tarefa, você vai criar um repositório no Artifact Registry para guardar as imagens de contêiner do aplicativo da Web.

  1. Ative a API Artifact Registry:
gcloud services enable artifactregistry.googleapis.com
  1. Crie o repositório do app da Web para guardar imagens de contêiner:
gcloud artifacts repositories create web-app \ --description="Image registry for sample web app" \ --repository-format=docker \ --location=$REGION

Clique em Verificar meu progresso para conferir o objetivo. Crie o repositório do app da Web

Tarefa 3: criar e implantar as imagens de contêiner no Artifact Registry

Você vai clonar o repositório git que contém o aplicativo da Web e implantar as imagens de contêiner dele no Artifact Registry.

Preparar a configuração do aplicativo

  1. Clone o repositório para o laboratório no seu diretório principal:
cd ~/ git clone https://github.com/GoogleCloudPlatform/cloud-deploy-tutorials.git cd cloud-deploy-tutorials git checkout c3cae80 --quiet cd tutorials/base
  1. Crie a configuração skaffold.yaml:
envsubst < clouddeploy-config/skaffold.yaml.template > web/skaffold.yaml cat web/skaffold.yaml Observação: o comando envsubst é um comando de encontrar e substituir.

O diretório da Web agora contém o arquivo de configuração skaffold.yaml, que fornece instruções para o Skaffold criar uma imagem de contêiner para seu aplicativo. Essa configuração descreve os itens a seguir.

A seção "Criar" configura:

  • As duas imagens de contêiner que serão criadas (artefatos)
  • O projeto do Google Cloud Build usado para criar as imagens

A seção deploy configura os manifestos do Kubernetes necessários na implantação da carga de trabalho em um cluster.

A configuração portForward é usada para definir o serviço do Kubernetes para a implantação.

Saída

apiVersion: skaffold/v2beta7 kind: Config build: artifacts: - image: leeroy-web context: leeroy-web - image: leeroy-app context: leeroy-app googleCloudBuild: projectId: {{project-id}} deploy: kubectl: manifests: - leeroy-web/kubernetes/* - leeroy-app/kubernetes/* portForward: - resourceType: deployment resourceName: leeroy-web port: 8080 localPort: 9000 Observação: para visualizar os arquivos, use vi, emacs, nano ou o editor de código do Cloud Shell clicando no ícone Abrir editor no Cloud Shell.

Criar o aplicativo da Web

A ferramenta Skaffold vai lidar com o envio da base de código para o Cloud Build.

  1. Ative a API Cloud Build:
gcloud services enable cloudbuild.googleapis.com
  1. Execute o comando skaffold para criar o aplicativo e implantar a imagem de contêiner no repositório do Artifact Registry criado anteriormente:
cd web skaffold build --interactive=false \ --default-repo $REGION-docker.pkg.dev/$PROJECT_ID/web-app \ --file-output artifacts.json cd ..
  1. Depois de concluir a criação do Skaffold, verifique as imagens de contêiner no Artifact Registry:
gcloud artifacts docker images list \ $REGION-docker.pkg.dev/$PROJECT_ID/web-app \ --include-tags \ --format yaml

O parâmetro --format yaml retorna a saída como YAML para facilitar a leitura. O resultado será semelhante a este:

Saída

--- createTime: '2024-09-11T02:07:54.995807Z' package: us-central1-docker.pkg.dev/{{project-id}}/web-app/leeroy-app tags: '9181623' updateTime: '2024-09-11T02:07:54.995807Z' version: sha256:6af6a0a72d13dd6597c0fc0191f697e2da2c3892d1bf8e87a3df8d96612e1495 --- createTime: '2024-09-11T02:07:53.629263Z' package: us-central1-docker.pkg.dev/{{project-id}}/web-app/leeroy-web tags: '9181623' updateTime: '2024-09-11T02:07:53.629263Z' version: sha256:a0179673d1876f205875b223557c83162e56e91c5e3313f5e99465a224adb6c9

Por padrão, o Skaffold define a tag de uma imagem como a tag git relacionada, se disponível. É possível encontrar informações semelhantes no arquivo artifacts.json que foi criado pelo comando skaffold.

O Skaffold gera o arquivo web/artifacts.json com detalhes das imagens implantadas:

cat web/artifacts.json | jq

Saída

{ "builds": [ { "imageName": "leeroy-web", "tag": "us-central1-docker.pkg.dev/{{project-id}}/web-app/leeroy-web:9181623@sha256:a0179673d1876f205875b223557c83162e56e91c5e3313f5e99465a224adb6c9" }, { "imageName": "leeroy-app", "tag": "us-central1-docker.pkg.dev/{{project-id}}/web-app/leeroy-app:9181623@sha256:6af6a0a72d13dd6597c0fc0191f697e2da2c3892d1bf8e87a3df8d96612e1495" } ]

Clique em Verificar meu progresso para conferir o objetivo. Crie e implante as imagens de contêiner no Artifact Registry

Tarefa 4: criar o pipeline de entrega

Nesta tarefa, você vai configurar o pipeline de entrega. Ele vai promover apps do teste ao preparo e do preparo à produção.

  1. Ative a API Google Cloud Deploy:
gcloud services enable clouddeploy.googleapis.com
  1. Crie o recurso de pipeline de entrega usando o arquivo delivery-pipeline.yaml:
gcloud config set deploy/region $REGION cp clouddeploy-config/delivery-pipeline.yaml.template clouddeploy-config/delivery-pipeline.yaml gcloud deploy apply --file=clouddeploy-config/delivery-pipeline.yaml
  1. Verifique se o pipeline de entrega foi criado:
gcloud deploy delivery-pipelines describe web-app

O pipeline de entrega será semelhante à seguinte saída:

Saída

Unable to get target test Unable to get target staging Unable to get target prod Delivery Pipeline: createTime: '2024-09-11T14:03:18.294884547Z' description: web-app delivery pipeline etag: 2539eacd7f5c256d name: projects/{{project-id}}/locations/us-central1/deliveryPipelines/web-app serialPipeline: stages: - targetId: test - targetId: staging - targetId: prod uid: eb0601aa03ac4b088d74c6a5f13f36ae updateTime: '2024-09-11T14:03:18.680753520Z' Targets: []

Observe as três primeiras linhas da saída. No momento, o pipeline de entrega faz referência a três ambientes de destino que ainda não foram criados. Na próxima tarefa, você vai criar esses destinos.

Clique em Verificar meu progresso para conferir o objetivo. Crie o pipeline de entrega

Tarefa 5: configurar os destinos da implantação

Três destinos do pipeline de entrega serão criados, um para cada cluster do GKE.

Verificar se os clusters estão prontos

Os três clusters do GKE já devem estar em execução, mas é importante verificar.

  • Execute o seguinte para receber o status dos clusters:
gcloud container clusters list --format="csv(name,status)"

Os três clusters devem estar no estado "RUNNING", conforme indicado na saída abaixo. Se ainda não estiverem marcados como "RUNNING", tente novamente o comando acima até que o status seja alterado.

Saída

name,status prod,RUNNING staging,RUNNING test,RUNNING

Depois que todos os clusters estiverem com o status "RUNNING", continue o laboratório.

Criar um contexto para cada cluster

Use os comandos abaixo para gerar credenciais para cada cluster e crie um contexto kubectl fácil de usar para fazer referência ao cluster depois:

CONTEXTS=("test" "staging" "prod") for CONTEXT in ${CONTEXTS[@]} do gcloud container clusters get-credentials ${CONTEXT} --region ${REGION} kubectl config rename-context gke_${PROJECT_ID}_${REGION}_${CONTEXT} ${CONTEXT} done

Criar um namespace em cada cluster

Use os comandos abaixo para criar um namespace do Kubernetes (web-app) em cada um dos três clusters:

for CONTEXT in ${CONTEXTS[@]} do kubectl --context ${CONTEXT} apply -f kubernetes-config/web-app-namespace.yaml done

O aplicativo será implantado no namespace (web-app).

Criar os destinos do pipeline de entrega

  1. Envie uma definição de destino para cada destino:
for CONTEXT in ${CONTEXTS[@]} do envsubst < clouddeploy-config/target-$CONTEXT.yaml.template > clouddeploy-config/target-$CONTEXT.yaml gcloud deploy apply --file clouddeploy-config/target-$CONTEXT.yaml done

Os destinos são descritos em um arquivo yaml. Cada destino configura as informações relevantes do cluster para o destino. As configurações de destino de teste e preparo são basicamente as mesmas.

  1. Exiba os detalhes para o destino de teste:
cat clouddeploy-config/target-test.yaml

Saída

apiVersion: deploy.cloud.google.com/v1beta1 kind: Target metadata: name: test description: test cluster gke: cluster: projects/{{project-id}}/locations/us-central1/clusters/test

O destino de produção é um pouco diferente, já que exige aprovação (confira a configuração requireApproval na saída) antes que uma versão possa ser promovida para o cluster.

  1. Exiba os detalhes para o destino de produção:
cat clouddeploy-config/target-prod.yaml

Saída

apiVersion: deploy.cloud.google.com/v1beta1 kind: Target metadata: name: prod description: prod cluster requireApproval: true gke: cluster: projects/{{project-id}}/locations/us-central1/clusters/prod
  1. Verifique se os três destinos (teste, preparo, produção) foram criados:
gcloud deploy targets list

Todos os destinos do Google Cloud Deploy do pipeline de entrega foram criados.

Clique em Verificar meu progresso para conferir o objetivo. Configure os destinos da implantação

Tarefa 6: criar uma versão

Nesta tarefa, você vai criar uma versão do aplicativo.

Uma versão do Google Cloud Deploy é uma versão específica de uma ou mais imagens de contêiner associadas a um pipeline de entrega específico. Depois de criada, a versão pode ser promovida por vários destinos (a sequência de promoções). Além disso, a criação de uma versão renderiza o aplicativo usando o skaffold e salva a saída como uma referência pontual usada durante a versão.

Como esta é a primeira versão do seu aplicativo, ele será nomeado web-app-001.

  1. Execute o comando a seguir para criar a versão:
gcloud deploy releases create web-app-001 \ --delivery-pipeline web-app \ --build-artifacts web/artifacts.json \ --source web/

O parâmetro --build-artifacts faz referência ao arquivo artifacts.json criado pelo skaffold anteriormente. O --source parameter faz referência ao diretório de origem do aplicativo, onde é possível encontrar o skaffold.yaml.

Quando uma versão é criada, ela também é lançada automaticamente para o primeiro destino no pipeline, a menos que uma aprovação seja necessária. Isso será abordado em uma etapa posterior deste laboratório.

  1. Para confirmar que o destino de teste tem o aplicativo implantado, execute o comando a seguir:
gcloud deploy rollouts list \ --delivery-pipeline web-app \ --release web-app-001

Saída

--- approvalState: DOES_NOT_NEED_APPROVAL createTime: '2024-09-11T14:05:21.961604Z' deployEndTime: '2024-09-11T14:06:35.278604Z' deployStartTime: '2024-09-11T14:06:22.420091744Z' deployingBuild: projects/{{project-id}}/locations/us-central1/builds/4815b788-ec5e-4185-9141-a5b57c71b001 enqueueTime: '2024-09-11T14:06:21.760830Z' etag: 5cb7b6c342b5f29b name: projects/{{project-id}}/locations/us-central1/deliveryPipelines/web-app/releases/web-app-001/rollouts/web-app-001-to-test-0001 state: SUCCEEDED targetId: test uid: cccd9525d3a0414fa60b2771036841d9

O primeiro lançamento de uma versão vai levar vários minutos, porque o Google Cloud Deploy renderiza os manifestos para todos os destinos quando a versão é criada. O cluster do GKE também pode levar alguns minutos para fornecer os recursos necessários para a implantação.

Se você não vir state: SUCCEEDED na saída do comando anterior, aguarde e execute o comando periodicamente até a conclusão do lançamento.

  1. Para confirmar que seu aplicativo foi implantado no cluster do GKE de teste, execute os seguintes comandos:
kubectx test kubectl get all -n web-app

Saída

NAME READY STATUS RESTARTS AGE pod/leeroy-app-5547cf9d9b-rgc2l 1/1 Running 0 3m27s pod/leeroy-web-6768b49c46-w7vt9 1/1 Running 0 3m27s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/leeroy-app ClusterIP None <none> 50051/TCP 3m28s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/leeroy-app 1/1 1 1 3m28s deployment.apps/leeroy-web 1/1 1 1 3m28s NAME DESIRED CURRENT READY AGE replicaset.apps/leeroy-app-5547cf9d9b 1 1 1 3m28s replicaset.apps/leeroy-web-6768b49c46 1 1 1 3m28s Observação: o comando kubectx permite alternar entre contextos com facilidade.

Clique em Verificar meu progresso para conferir o objetivo. Crie uma versão

Tarefa 7: promover o aplicativo para o preparo

Nesta tarefa, você vai promover o aplicativo do destino de teste para o destino de preparo.

  1. Promova o aplicativo para o destino de preparo:
gcloud deploy releases promote \ --delivery-pipeline web-app \ --release web-app-001

Você precisa continuar antes de iniciar a promoção.

  • Pressione ENTER para aceitar o padrão (Y = sim).
  1. Para confirmar que o destino de preparo tem o aplicativo implantado, execute o comando a seguir:
gcloud deploy rollouts list \ --delivery-pipeline web-app \ --release web-app-001

Verificar a saída

Procure a seção marcada targetId: staging. Se você não vir state: SUCCEEDED na saída do comando anterior, aguarde e execute o comando periodicamente até a conclusão do lançamento.

Saída

--- approvalState: DOES_NOT_NEED_APPROVAL createTime: '2024-09-11T02:19:32.539468Z' deployEndTime: '2024-09-11T02:19:45.970949Z' deployStartTime: '2024-09-11T02:19:33.111948770Z' deployingBuild: projects/743805075658/locations/us-central1/builds/2316517c-3a2f-4cd3-80ad-6d133b653746 etag: 1109b802ff586df5 name: projects/{{project-id}}/locations/us-central1/deliveryPipelines/web-app/releases/web-app-001/rollouts/web-app-001-to-staging-0001 state: SUCCEEDED targetId: staging uid: 80a35a5f044844708d2050f8c556e07e

Clique em Verificar meu progresso para conferir o objetivo. Promova o aplicativo para o preparo

Tarefa 8: promover o aplicativo para produção

Nesta tarefa, você vai promover novamente o aplicativo, além de fornecer a aprovação.

  1. Promova o aplicativo para o destino de produção:
gcloud deploy releases promote \ --delivery-pipeline web-app \ --release web-app-001

Você precisa continuar antes de iniciar a promoção.

  • Pressione ENTER para aceitar o padrão (Y = sim).
  1. Para verificar o status do destino de produção, execute o comando a seguir:
gcloud deploy rollouts list \ --delivery-pipeline web-app \ --release web-app-001

Na saída, observe que o approvalState é NEEDS_APPROVAL e o estado é PENDING_APPROVAL.

Saída

--- approvalState: NEEDS_APPROVAL createTime: '2024-09-11T14:12:07.466989Z' etag: 6e9303e5a1b04084 name: projects/{{project-id}}/locations/us-central1/deliveryPipelines/web-app/releases/web-app-001/rollouts/web-app-001-to-prod-0001 state: PENDING_APPROVAL targetId: prod uid: a5c7d6007fee4d80904d49142581aaa7
  1. Aprove o lançamento com o código a seguir:
gcloud deploy rollouts approve web-app-001-to-prod-0001 \ --delivery-pipeline web-app \ --release web-app-001

Você vai precisar aprovar o lançamento antes de iniciar a promoção.

  • Pressione ENTER para aceitar o padrão (Y = sim).
  1. Para confirmar que o destino de produção tem o aplicativo implantado, execute o comando a seguir:
gcloud deploy rollouts list \ --delivery-pipeline web-app \ --release web-app-001

Conforme os lançamentos anteriores, localize a entrada do destino (targetId: prod) e verifique se o lançamento foi concluído (state: SUCCEEDED). Execute o comando periodicamente até a conclusão do lançamento.

  1. Use kubectl para verificar o status do aplicativo implantado:
kubectx prod kubectl get all -n web-app

Clique em Verificar meu progresso para conferir o objetivo. Promova o aplicativo para produção

Parabéns!

Agora você pode usar o Cloud Deploy para criar pipelines de entrega contínua!

Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de empresas e produtos podem ser marcas registradas das empresas a que estão associados.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.