Os buildpacks são outra abordagem para criar imagens de contêiner e oferecem uma alternativa para transformar seu código-fonte em uma imagem de contêiner. Os buildpacks são distribuídos e executados em imagens chamadas builders. Cada builder pode ter um ou mais buildpacks. Um builder transforma seu código-fonte em uma imagem de contêiner. Os buildpacks fazem o trabalho de criar e empacotar a imagem do contêiner que você pode implantar no Cloud Run ou executar com o Docker localmente.
Você pode criar seus próprios buildpacks ou usar os que são fornecidos por diversos fornecedores. Os buildpacks do Google Cloud permitem que os desenvolvedores criem e implantem aplicativos conteinerizados sem precisar instalar o Docker localmente ou criar um Dockerfile. Os buildpacks também são integrados ao Cloud Run para ativar um fluxo de trabalho de implantação com base na fonte.
Objetivos
Neste laboratório, você vai:
Criar um aplicativo com o pack, uma ferramenta de linha de comando usada com builders para criar imagens de contêiner do código-fonte.
Usar o builder de buildpacks do Google Cloud para criar uma imagem de contêiner.
Executar e testar o contêiner localmente com o Docker.
Criar e reimplantar o contêiner no Cloud Run.
Configuração
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.
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:
Confira os arquivos e o código-fonte do aplicativo de amostra:
ls sample-py-app
cat sample-py-app/main.py
Como o buildpack do Python não gera um ponto de entrada de contêiner padrão para o aplicativo, usamos um Procfile para configurar o comando de inicialização do aplicativo.
O aplicativo é escrito em Python e retorna uma mensagem de boas-vindas de amostra em resposta a uma solicitação feita ao aplicativo.
...
...
[exporter] Setting default process type 'web'
[exporter] Saving sample-py-app...
[exporter] *** Images (9f9f9a48fd46):
[exporter] sample-py-app
[exporter] Adding cache layer 'google.python.pip:pip'
[exporter] Adding cache layer 'google.python.pip:pipcache'
Successfully built image sample-py-app
Observação: com o pack, você não precisou escrever e fornecer um Dockerfile para criar a imagem do contêiner.
Para visualizar as imagens baixadas e criadas no host do Cloud Shell, execute:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gcr.io/buildpacks/builder latest 514fb6f1bbfe 29 hours ago 804MB
gcr.io/buildpacks/gcp/run v1 22db1b5e48e3 29 hours ago 177MB
buildpacksio/lifecycle 0.16.0 67e021546a3f 43 years ago 30.5MB
sample-py-app latest 9f9f9a48fd46 43 years ago 571MB
Execute o contêiner localmente no Docker, transmitindo a variável de ambiente PORT para o aplicativo e vinculando a porta 8080 do host à porta do contêiner:
docker run -it -e PORT=8080 -p 8080:8080 -d sample-py-app
O código do aplicativo detecta a porta fornecida na variável de ambiente, nesse caso, a porta 8080.
Teste o aplicativo conteinerizado com o comando curl:
curl http://localhost:8080/
Você verá esta resposta:
Este é um app de amostra criado com buildpacks.
Tarefa 3: criar e executar um aplicativo no Cloud Run
Geralmente, como próxima etapa no ciclo de vida de desenvolvimento e implantação, você deve enviar a imagem de contêiner criada na tarefa anterior para o Artifact Registry e, em seguida, implantar a imagem em um ambiente baseado em contêineres, como o Google Kubernetes Engine ou o Cloud Run.
Nesta tarefa, você vai modificar o código do aplicativo de amostra e, em seguida, criar e implantar o aplicativo conteinerizado diretamente da origem com o Cloud Run.
Modificar o código do aplicativo
Você vai modificar o código do aplicativo de amostra para usar a API Google Translate, que traduz um trecho de texto do inglês para o espanhol.
Edite o arquivo main.py com o editor de sua preferência, por exemplo, vi ou nano. Você também pode clicar em Abrir editor no menu do Cloud Shell para editar o arquivo.
Substitua todo o conteúdo do arquivo main.py pelo código abaixo:
from flask import Flask, request
import google.auth
from google.cloud import translate
app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')
@app.route('/', methods=['GET', 'POST'])
def index():
# reset all variables
text = translated = None
if request.method == 'POST':
text = request.get_json().get('text').strip()
if text:
data = {
'contents': [text],
'parent': PARENT,
'target_language_code': TARGET[0],
}
# handle older call for backwards-compatibility
try:
rsp = TRANSLATE.translate_text(request=data)
except TypeError:
rsp = TRANSLATE.translate_text(**data)
translated = rsp.translations[0].translated_text
# create context
context = {
'trtext': translated
}
return context
if __name__ == "__main__":
# Dev only: run "python main.py" and open http://localhost:8080
import os
app.run(host="localhost", port=int(os.environ.get('PORT', 8080)), debug=True)
O código do aplicativo usa a API Google Translate para traduzir um texto transmitido em uma solicitação JSON do inglês para o espanhol.
Criar e implantar o contêiner
Para criar e implantar o contêiner no Cloud Run, execute o seguinte comando:
gcloud run deploy sample-py-app --source . --region=${REGION} --allow-unauthenticated
A opção allow-unauthenticated permite o acesso ao serviço sem precisar de autenticação.
Quando solicitado, digite Y para aceitar o repositório padrão criado no Artifact Registry para armazenar a imagem do contêiner.
Quando o comando for concluído, um serviço do Cloud Run chamado sample-py-app será criado.
A resposta ao comando é semelhante a esta:
Building using Buildpacks and deploying container to Cloud Run service [sample-py-app] in project [qwiklabs-gcp-00-0d56d42aca1a] region [asia-east1]
OK Building and deploying new service... Done.
OK Creating Container Repository...
OK Uploading sources...
OK Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/8bea2ded-4745-41f9-a82d-128e409daa20?project=34240880885].
OK Creating Revision...
OK Routing traffic...
OK Setting IAM Policy...
Done.
Service [sample-py-app] revision [sample-py-app-00001-nec] has been deployed and is serving 100 percent of traffic.
Service URL: https://sample-py-app-ulvp7xw3bq-de.a.run.app
Testar o serviço do Cloud Run
Defina uma variável de ambiente para o serviço do Cloud Run que foi criado na etapa anterior:
SERVICE_URL=$(gcloud run services describe sample-py-app --region=${REGION} --format="value(status.url)"); echo $SERVICE_URL
Para testar o serviço, execute o comando curl:
curl $SERVICE_URL -H 'Content-Type: application/json' -d '{"text" : "Welcome to this sample app, built with Google Cloud buildpacks."}'
O serviço responde com o texto traduzido:
{"trtext":"Bienvenido a esta aplicaci\u00f3n de muestra, creada con paquetes de compilaci\u00f3n de Google Cloud."}
Clique em Verificar meu progresso para conferir o objetivo.
Implantar um aplicativo no Cloud Run
Parabéns!
Neste laboratório, você criou um aplicativo com o comando pack e o builder de buildpacks do Google Cloud para criar uma imagem de contêiner para um aplicativo Python de amostra. Você executou e testou o contêiner localmente com o Docker antes de recriar e implantar o contêiner no Cloud Run.
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 criar um aplicativo conteinerizado com o pacote de ferramentas de CLI e o builder de buildpacks do Google Cloud.
Duração:
Configuração: 0 minutos
·
Tempo de acesso: 60 minutos
·
Tempo para conclusão: 60 minutos