arrow_back

Implementar fluxos de trabalho de DevOps no Google Cloud: laboratório com desafio

Teste e compartilhe seu conhecimento com nossa comunidade.
done
Tenha acesso a mais de 700 laboratórios, selos de habilidade e cursos

Implementar fluxos de trabalho de DevOps no Google Cloud: laboratório com desafio

Laboratório 1 hora 30 minutos universal_currency_alt 5 créditos show_chart Intermediário
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Teste e compartilhe seu conhecimento com nossa comunidade.
done
Tenha acesso a mais de 700 laboratórios, selos de habilidade e cursos

GSP330

Laboratórios autoguiados do Google Cloud

Visão geral

Nos laboratórios com desafio, apresentamos uma situação e um conjunto de tarefas. Para concluí-las, em vez de seguir instruções detalhadas, você usará o que aprendeu nos laboratórios do curso. Um sistema automático de pontuação (mostrado nesta página) vai avaliar seu desempenho.

Nos laboratórios com desafio, não ensinamos novos conceitos do Google Cloud. O objetivo dessas tarefas é aprimorar aquilo que você já aprendeu, como a alteração de valores padrão ou a leitura e pesquisa de mensagens para corrigir seus próprios erros.

Para alcançar a pontuação de 100%, você precisa concluir todas as tarefas no tempo definido.

Este laboratório é recomendado para estudantes que se inscreveram no curso Implement DevOps Workflows in Google Cloud. Tudo pronto para começar o desafio?

Antes de clicar no botão Start Lab

Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.

Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.

Confira os requisitos para concluir o laboratório:

  • Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: 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.
  • Tempo para concluir o laboratório---não se esqueça: depois de começar, não será possível pausar o laboratório.
Observação: não use seu projeto ou conta do Google Cloud neste laboratório para evitar cobranças extras na sua conta.

Cenário do desafio

Após se tornar Engenheiro de DevOps da Cymbal Superstore alguns meses atrás, você aprendeu como a empresa opera o site de e-commerce. A equipe de DevOps está trabalhando especificamente em um pipeline de CI/CD de grande escala e precisa da sua ajuda para criá-lo. Isso permite que a empresa automatize tarefas para os desenvolvedores, colabore de maneira mais eficaz com outras equipes e lance softwares com mais frequência e confiabilidade. Como a Cymbal Superstore quer usar todos os serviços nativos do Google Cloud no pipeline, sua experiência com o Cloud Source Repositories, o Artifact Registry, o Docker e o Cloud Build será muito importante.

logotipo da cymbal superstore

Antes de começar o projeto, a equipe de DevOps gostaria que você demonstrasse suas novas habilidades. Como parte desta demonstração, há uma lista de tarefas que você precisa realizar em determinado período de tempo em um ambiente de sandbox.

Seu desafio

Suas tarefas são as seguintes:

  • Criar um cluster do GKE com base em um conjunto de configurações fornecido.
  • Criar um Google Source Repository para hospedar o código do aplicativo Go.
  • Criar gatilhos do Cloud Build que implantam um aplicativo de desenvolvimento e produção.
  • Enviar por push atualizações para o app e criar builds.
  • Reverter o aplicativo de produção para uma versão anterior.

Em geral, você está criando um pipeline de CI/CD simples usando o Cloud Source Repositories, o Artifact Registry e o Cloud Build.

Tarefa 1: criar os recursos do laboratório

Nesta seção, você vai inicializar seu projeto do Google Cloud no ambiente de demonstração. Você vai ativar as APIs necessárias, configurar o Git no Cloud Shell, criar um repositório Docker do Artifact Registry e criar um cluster do GKE para executar os aplicativos de produção e desenvolvimento.

  1. Execute este comando para ativar as APIs para GKE, Cloud Build e Cloud Source Repositories:
gcloud services enable container.googleapis.com \ cloudbuild.googleapis.com \ sourcerepo.googleapis.com
  1. Adicione o papel de Desenvolvedor do Kubernetes na conta de serviço do Cloud Build:
export PROJECT_ID=$(gcloud config get-value project) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe $PROJECT_ID \ --format="value(projectNumber)")@cloudbuild.gserviceaccount.com --role="roles/container.developer"
  1. Execute o comando a seguir para configurar o Git no Cloud Shell e substitua <email> pelo endereço de e-mail do laboratório gerado e <name> pelo seu nome.
git config --global user.email <email> git config --global user.name <name>
  1. Crie um repositório Docker do Artifact Registry chamado my-repository na região para armazenar as imagens de contêiner.

  2. Crie um cluster do GKE Standard chamado hello-cluster com esta configuração:

Configuração Valor
Zona
Canal de lançamento Normal
Versão do cluster 1.29 ou mais recente
Escalonador automático de cluster Ativado
Número de nós 3
Mínimo de nós 2
Máximo de nós 6
  1. Crie os namespaces prod e dev no seu cluster.

Clique em Verificar meu progresso para conferir o objetivo. Criar os recursos do laboratório

Tarefa 2: criar um repositório no Cloud Source Repositories

Nesta tarefa, você criará um repositório sample-app no Cloud Source Repositories e vai inicializá-lo usando um exemplo de código. Esse repositório terá o código do aplicativo Go e será a principal fonte para acionar builds.

  1. Crie um repositório vazio chamado sample-app no Cloud Source Repositories.

  2. Clone o Cloud Source Repository sample-app no Cloud Shell.

  3. Use o seguinte comando para copiar o exemplo de código no diretório sample-app:

cd ~ gsutil cp -r gs://spls/gsp330/sample-app/* sample-app
  1. Execute o comando abaixo, que vai substituir automaticamente os marcadores de posição <your-region> e <your-zone> nos arquivos cloudbuild-dev.yaml e cloudbuild.yaml pela região e zona atribuídas ao seu projeto:
export REGION="{{{project_0.default_region | REGION}}}" export ZONE="{{{project_0.default_zone | ZONE}}}" for file in sample-app/cloudbuild-dev.yaml sample-app/cloudbuild.yaml; do sed -i "s/<your-region>/${REGION}/g" "$file" sed -i "s/<your-zone>/${ZONE}/g" "$file" done
  1. Faça sua primeira confirmação com o exemplo de código no diretório sample-app e envie por push as alterações para a ramificação master.

  2. Crie uma ramificação chamada dev. Faça uma confirmação com o exemplo de código no diretório sample-app e envie por push as alterações para a ramificação dev.

  3. Verifique se o exemplo de código e as ramificações estão armazenados no Source Repository.

Source Repository com ramificações

O código que você acabou de clonar contém um aplicativo Go simples com dois pontos de entrada: vermelho e azul. Cada um mostra um quadrado colorido simples na página da Web, dependendo do ponto de entrada que você acessar.

Clique em Verificar meu progresso para conferir o objetivo. Criar o repositório no Cloud Source Repositories

Tarefa 3: criar os gatilhos do Cloud Build

Nesta seção, você criará dois gatilhos do Cloud Build.

  • O primeiro gatilho ouve as mudanças na ramificação master e cria uma imagem Docker do seu aplicativo, envia por push para o Google Artifact Registry e implanta a versão mais recente da imagem no namespace prod no seu cluster do GKE.

  • O segundo gatilho ouve as mudanças na ramificação dev e cria uma imagem Docker do seu aplicativo, envia por push para o Google Artifact Registry e implanta a versão mais recente da imagem no namespace dev no seu cluster do GKE.

  1. Crie um gatilho do Cloud Build chamado sample-app-prod-deploy com estas configurações:

    • Evento: Enviar por push para uma ramificação
    • Repositório de origem: sample-app
    • Ramificação: ^master$
    • Arquivo de configuração do Cloud Build: cloudbuild.yaml
  2. Crie um gatilho do Cloud Build chamado sample-app-dev-deploy com as seguintes configurações:

    • Evento: Enviar por push para uma ramificação
    • Repositório de origem: sample-app
    • Ramificação: ^dev$
    • Arquivo de configuração do Cloud Build: cloudbuild-dev.yaml

Depois de configurar os gatilhos, qualquer mudança nas ramificações acionará o pipeline do Cloud Build correspondente, que vai criar e implantar o aplicativo conforme especificado nos arquivos cloudbuild.yaml.

Clique em Verificar meu progresso para conferir o objetivo. Criar os gatilhos do Cloud Build

Tarefa 4: implantar as primeiras versões do aplicativo

Nesta seção, você vai criar a primeira versão dos aplicativos de produção e de desenvolvimento.

Criar a primeira implantação de desenvolvimento

  1. No Cloud Shell, inspecione o arquivo cloudbuild-dev.yaml localizado no diretório sample-app e confira as etapas no processo de build. No arquivo cloudbuild-dev.yaml, substitua <version> nas linhas 9 e 13 por v1.0.

  2. Navegue para o arquivo dev/deployment.yaml e atualize <todo> na linha 17 com o nome da imagem do contêiner correto. Além disso, substitua a variável PROJECT_ID pelo ID do projeto real no nome da imagem do contêiner.

Observação: verifique se você tem o mesmo nome da imagem do contêiner em dev/deployment.yaml e cloudbuild-dev.yaml.
  1. Faça um commit com suas mudanças na ramificação dev e as envie por push para acionar o job de build sample-app-dev-deploy.

  2. Verifique se o build foi executado na página Histórico do Cloud Build e se o aplicativo development-deployment foi implantado no namespace dev do cluster.

  3. Exponha a implantação development-deployment em um serviço LoadBalancer chamado dev-deployment-service na porta 8080, e defina a porta de destino do contêiner como aquela especificada no Dockerfile.

  4. Navegue até o IP do balanceador de carga do serviço e adicione o ponto de entrada /blue no final da URL para verificar se o aplicativo está funcionando. Ele deve ser semelhante a: http://34.135.97.199:8080/blue.

Criar a primeira implantação de produção

  1. Alterne para a ramificação master. Inspecione o arquivo cloudbuild.yaml localizado no diretório sample-app e acesse as etapas no processo de build. No arquivo cloudbuild.yaml, substitua <version> nas linhas 11 e 16 por v1.0.

  2. Navegue para o arquivo prod/deployment.yaml e atualize <todo> na linha 17 com o nome da imagem do contêiner correto. Além disso, substitua a variável PROJECT_ID pelo ID do projeto real no nome da imagem do contêiner.

Observação: verifique se você tem o mesmo nome da imagem do contêiner em prod/deployment.yaml e cloudbuild.yaml.
  1. Faça um commit com suas mudanças na ramificação master e as envie por push para acionar o job de build sample-app-prod-deploy.

  2. Verifique se o build foi executado na página Histórico do Cloud Build e se o aplicativo production-deployment foi implantado no namespace prod do cluster.

  3. Exponha a implantação production-deployment no namespace prod para um serviço LoadBalancer chamado prod-deployment-service na porta 8080, e defina a porta de destino do contêiner para aquela especificada no Dockerfile.

  4. Navegue até o IP do balanceador de carga do serviço e adicione o ponto de entrada /blue no final da URL para verificar se o aplicativo está funcionando. Ele deve ser semelhante a: http://34.135.245.19:8080/blue.

Clique em Verificar meu progresso para conferir o objetivo. Implantar as primeiras versões do aplicativo

Tarefa 5: implantar as segundas versões do aplicativo

Nesta seção, você vai criar a segunda versão dos aplicativos de produção e de desenvolvimento.

Criar a segunda implantação de desenvolvimento

  1. Retorne para a ramificação dev.
Observação: antes de continuar, confira se você está na ramificação dev para criar a implantação do ambiente dev.
  1. No arquivo main.go, atualize a função main() para esta:
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. Adicione a seguinte função no arquivo main.go:
func redHandler(w http.ResponseWriter, r *http.Request) { img := image.NewRGBA(image.Rect(0, 0, 100, 100)) draw.Draw(img, img.Bounds(), &image.Uniform{color.RGBA{255, 0, 0, 255}}, image.ZP, draw.Src) w.Header().Set("Content-Type", "image/png") png.Encode(w, img) }
  1. Inspecione o arquivo cloudbuild-dev.yaml e acesse as etapas no processo de build. Atualize a versão da imagem Docker para v2.0.

  2. Navegue para o arquivo dev/deployment.yaml e atualize o nome da imagem do contêiner para a nova versão (v2.0).

  3. Faça um commit com suas mudanças na ramificação dev e as envie por push para acionar o job de build sample-app-dev-deploy.

  4. Verifique se o build foi executado na página Histórico do Cloud Build e confirme se o aplicativo development-deployment foi implantado no namespace dev do cluster e está usando a imagem v2.0.

  5. Navegue até o IP do balanceador de carga do serviço e adicione o ponto de entrada /red ao final do URL para verificar se o aplicativo está funcionando. Ele deve ser semelhante a: http://34.135.97.199:8080/red.

Observação: pode levar alguns minutos para que as atualizações sejam propagadas para o balanceador de carga.

Criar uma segunda implantação de produção

  1. Alterne para a ramificação master.
Observação: antes de continuar, confira se você está na ramificação master para criar a implantação do ambiente master.
  1. No arquivo main.go, atualize a função main() para esta:
func main() { http.HandleFunc("/blue", blueHandler) http.HandleFunc("/red", redHandler) http.ListenAndServe(":8080", nil) }
  1. Adicione a seguinte função no arquivo main.go:
func redHandler(w http.ResponseWriter, r *http.Request) { img := image.NewRGBA(image.Rect(0, 0, 100, 100)) draw.Draw(img, img.Bounds(), &image.Uniform{color.RGBA{255, 0, 0, 255}}, image.ZP, draw.Src) w.Header().Set("Content-Type", "image/png") png.Encode(w, img) }
  1. Inspecione o arquivo cloudbuild.yaml para acessar as etapas no processo de build. Atualize a versão da imagem Docker para v2.0.

  2. Navegue para o arquivo prod/deployment.yaml e atualize o nome da imagem do contêiner para a nova versão (v2.0).

  3. Faça um commit com suas mudanças na ramificação master e as envie por push para acionar o job de build sample-app-prod-deploy.

  4. Verifique se o build foi executado na página Histórico do Cloud Build e confirme se o aplicativo production-deployment foi implantado no namespace prod do cluster e está usando a imagem v2.0.

  5. Navegue até o IP do balanceador de carga do serviço e adicione o ponto de entrada /red ao final do URL para verificar se o aplicativo está funcionando. Ele deve ser semelhante a: http://34.135.245.19:8080/red.

Observação: pode levar alguns minutos para que as atualizações sejam propagadas para o balanceador de carga.

Ótimo. Você criou pipelines de CI/CD de produção e desenvolvimento totalmente funcionais.

Clique em Verificar meu progresso para conferir o objetivo. Implantar as segundas versões do aplicativo

Tarefa 6: reverter a implantação de produção

Nesta seção, você reverterá a implantação de produção para uma versão anterior.

  1. Reverta production-deployment para a versão v1.0 do aplicativo.
Dica: com o histórico do Cloud Build, é fácil reverter/recriar as implantações com as versões anteriores.
  1. Navegue até o IP do balanceador de carga do serviço e adicione o ponto de entrada /red ao final do URL da implantação de produção. A resposta na página deve ser 404.

Clique em Verificar meu progresso para conferir o objetivo. Reverter a implantação de produção

Parabéns!

Parabéns! Neste laboratório, você mostrou suas habilidades de implementação do fluxo de trabalho DevOps no Google Cloud. Primeiro você criou um cluster do GKE para executar o aplicativo e um repositório git para hospedar a base de código. Em seguida, você criou gatilhos do Cloud Build, modificou o código e os modelos e enviou por push atualizações para o repositório que criou os primeiros builds de aplicativos de desenvolvimento e produção. Em seguida, você enviou atualizações ao aplicativo para criar builds e reverteu o aplicativo de produção para uma versão anterior. Agora você pode começar o trabalho de DevOps no seu ambiente.

Selo de habilidade &quot;Implement Devops Workflows&quot;

Conquiste seu próximo selo de habilidade

Este laboratório autoguiado faz parte do curso Implement DevOps Workflows in Google Cloud. Ao concluir o curso, você ganha o selo acima como reconhecimento pela sua conquista. Ele pode ser adicionado ao seu currículo e compartilhado nas plataformas sociais. Use #GoogleCloudBadge para anunciar sua conquista.

Este selo de habilidade faz parte do programa de aprendizado Cloud Devops Engineer do Google Cloud. Para continuar sua jornada de aprendizado, inscreva-se no curso Monitor and Log with Google Cloud Observability.

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 26 de junho de 2024

Laboratório testado em 26 de junho de 2024

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

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