arrow_back

Como implantar um site no Cloud Run

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Como implantar um site no Cloud Run

Lab 1 hora universal_currency_alt 1 crédito show_chart Introdutório
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP659

Laboratórios autoguiados do Google Cloud

Visão geral

Administrar sites pode ser trabalhoso. É preciso criar e gerenciar VMs, clusters, pods, serviços etc. Esse processo faz sentido para aplicativos grandes e com vários níveis, mas não é necessário se você quiser apenas implantar um site e torná-lo visível.

Com o Cloud Run, a solução do Cloud desenvolvida no framework Knative do Google, é possível gerenciar e implantar um site sem o overhead de infraestrutura exigido pelas implantações puras do Kubernetes ou com VMs. Além de simplificar o gerenciamento, essa abordagem também permite a redução da escala a zero quando o site não está recebendo solicitações.

O Cloud Run leva o conceito de desenvolvimento sem servidor para os contêineres. Ele pode ser executado em clusters do Google Kubernetes Engine (GKE) ou em uma solução PaaS totalmente gerenciada oferecida pelo Cloud Run. Neste laboratório, você trabalhará com o segundo caso.

A ordem das tarefas simula uma experiência de desenvolvedor de nuvem:

  1. Criar um contêiner do Docker no seu aplicativo
  2. Implantar o contêiner no Cloud Run
  3. Modificar o site
  4. Lançar uma nova versão sem tempo de inatividade

Diagrama da arquitetura

Veja abaixo o fluxo de implantação e hospedagem do Cloud Run.

Comece com uma imagem Docker criada no Cloud Build, que é acionada pelo Cloud Shell. Depois, implante a imagem no Cloud Run com um comando no Cloud Shell.

Diagrama de informações gerais do laboratório

O que você vai aprender

  • Criar uma imagem Docker usando o Cloud Build e fazer o upload dela no Artifact Registry
  • Implantar imagens do Docker no Cloud Run
  • Gerenciar implantações do Cloud Run
  • Configurar um endpoint para um aplicativo no Cloud Run

Configuração e requisitos

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.

Como iniciar seu laboratório e fazer login no console do Google Cloud

  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ê verá o seguinte:

    • O botão Abrir Console do Cloud
    • Tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações se forem necessárias
  2. Clique em Abrir Console do Google. O laboratório ativa recursos e depois abre outra guia com a página Fazer login.

    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. Caso seja preciso, copie o Nome de usuário no painel Detalhes do laboratório e cole esse nome na caixa de diálogo Fazer login. Clique em Avançar.

  4. Copie a Senha no painel Detalhes do laboratório e a cole na caixa de diálogo Olá. Clique em Avançar.

    Importante: você precisa usar as credenciais do painel à esquerda. Não use suas credenciais do Google Cloud Ensina. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  5. 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 GCP vai ser aberto nesta guia.

Observação: para ver uma lista dos produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo. Ícone do menu de navegação

Ativar o Cloud Shell

O Cloud Shell é uma máquina virtual com várias 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. Clique em Ativar o Cloud Shell Ícone "Ativar o Cloud Shell" na parte de cima do console do Google Cloud.

Depois de se conectar, vai notar que sua conta já está autenticada, e que o projeto está configurado com seu PROJECT_ID. A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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

  1. (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
  1. Clique em Autorizar.

  2. A saída será parecida com esta:

Saída:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project

Saída:

[core] project = <project_ID>

Exemplo de saída:

[core] project = qwiklabs-gcp-44776a13dea667a6 Observação: para conferir a documentação completa da gcloud, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.

Tarefa 1: Clonar o repositório de origem

Como você vai implantar um site que já existe, basta clonar o código-fonte e depois criar as imagens do Docker e fazer a implantação no Cloud Run.

  1. Abra uma nova janela no Cloud Shell e execute os comandos a seguir para clonar o repositório git e acessar o diretório apropriado:
git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices
  1. Execute o seguinte comando para instalar as dependências do NodeJS e testar o aplicativo antes da implantação:
./setup.sh

Esse processo vai levar alguns minutos. Você verá uma mensagem quando ele for concluído.

  1. Execute o comando a seguir para iniciar o servidor da Web e testar o aplicativo:
cd ~/monolith-to-microservices/monolith npm start

Saída:

Monolith listening on port 8080!
  1. Para ver o aplicativo, clique no ícone de visualização na Web e selecione Visualizar na porta 8080.

Opção &quot;Visualizar na porta 8080&quot; selecionada no menu expandido de visualização da Web

Uma nova janela será aberta na página da Web "Fancy Store".

Site da Fancy Store

  1. Depois de visualizar o site, feche a janela e pressione CTRL+C no Cloud Shell para interromper o servidor da Web.

Tarefa 2: Criar um contêiner do Docker com o Cloud Build

Agora que os arquivos de origem estão prontos, é hora de colocar o aplicativo no Docker.

O método mais comum seria criar um contêiner do Docker e enviá-lo para um registro, onde a imagem é armazenada e pode ser extraída pelo GKE. Existe um jeito mais fácil: crie o contêiner do Docker no Cloud Build e envie a imagem para o Artifact Registry usando apenas um comando. Para ver o processo manual de criação e envio de um arquivo do Docker, consulte o Guia de início rápido do Container Registry.

O Cloud Build compacta e envia os arquivos do diretório para um bucket do Cloud Storage. Em seguida, todos os arquivos do bucket e o Dockerfile no mesmo diretório serão usados para executar o processo de build no Docker.

Crie um repositório de destino do Docker

É necessário criar um repositório antes de enviar imagens para ele. O envio de uma imagem não aciona a criação de um repositório e a conta de serviço do Cloud Build não tem permissões para criar repositórios.

  1. No Menu de navegação, em "CI/CD", acesse o Artifact Registry > Repositórios.

  2. Clique em Criar repositório.

  3. Especifique o nome do repositório como monolith-demo.

  4. Escolha Docker como o formato.

  5. Em "Tipo de local", selecione "Região" e escolha o local .

  6. Clique em Criar.

Configurar a autenticação

Antes de enviar ou extrair imagens, configure o Docker para usar a CLI do Google Cloud e autenticar solicitações ao Artifact Registry.

  • Para configurar a autenticação nos repositórios do Docker na região , execute este comando no Cloud Shell:
gcloud auth configure-docker -docker.pkg.dev

O comando atualiza a configuração do Docker. Agora é possível se conectar ao Artifact Registry no projeto do Google Cloud para enviar e extrair imagens.

Implantar a imagem

Agora você vai implantar a imagem criada anteriormente.

  1. Primeiro é necessário ativar as APIs Cloud Build, Artifact Registry e Cloud Run Execute este comando para fazer isso:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
  1. Depois de ativar as APIs, execute o comando abaixo para iniciar o processo de build:
gcloud builds submit --tag {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 Observação: esse processo levará alguns minutos.
  1. Para acessar o histórico de builds ou acompanhar o processo em tempo real, no Menu de navegação do console, clique em Cloud Build > Histórico. Essa tela apresenta uma lista de todas as versões. Por enquanto, haverá apenas a que você criou.

Lista do histórico do build

  • Se clicar no ID da versão, você verá todos os detalhes da versão, incluindo a saída do registro.

  • Na página "Detalhes da versão", para ver a imagem do contêiner criada, clique na guia Detalhes da execução e depois no link da imagem.

Detalhes do build

Clique em Verificar meu progresso para conferir o objetivo. Crie um contêiner do Docker com o Google Cloud Build

Tarefa 3: Implantar o contêiner no Cloud Run

Agora que você já fez a conteinerização do site e enviou o contêiner para o Artifact Registry, é hora implantar no Cloud Run.

Há duas abordagens de implantação no Cloud Run:

  • Cloud Run gerenciado: o modelo de plataforma como serviço em que o ciclo de vida do contêiner é gerenciado pelo próprio Cloud Run. Essa é a abordagem que você usará neste laboratório.
  • Cloud Run no GKE: o Cloud Run com uma camada adicional de controle, que permite integrar seus próprios clusters e pods do GKE. Clique aqui para saber mais.
  1. Execute este comando para implantar a imagem no Cloud Run:
gcloud run deploy monolith --image {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region {{{project_0.default_region | Region}}}
  1. Ao receber a solicitação para permitir invocações não autenticadas em [monolith], digite Y.

Clique em Verificar meu progresso para conferir o objetivo. Implante o contêiner no Cloud Run

Verifique a implantação

  1. Para confirmar que a implantação foi criada corretamente, execute o seguinte comando:
gcloud run services list Observação: pode levar alguns instantes para o status do pod aparecer como "Em execução".

Saída:

✔ SERVICE: monolith REGION: {{{project_0.default_region | Region}}} URL: https://monolith-2cxtmp4m2q-uc.a.run.app LAST DEPLOYED BY: student-02-aa7a5aed362d@qwiklabs.net LAST DEPLOYED AT: 2022-08-19T19:16:14.351981Z

A saída mostra várias informações: a implantação, o usuário que a executou, ou seja, seu e-mail e o URL para acessar o aplicativo. Parece que tudo foi criado corretamente.

  1. Clique no URL que aparece na lista de serviços. Você verá o mesmo site que visualizou localmente.
Observação: você também pode conferir suas implantações do Cloud Run no console. Para isso, acesse o Cloud Run pelo Menu de navegação.

Tarefa 4: Criar uma revisão com simultaneidade menor

Nesta seção, você vai implantar seu aplicativo de novo. Desta vez, um dos parâmetros deve ser ajustado.

Por padrão, os aplicativos do Cloud Run têm o valor de simultaneidade "80". Isso significa que cada instância do contêiner processará até 80 solicitações por vez. É uma diferença considerável em relação ao modelo Funções como serviço, em que uma instância processa uma solicitação por vez.

  1. Execute o comando abaixo para implantar novamente a mesma imagem de contêiner com um valor de simultaneidade "1", apenas para teste, e descubra o que acontece:
gcloud run deploy monolith --image {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region {{{project_0.default_region | Region}}} --concurrency 1
  1. Para conferir os detalhes, no Menu de navegação, clique em Cloud Run e depois no serviço do monolith:

O serviço do monolith

  1. Na página "Detalhes do serviço", clique na guia Revisões. Agora haverá duas revisões.

Os detalhes da implantação mais recente estão à direita.

A guia &quot;Revisões&quot; do monolítico

Você verá que o valor de simultaneidade mudou para "1".

A guia &quot;Contêiner&quot; do monolítico

Essa configuração pode ser usada para testes, mas geralmente os contêineres processam várias solicitações simultâneas nos cenários de produção.

Clique em Verificar meu progresso para conferir o objetivo. Crie uma revisão com simultaneidade menor

Em seguida, restaure a simultaneidade original, mas não faça outra implantação. Você pode mudar o valor para o padrão "80" ou para "0", o que removerá as restrições de simultaneidade e definirá o valor máximo, que também é "80".

  1. Execute este comando para atualizar a revisão atual, usando um valor de simultaneidade 80:
gcloud run deploy monolith --image {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:1.0.0 --region {{{project_0.default_region | Region}}} --concurrency 80

Você vai perceber que outra revisão foi criada, que o tráfego foi redirecionado e que a simultaneidade voltou para "80".

Observação: talvez seja necessário sair e voltar à guia Revisões para conferir as informações mais atualizadas.

Tarefa 5: Fazer mudanças no site

Situação: sua equipe de marketing solicitou que você mude a página inicial do seu site. Ela quer que a página inclua mais informações sobre a empresa e os produtos vendidos.

Tarefa: para atender ao pedido da equipe de marketing, você vai adicionar um texto à página inicial. Parece que um dos desenvolvedores já criou as alterações. O nome do arquivo atualizado é index.js.new. Você só precisa copiar esse arquivo para index.js, e as mudanças aparecerão na página. Siga as instruções abaixo para fazer as mudanças apropriadas.

  1. Execute os comandos a seguir para copiar o arquivo atualizado no nome correto:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js
  1. Imprima o conteúdo para verificar as alterações:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

O código resultante será parecido com este:

/* Copyright 2019 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import React from "react"; import { makeStyles } from "@material-ui/core/styles"; import Paper from "@material-ui/core/Paper"; import Typography from "@material-ui/core/Typography"; const useStyles = makeStyles(theme => ({ root: { flexGrow: 1 }, paper: { width: "800px", margin: "0 auto", padding: theme.spacing(3, 2) } })); export default function Home() { const classes = useStyles(); return ( <div className={classes.root}> <Paper className={classes.paper}> <Typography variant="h5"> Fancy Fashion &amp; Style Online </Typography> <br /> <Typography variant="body1"> Tired of mainstream fashion ideas, popular trends and societal norms? This line of lifestyle products will help you catch up with the Fancy trend and express your personal style. Start shopping Fancy items now! </Typography> </Paper> </div> ); }

Os componentes do React foram atualizados, mas você precisa criar o app React para gerar os arquivos estáticos.

  1. Execute o comando a seguir para criar o aplicativo React e copiar ele no diretório público monolith:
cd ~/monolith-to-microservices/react-app npm run build:monolith

Agora que o código está atualizado, recrie o contêiner do Docker e publique no Artifact Registry. Você pode usar o mesmo comando de antes, mas atualizará o indicador de versão desta vez.

  1. Execute este comando para acionar o Cloud Build de novo com a imagem atualizada na versão 2.0.0:
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:2.0.0

Na próxima seção, você vai usar essa imagem para atualizar seu aplicativo sem inatividade.

Clique em Verificar meu progresso para conferir o objetivo. Faça alterações no site

Tarefa 6: Atualizar o site sem inatividade

As alterações foram feitas, e a equipe de marketing adorou a nova versão. É hora de atualizar o site sem interromper o serviço para os usuários. O Cloud Run trata cada implantação como uma nova Revisão. Primeiro a revisão será implantada on-line e depois o tráfego será redirecionado para ela.

Por padrão, 100% do tráfego do serviço será atribuído à revisão mais recente. É possível usar "rotas" para alocar porcentagens diferentes de tráfego para revisões específicas em um serviço. Siga as instruções abaixo para atualizar seu site:

  • Execute este comando para implantar novamente o serviço e atualizar a imagem para uma nova versão:
gcloud run deploy monolith --image {{{project_0.default_region | Region}}}-docker.pkg.dev/${GOOGLE_CLOUD_PROJECT}/monolith-demo/monolith:2.0.0 --region {{{project_0.default_region | Region}}}

Clique em Verificar meu progresso para conferir o objetivo. Atualize o site sem tempo de inatividade

Verifique a implantação

  1. Execute o comando abaixo para confirmar que a implantação foi atualizada:
gcloud run services describe monolith --platform managed --region {{{project_0.default_region | Region}}}

Saída:

✔ Service monolith in region URL: https://monolith-hl5loimtga-uc.a.run.app Ingress: all Traffic: 100% LATEST (currently monolith-00005-xum) Last updated on 2022-08-19T18:39:39.885859Z by student-02-9af04e268b9e@qwiklabs.net: Revision monolith-00005-xum Image: -docker.pkg.dev/qwiklabs-gcp-00-30d07cf3de5b/monolith-demo/monolith:2.0.0 Port: 8080 Memory: 512Mi CPU: 1000m Service account: 467160385597-compute@developer.gserviceaccount.com Concurrency: 80 Max Instances: 1 Timeout: 300s

Observe que o Serviço agora está usando a versão mais recente da imagem, que foi implantada como uma nova revisão.

Para confirmar as alterações, acesse o URL externo do serviço do Cloud Run e atualize a página. Note que o título do aplicativo foi atualizado.

  1. Execute o comando a seguir para listar os serviços e ver o endereço IP:
gcloud beta run services list
  1. Clique no URL do serviço. O site agora mostra o texto que você acabou de incluir no componente da página inicial.

O site da Fancy Store atualizado

Parabéns!

Você implantou, escalonou e atualizou um site no Cloud Run.

Termine a Quest

Este laboratório autoguiado faz parte do site no Google Cloud na Quest. Uma Quest é uma série de laboratórios relacionados que formam um programa de aprendizado. Ao concluir uma Quest, você ganha um selo como reconhecimento da sua conquista. É possível publicar os selos e incluir um link para eles no seu currículo on-line ou nas redes sociais. Inscreva-se em qualquer Quest que tenha este laboratório para receber os créditos de conclusão na mesma hora. Consulte o catálogo do Google Cloud Ensina para conferir todas as Quests disponíveis.

Próximas etapas/Saiba mais

Se você não conhece esses produtos, confira os links abaixo para saber mais:

Manual atualizado em 13 de dezembro de 2023

Laboratório testado em 13 de dezembro de 2023

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.