1. Introdução
O Cloud Run é uma plataforma gerenciada para executar 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.
Ele foi criado com base no Knative, o que dá a você a opção de executar os contêineres de modo totalmente gerenciado com o Cloud Run ou no cluster do Google Kubernetes Engine com o Cloud Run no GKE.
O objetivo deste codelab é criar uma imagem de contêiner e implantá-la no Cloud Run.
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.
- O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como
PROJECT_ID
. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto. - Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Google Cloud Shell
Embora o Google Cloud possa ser operado remotamente do seu laptop, neste codelab vamos usar o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.
O Cloud Shell é um ambiente de desenvolvimento e operações on-line acessível pelo navegador em qualquer lugar. É possível gerenciar seus recursos com o terminal on-line pré-carregado com utilitários como a ferramenta de linha de comando gcloud, kubectl e muito mais. Também é possível desenvolver, criar, depurar e implantar apps baseados na nuvem usando o Editor do Cloud Shell on-line.
Essa máquina virtual tem todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal permanente de 5 GB e é executada diretamente no Google Cloud, melhorando muito o desempenho e a autenticação da rede. Isso significa que tudo que você precisa para este codelab é um navegador (sim, funciona em um Chromebook).
- Para ativar o Cloud Shell no Console do Cloud, basta clicar em Ativar o Cloud Shell :
Se você estiver iniciando o Cloud Shell pela primeira vez, verá uma tela intermediária com a descrição dele. Se aparecer uma tela intermediária, clique em Continuar.
O provisionamento do ambiente leva apenas alguns segundos :
Após se conectar ao Cloud Shell, sua conta já estará autenticada :
gcloud auth list
Resposta ao comando
Credentialed Accounts ACTIVE: * ACCOUNT: <my-account>@<mydomain>
O projeto também estará definido como PROJECT_ID
, supondo que você tenha selecionado um projeto no console da Web:
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se, por algum motivo, o projeto não estiver definido, basta emitir o seguinte comando:
gcloud config set project <PROJECT_ID>
Quer encontrar seu PROJECT_ID
? Confira o menu suspenso na parte de cima do Console do Cloud :
Você também pode conferir os detalhes do projeto em "Configurações e utilitários" :
O Cloud Shell também define algumas variáveis de ambiente por padrão, o que pode ser útil ao executar comandos futuros.
echo $GOOGLE_CLOUD_PROJECT
Resposta ao comando
<PROJECT_ID>
- Por fim, você pode definir a zona padrão :
gcloud config set compute/zone us-central1-f
É possível escolher zonas diferentes. Para mais informações, consulte Regiões e zonas.
Ative a API Cloud Run
No Cloud Shell, ative a API Cloud Run:
gcloud services enable run.googleapis.com
Uma mensagem semelhante a esta vai aparecer :
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
3. Crie o aplicativo de exemplo
Criaremos um aplicativo ASP.NET em C# simples para responder às solicitações HTTP.
Para criar seu aplicativo, use a ferramenta de linha de comando dotnet
no Cloud Shell:
dotnet new web -o helloworld-csharp
Mude para o diretório helloworld-csharp
:
cd helloworld-csharp
Em seguida, atualize Program.cs
para corresponder ao seguinte:
var builder = WebApplication.CreateBuilder(args); var port = Environment.GetEnvironmentVariable("PORT") ?? "8080"; var url = $"http://0.0.0.0:{port}"; builder.WebHost.UseUrls(url); var app = builder.Build(); app.MapGet("/", () => "Hello World!"); app.Run();
Esse código cria um servidor da Web básico que detecta na porta definida pela variável de ambiente PORT
e responde com Hello World
.
Execute o app localmente no Cloud Shell para testá-lo. Ele deve detectar atividade na porta 8080:
$ dotnet run Using launch settings from /home/atameldev/helloworld-csharp/Properties/launchSettings.json... Hosting environment: Development Content root path: /home/atameldev/helloworld-csharp Now listening on: http://0.0.0.0:8080 Application started. Press Ctrl+C to shut down.
4. Implantar no Cloud Run
Implante seu aplicativo no Cloud Run com o seguinte comando:
gcloud run deploy hello-world \ --allow-unauthenticated \ --region us-central1 \ --source .
hello-world
é o nome do serviço;- A flag
allow-unauthenticated
implanta o serviço como um serviço disponível publicamente sem requisitos de autenticação. us-central1
é a região em que o aplicativo será implantado.- A sinalização
source
determina o local da origem a ser criada. O Cloud Run usa buildpacks para criar automaticamente um contêiner com base no código-fonte.
Aguarde alguns minutos até que a implantação seja concluída. Em caso de sucesso, a linha de comando mostra o URL de serviço:
Service [hello-world] revision [hello-world-00001-yos] has been deployed and is serving 100 percent of traffic. Service URL: https://helloworld-wdl7fdwaaa-uc.a.run.app
Agora você pode acessar o contêiner implantado abrindo o URL de serviço em um navegador da Web :
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. Você paga apenas pela CPU, memória e rede consumidas durante o processamento da solicitação.
5. Hora de fazer a limpeza
É possível excluir seu projeto do GCP para evitar cobranças, o que interromperá o faturamento de todos os recursos usados nesse projeto, ou simplesmente excluir o serviço do Cloud Run:
gcloud run services delete helloworld
6. A seguir
Uma boa próxima etapa seria Implantar no Cloud Run no GKE.
Para mais informações sobre como criar um contêiner HTTP sem estado compatível com o Cloud Run desde o código-fonte e enviá-lo para o Container Registry, consulte: