Você começou recentemente a trabalhar como desenvolvedor de nuvem em uma empresa de TI que usa o Google Cloud como principal provedor de serviços de nuvem (CSP). Você recebeu instruções para criar aplicativos da Web sem servidor e sem estado na nuvem. Portanto, você precisa adotar o serviço do Cloud Run oferecido pelo Google Cloud.
Alguns dos seus focos de atenção são:
Ativação da API Cloud Run
Armazenamento de imagens de contêiner
Implantação de apps conteinerizados sem servidor
Práticas recomendadas de redução de custos
Como você trabalhou com a AWS no seu emprego anterior, já sabe que o AWS Fargate provisiona ambientes conteinerizados sem servidor. O Fargate lida com a tarefa de lançar, escalonar e monitorar os contêineres para que os desenvolvedores possam se concentrar no código e implantar, gerenciar e escalonar aplicativos conteinerizados. Além disso, com o AWS Fargate, você implanta contêineres para o Amazon Elastic Container Service (Amazon ECS) ou o Amazon Elastic Kubernetes Service (Amazon EKS). Isso significa que os desenvolvedores podem escolher a opção de orquestração mais adequada às necessidades deles.
Um aplicativo conteinerizado sem servidor baseado no AWS Fargate se parece com o seguinte diagrama:
Agora você verá como implantar aplicativos no Google Cloud.
Visão geral
O Cloud Run é uma plataforma de computação gerenciada onde você executa contêineres sem estado que podem ser invocados usando solicitações HTTP. O Cloud Run não tem servidor. Ele cuida de todo o gerenciamento da infraestrutura para que você possa se concentrar no que mais importa: criar aplicativos incríveis.
O Cloud Run foi desenvolvido usando o Knative. Por isso, você pode executar contêineres de maneira totalmente gerenciada com o próprio Cloud Run ou em um cluster do Google Kubernetes Engine com o Cloud Run no GKE.
O objetivo deste laboratório é criar uma imagem de aplicativo conteinerizado simples que será implantada no Cloud Run.
Objetivos
Neste laboratório, você vai aprender a:
ativar a API Cloud Run;
criar um aplicativo simples em Node.js que pode ser implantado como um contêiner sem servidor e estado;
conteinerizar seu aplicativo e fazer upload para o Container Registry, agora chamado de Artifact Registry;
implantar um aplicativo conteinerizado no Cloud Run;
excluir imagens desnecessárias para evitar cobranças adicionais de armazenamento.
Configuração e requisitos
Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.
Faça login no Qwiklabs em uma janela anônima.
Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.
Quando tudo estiver pronto, clique em Começar o laboratório.
Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.
Clique em Abrir Console do Google.
Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.
Aceite os termos e pule a página de recursos de recuperação.
Como começar o laboratório e fazer login no console
Clique no botão Começar o laboratório. Se for preciso pagar pelo laboratório, você verá um pop-up para selecionar a forma de pagamento.
Um painel aparece à esquerda contendo as credenciais temporárias que você precisa usar no laboratório.
Copie o nome de usuário e clique em Abrir console do Google.
O laboratório ativa os recursos e depois abre a página Escolha uma conta em outra guia.
Observação: abra as guias em janelas separadas, lado a lado.
Na página "Escolha uma conta", clique em Usar outra conta. A página de login abre.
Cole o nome de usuário que foi copiado do painel "Detalhes da conexão". Em seguida, copie e cole a senha.
Observação: é necessário usar as credenciais do painel "Detalhes da conexão". Não use suas credenciais do Google Cloud Ensina. Não use sua conta pessoal do Google Cloud, caso tenha uma neste laboratório (isso evita cobranças).
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 Cloud abre nesta guia.
Observação: para acessar a lista dos produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo.
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.
No console do Cloud, clique no botão "Abrir o Cloud Shell" na barra de ferramentas superior direita.
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:
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:
Abaixo, você encontra uma lista de referências com alguns dos comandos mais básicos do Linux que podem aparecer nas instruções ou blocos de código deste laboratório.
Comando -->
Ação
.
Comando -->
Ação
mkdir (criar diretório)
cria uma nova pasta
.
cd (mudar diretório)
muda o local para outra pasta
ls (listar )
lista arquivos e pastas no diretório
.
cat (concatenar)
lê o conteúdo de um arquivo sem usar um editor
apt-get update
atualiza a biblioteca do gerenciador de pacotes
.
ping
sinal para testar a acessibilidade de um host
mv (mover )
move um arquivo
.
cp (copiar)
cria uma cópia do arquivo
pwd (apresentar diretório de trabalho)
retorna o local atual
.
sudo (ação de superusuário)
concede privilégios de administração
Tarefa 1: ativar a API Cloud Run e configurar seu ambiente shell
No Cloud Shell, ative a API Cloud Run:
gcloud services enable run.googleapis.com
Se for solicitado, autorize o uso das suas credenciais. Depois, você verá uma mensagem de sucesso parecida com esta:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
Observação: também é possível ativar a API na seção APIs e serviços do console.
Defina a região de computação:
gcloud config set compute/region {{{ project_0.default_region| "Region" }}}
Nesta tarefa, você vai criar um aplicativo simples em Node.js baseado no Express que responde a solicitações HTTP.
No Cloud Shell, crie um novo diretório chamado helloworld e depois mova sua visualização para ele:
mkdir helloworld && cd helloworld
Agora, você vai criar e editar os arquivos. Para fazer mudanças, use vi, emac, nano ou clique no botão Abrir editor no Cloud Shell para usar o editor de código dessa ferramenta.
Crie um arquivo package.json e adicione este conteúdo a ele:
O arquivo acima contém principalmente um comando de script de início e uma dependência no framework Express para aplicativos da Web.
Pressione CTRL+X, depois Y para salvar o arquivo package.json.
No mesmo diretório, crie um arquivo index.js e cole estas linhas nele:
nano index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
app.get('/', (req, res) => {
const name = process.env.NAME || 'World';
res.send(`Hello ${name}!`);
});
app.listen(port, () => {
console.log(`helloworld: listening on port ${port}`);
});
Esse código cria um servidor da Web básico que detecta na porta definida pela variável de ambiente PORT. O app está concluído e pronto para conteinerização e upload no Container Registry.
Pressione CTRL+X, depois Y para salvar o arquivo index.js.
Observação: você pode começar a usar o Cloud Run com outras linguagens também. Acesse o Guia de início rápido para conferir instruções para Go, Python, Java, PHP, Ruby, scripts de shell, entre outros.
Tarefa 3: conteinerizar seu app e fazer upload dele para o Artifact Registry
Para conteinerizar o app de exemplo, crie um novo arquivo chamado Dockerfile no mesmo diretório dos arquivos de origem e adicione o seguinte:
nano Dockerfile
# Usa a imagem oficial lightweight do Node.js 12.
# https://hub.docker.com/_/node
FROM node:12-slim
# Cria o diretório do app e entra nele.
WORKDIR /usr/src/app
# Copia os manifestos de dependências da aplicação para a imagem do contêiner.
# Um caractere curinga é usado para garantir a cópia tanto de package.json quanto de package-lock.json (caso esteja disponível).
# Copiar isso antes evita que npm install seja re-executado a cada mudança no código.
COPY package*.json ./
# Instala dependências de produção.
# Caso você adicione um package-lock.json, acelere seu build trocando para 'npm ci'.
# RUN npm ci --only=production
RUN npm install --only=production
# Copia o código local para a imagem do contêiner.
COPY . ./
# Executa o web service na inicialização do contêiner.
CMD [ "npm", "start" ]
Pressione CTRL+X, depois Y para salvar o arquivo Dockerfile.
Crie a imagem do contêiner usando o Cloud Build. Para isso, execute o comando a seguir no diretório que tem seu Dockerfile. A variável de ambiente $GOOGLE_CLOUD_PROJECT no comando contém o ID do projeto do laboratório:
O Cloud Build é um serviço que executa seus builds no GCP. Ele executa uma série de etapas do build, cada uma em um contêiner do Docker, para produzir o contêiner do seu aplicativo (ou outros artefatos) e enviá-lo ao Cloud Registry, tudo em um comando.
Depois disso, a mensagem "SUCCESS" vai aparecer com o nome da imagem (gcr.io/[PROJECT-ID]/helloworld). A imagem é armazenada no Artifact Registry e pode ser reutilizada se você quiser.
Liste todas as imagens do contêiner associadas ao projeto atual usando este comando:
gcloud container images list
Para executar e testar o aplicativo localmente no Cloud Shell, inicie-o usando este comando padrão do docker:
docker run -d -p 8080:8080 gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld
Na janela do Cloud Shell, clique em Visualização na Web e selecione Visualizar na porta 8080.
Uma janela do navegador será aberta com a mensagem "Hello World!". Também é possível usar curl localhost:8080.
Observação: se o comando docker não extrair a imagem remota do contêiner, execute este comando: gcloud auth configure-docker
Tarefa 4: implantar no Cloud Run
Para implantar seu aplicativo conteinerizado no Cloud Run, use o seguinte comando com o ID do projeto:
gcloud run deploy --image gcr.io/$GOOGLE_CLOUD_PROJECT/helloworld --allow-unauthenticated --region=$LOCATION
A flag "allow-unauthenticated" no comando acima torna seu serviço disponível publicamente.
Se for solicitado, confirme o service name pressionando Enter.
Aguarde alguns instantes até a implantação terminar.
Em caso de sucesso, a linha de comando vai exibir o URL de serviço:
Service [helloworld] revision [helloworld-00001-xit] has been deployed
and is serving 100 percent of traffic.
Service URL: https://helloworld-h6cp412q3a-uc.a.run.app
Agora você pode acessar o contêiner implantado abrindo o URL de serviço em qualquer janela do navegador.
Parabéns! Você acabou de implantar um aplicativo empacotado em uma imagem de contêiner no Cloud Run. O Cloud Run escalona de maneira automática e horizontal a imagem do contêiner para processar as solicitações recebidas, depois reduz o escalonamento quando a demanda diminui. No seu ambiente, você paga apenas pela CPU, memória e rede consumidas durante o processamento de solicitações.
Neste laboratório, você usou a linha de comando gcloud. O Cloud Run também está disponível no console do Cloud.
No Menu de navegação, na seção "Sem servidor", clique em Cloud Run. Você vai encontrar seu serviço helloworld na lista.
Tarefa 5: limpeza
O Cloud Run não gera custos quando o serviço não está em uso, mas você ainda vai receber cobranças pelo armazenamento da imagem de contêiner que você criou.
Para evitar cobranças, exclua seu projeto do GCP para interromper o faturamento de todos os recursos usados ou exclua sua imagem helloworld usando este comando:
Quando for solicitado que você prossiga, digite Y e pressione Enter.
Para excluir o serviço do Cloud Run, use este comando:
gcloud run services delete helloworld --region={{{ project_0.default_region| "Region" }}}
Quando for solicitado que você prossiga, digite Y e pressione Enter.
Parabéns!
Você concluiu este laboratório!
Tanto o Google Cloud Run quanto o AWS Fargate são serviços de computação sem servidor que permitem aos desenvolvedores executar aplicativos conteinerizados de forma escalonável e econômica. No entanto, há algumas distinções entre esses dois serviços.
Aqui estão algumas das principais semelhanças e diferenças:
Semelhanças:
Tanto o Google Cloud Run quanto o AWS Fargate são serviços de computação sem servidor, ou seja, os desenvolvedores podem se concentrar em escrever código sem se preocupar com a infraestrutura por trás.
Os dois usam a conteinerização para empacotar e implantar aplicativos.
Ambos são compatíveis com contêineres Docker como formato de implantação.
Ambos os serviços podem ser escalonados verticalmente de forma automática, de acordo com a demanda.
Diferenças:
Com o AWS Fargate, os usuários precisam configurar e gerenciar a orquestração dos contêineres, como no caso do Kubernetes. Já no Cloud Run, a orquestração dos contêineres é feita pela plataforma.
O Google Cloud Run é um serviço independente, enquanto o AWS Fargate é o serviço de provisionamento para os serviços de contêiner Amazon ECS ou Amazon EKS.
Na AWS, a integração entre o Fargate e o serviço de orquestração, como o Amazon ECS ou o EKS, é necessária para implantar o ambiente conteinerizado sem servidor. No Google Cloud, é possível usar apenas o Cloud Run.
Finalize o laboratório
Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.
Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.
O número de estrelas indica o seguinte:
1 estrela = muito insatisfeito
2 estrelas = insatisfeito
3 estrelas = neutro
4 estrelas = satisfeito
5 estrelas = muito satisfeito
Feche a caixa de diálogo se não quiser enviar feedback.
Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.
Copyright 2020 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.
Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
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.
No canto superior esquerdo da tela, clique em Começar o laboratório
Usar a navegação anônima
Copie o nome de usuário e a senha fornecidos para o laboratório
Clique em Abrir console no modo anônimo
Fazer login no console
Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
Aceite os termos e pule a página de recursos de recuperação
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.
Neste laboratório, você vai aprender a usar o Cloud Run enquanto implanta e executa um contêiner sem servidor e sem estado com a infraestrutura abstraída.
Duração:
Configuração: 0 minutos
·
Tempo de acesso: 60 minutos
·
Tempo para conclusão: 60 minutos