Esta página descreve como implementar um novo serviço ou uma revisão de serviço no Cloud Run diretamente a partir do código fonte através de um único comando da CLI gcloud,
gcloud run deploy
com a flag
--source
. Para um exemplo
passo a passo da implementação de um serviço Hello World, consulte os
inícios rápidos de implementação a partir da origem.
Nos bastidores, este comando usa os
buildpacks do Google Cloud
e o Cloud Build para criar automaticamente
imagens de contentores a partir do seu código-fonte sem ter de instalar o Docker na sua
máquina nem configurar buildpacks ou o Cloud Build. Ou seja, o comando único descrito acima faz o que, de outra forma, exigiria os comandos gcloud builds submit
e gcloud run deploy
. Por predefinição, o Cloud Run usa o tipo de máquina predefinido fornecido pelo Cloud Build.
Tenha em atenção que as implementações de origem usam o Artifact Registry para armazenar contentores criados. Se o seu projeto ainda não tiver um repositório do Artifact Registry com o nome cloud-run-source-deploy
na região para a qual está a fazer a implementação, esta funcionalidade cria automaticamente um repositório do Artifact Registry com o nome cloud-run-source-deploy
.
Se existir um Dockerfile no diretório do código-fonte, o código-fonte carregado é criado com esse Dockerfile. Se não existir nenhum Dockerfile no diretório de código-fonte, os buildpacks do Google Cloud detetam automaticamente a linguagem que está a usar e obtêm as dependências do código para criar uma imagem de contentor pronta para produção, usando uma imagem base segura gerida pela Google.
Por predefinição, as correções de segurança só são aplicadas quando o serviço do Cloud Run é implementado. Quando ativa as atualizações de segurança automáticas para um serviço, esse serviço recebe patches automaticamente sem tempo de inatividade. Saiba mais sobre como configurar atualizações de segurança.Idiomas suportados
Além das origens com um Dockerfile, a implementação a partir da origem suporta os seguintes idiomas através dos buildpacks do Google Cloud:
Tempo de execução | Implementação da origem | Configuração do buildpack |
---|---|---|
Ir | Implemente um serviço Go | Configure os buildpacks do Go |
Node.js | Implemente um serviço Node.js | Configure os buildpacks do Node.js |
Python | Implemente um serviço Python | Configure os buildpacks do Python |
Java (inclui Kotlin, Groovy e Scala) |
Implemente um serviço Java | Configure os buildpacks Java |
.NET | Implemente um serviço .NET | Configure os buildpacks .NET |
Ruby | Implemente um serviço Ruby | Configure os buildpacks do Ruby |
PHP | Implemente um serviço PHP | Configure os buildpacks PHP |
Limitações desta funcionalidade
- A implementação a partir da origem usa o Artifact Registry e o Cloud Build, pelo que esta funcionalidade só está disponível nas regiões suportadas pelo Artifact Registry e pelo Cloud Build.
- A implementação a partir da origem é uma funcionalidade
de conveniência e não permite a personalização total da compilação. Para ter mais controlo, crie a imagem de contentor com o Cloud Build, por exemplo, usando o
gcloud builds submit
e, de seguida, implemente a imagem de contentor usando, por exemplo, ogcloud run deploy --image
. - A implementação a partir da origem com os buildpacks do Google Cloud define a data da última modificação dos ficheiros de origem como 1 de janeiro de 1980. Este é o comportamento predefinido dos buildpacks e foi concebido para suportar compilações reproduzíveis. Dependendo da sua estrutura de linguagem, isto pode afetar o armazenamento em cache no navegador de ficheiros estáticos. Se
a sua aplicação for afetada por esta situação, a Google recomenda que desative os cabeçalhos HTTP
etag
eLast-Modified
na sua aplicação. - A implementação a partir da origem com os buildpacks do Google Cloud usa sempre o
gcr.io/buildpacks/builder:latest
. Se a sua configuração de idioma ou SO preferida não estiver disponível nolatest
, use um criador específico para criar uma imagem da aplicação com o seu criador preferido. Pode implementar o seu serviço a partir da origem usando Kotlin e outras linguagens JVM, como Java. A linguagem que usa tem de estar em conformidade com as seguintes regras:
- Pode criar a aplicação com o Maven ou o Gradle.
- O ficheiro de compilação contém todos os plug-ins necessários para as classes de produtos.
Antes de começar
- Certifique-se de que configurou um novo projeto para o Cloud Run, conforme descrito na página de configuração.
Se estiver ao abrigo de uma política da organização de restrição de domínio que restringe as invocações não autenticadas para o seu projeto, tem de aceder ao serviço implementado conforme descrito em Testar serviços privados.
Ative a API Cloud Run Admin e a API Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Depois de ativar a API Cloud Run Admin, a conta de serviço predefinida do Compute Engine é criada automaticamente.
Funções necessárias
O utilizador ou o administrador tem de conceder à conta de implementação e à conta de serviço do Cloud Build as seguintes funções do IAM.
Clique para ver as funções necessárias para a conta do implementador
Para receber as autorizações necessárias para criar e implementar a partir da origem, peça ao seu administrador para lhe conceder as seguintes funções de IAM:
- Programador de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto - Consumidor de utilização do serviço (
roles/serviceusage.serviceUsageConsumer
) no seu projeto - Utilizador da conta de serviço (
roles/iam.serviceAccountUser
) na identidade do serviço do Cloud Run
Clique para ver as funções necessárias para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a
conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o
recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função
Cloud Run Builder
(roles/run.builder
) à conta de serviço predefinida do Compute Engine no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Substitua PROJECT_NUMBER
pelo seu Google Cloud
número do projeto e PROJECT_ID
pelo seu Google Cloud
ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto,
consulte o artigo Criar
e gerir projetos.
A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.
Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.
Implemente a partir da origem
Para implementar a partir do código-fonte:
Altere para o diretório de origem. Tenha em atenção que o diretório de origem não requer um Dockerfile, mas, se existir um, é usado.
Crie e implemente o seu serviço:
Substituagcloud run deploy SERVICE --source .
SERVICE
pelo nome que quer para o seu serviço.Opcionalmente, se o seu código-fonte usar um dos tempos de execução de idiomas suportados e quiser configurar atualizações automáticas de imagens base para o seu tempo de execução, especifique a flag
--automatic-updates
e a flag--base-image
com a imagem base para o seu serviço, por exemplo,nodejs22
.Responda a todas as instruções para instalar as APIs necessárias respondendo
y
quando lhe for pedido. Só tem de fazer isto uma vez por projeto. Responda a outros pedidos fornecendo a plataforma e a região, se não tiver definido predefinições para estas, conforme descrito na página de configuração.Aguarde pela conclusão da compilação e da implementação. Quando terminar, o Cloud Run apresenta uma mensagem de êxito.
Automatizar a compilação a partir da origem
Como prática recomendada para evitar alterações sem controlo de versões na origem local, a Google recomenda que faça a implementação automaticamente quando as alterações são enviadas para o seu repositório Git. Para facilitar este processo, pode ligar e configurar a implementação contínua ao seu serviço do Cloud Run. Ao associar os seus repositórios do GitHub ao Cloud Run, pode configurar compilações e implementar os seus repositórios sem escrever Dockerfiles nem ficheiros de compilação.
Para configurar compilações automatizadas, configure a automatização conforme descrito na página de compilações contínuas, certificando-se de que escolhe a opção para criar a origem com buildpacks.O que se segue?
Depois de implementar um serviço do Cloud Run, pode fazer o seguinte:
- Implementações graduais, reversão de revisões e migração de tráfego
- Veja registos de serviço
- Monitorize o desempenho dos serviços
- Defina limites de memória
- Defina variáveis de ambiente
- Altere a simultaneidade do serviço
- Faça a gestão do serviço
- Faça a gestão das revisões de serviços
Saiba mais sobre as configurações de implementação de origem:
- Atualizações automáticas de imagens base
- Crie variáveis de ambiente
- Crie uma conta de serviço
- Crie conjuntos de trabalhadores
Pode automatizar as compilações e as implementações dos seus serviços do Cloud Run usando acionadores do Cloud Build: