Esta página explica como implementar aplicações em funções do Cloud Run através do Cloud Build. Se for um utilizador recente do Cloud Build, leia os inícios rápidos e a vista geral da configuração de compilação primeiro.
As funções do Cloud Run são um ambiente de execução sem servidor para criar e ligar serviços na nuvem. Com as funções do Cloud Run, pode escrever funções de finalidade única que estão associadas a eventos emitidos a partir da sua infraestrutura e serviços na nuvem. A sua função é acionada quando é acionado um evento que está a ser monitorizado. Para mais informações sobre as funções do Cloud Run, leia a documentação das funções do Cloud Run.
Antes de começar
Ative a API Cloud Run Functions:
Tenha o código-fonte da aplicação pronto. O código fonte tem de estar armazenado num repositório, como o GitHub ou o Bitbucket.
Para executar os comandos
gcloud
nesta página, instale a CLI do Google Cloud.
Autorizações de gestão de identidade e de acesso necessárias
-
Na Google Cloud consola, aceda à página settings Autorizações do Cloud Build:
Para a conta de serviço do Cloud Build especificada ou a conta de serviço do Cloud Build predefinida, defina o estado das seguintes funções como Ativado:
- Programador do Cloud Functions (
roles/cloudfunctions.developer
) | Para implementar e gerir funções.- No painel Atribuir função de utilizador da conta de serviço, escolha uma conta de serviço para roubar a identidade e, de seguida, clique em Conceder autorização.
- Administrador do Cloud Run (
roles/run.admin
) | Permite que a conta de serviço do Cloud Build implemente novas versões no Cloud Run. - Administrador de armazenamento (
roles/storage.admin
) | Permite a leitura e a escrita a partir do Cloud Storage. - Escritor do Artifact Registry (
roles/artifactregistry.writer
) | Permite extrair imagens do Artifact Registry e escrever no mesmo. - Escritor de registos (
roles/logging.logWriter
) | Permite que as entradas de registo sejam escritas no Cloud Logging. - Editor do Cloud Build (
roles/cloudbuild.builds.editor
) | Permite que a sua conta de serviço execute compilações.
- Programador do Cloud Functions (
Configurar a implementação
O Cloud Build permite-lhe usar qualquer imagem de contentor disponível publicamente para executar as suas tarefas. Pode fazê-lo especificando a imagem numa compilação step
no ficheiro de configuração do Cloud Build.
As funções do Cloud Run fornecem o comando gcloud functions deploy
, que implementa a sua função a partir do diretório que contém o código da função.
Pode usar a imagem cloud-sdk
como um passo de compilação no seu ficheiro de configuração para invocar comandos gcloud
na imagem.
Os argumentos transmitidos a este passo de compilação são transmitidos diretamente à CLI do Google Cloud,
o que lhe permite executar qualquer comando gcloud
nesta imagem.
Para implementar uma aplicação nas funções do Cloud Run, siga os passos seguintes:
- No diretório raiz do projeto, crie o
ficheiro de configuração do Cloud Build
denominado
cloudbuild.yaml
oucloudbuild.json
. No ficheiro de configuração:
- Adicione um campo
name
e especifique o passo de compilaçãogcloud
. - Adicione
functions deploy
ao campoargs
para invocar o comandogcloud functions deploy
. Para ver as opções de configuração disponíveis, consulte a referênciagcloud functions deploy
. --source=.
implica que o código-fonte está no diretório de trabalho atual.
YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: - gcloud - functions - deploy - FUNCTION_NAME - --region=FUNCTION_REGION - --source=. - --trigger-http - --runtime=RUNTIME
JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "args": [ "gcloud", "functions", "deploy", [ "FUNCTION_NAME" ], "--region=FUNCTION_REGION", "--source=.", "--trigger-http", "--runtime=RUNTIME" ] } ] }
Substitua os valores dos marcadores de posição no ficheiro de configuração acima pelo seguinte:
FUNCTION_NAME
é o nome das funções do Cloud Run que está a implementar. Se estiver a atualizar uma função existente, este valor tem de corresponder ao nome da função que está a atualizar.FUNCTION_REGION
é a região para a qual está a implementar funções do Cloud Run. Para ver uma lista das regiões suportadas, consulte o artigo Localizações das funções do Cloud Run.--trigger-http
é o tipo de acionador desta função, neste caso, um pedido HTTP (webhook).RUNTIME
é o tempo de execução no qual a função é executada.
Para mais informações sobre a utilização de
gcloud functions deploy
, consulte a documentação das funções do Cloud Run.- Adicione um campo
Inicie a compilação com o ficheiro de configuração criado no passo anterior:
gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY
Substitua os valores dos marcadores de posição no ficheiro de configuração acima pelo seguinte:
CONFIG_FILE_PATH
é o caminho para o ficheiro de configuração de compilação.SOURCE_DIRECTORY
é o caminho ou o URL para o código-fonte.REGION
é uma das regiões de compilação suportadas.
Se não especificar um
CONFIG_FILE_PATH
e umSOURCE_DIRECTORY
no comandogcloud builds submit
, o Cloud Build assume que o ficheiro de configuração e o código fonte estão no diretório de trabalho atual.
Implementação contínua
Pode automatizar a implementação do seu software em funções do Cloud Run criando acionadores do Cloud Build. Pode configurar os acionadores para criar e implementar imagens sempre que atualizar o código fonte.
Para automatizar a implementação nas funções do Cloud Run:
Na raiz do repositório, adicione um ficheiro de configuração com passos para invocar o comando
gcloud functions deploy
:YAML
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: - gcloud - functions - deploy - FUNCTION_NAME - --region=FUNCTION_REGION - --source=. - --trigger-http - --runtime=RUNTIME
JSON
{ "steps": [ { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "args": [ "gcloud", "functions", "deploy", [ "FUNCTION_NAME" ], "--region=FUNCTION_REGION", "--source=.", "--trigger-http", "--runtime=RUNTIME" ] } ] }
Substitua os valores dos marcadores de posição no ficheiro de configuração acima pelo seguinte:
FUNCTION_NAME
é o nome das funções do Cloud Run que está a implementar. Se estiver a atualizar uma função existente, este valor tem de corresponder ao nome da função que está a atualizar.FUNCTION_REGION
é a região para a qual está a implementar funções do Cloud Run. Para ver uma lista das regiões suportadas, consulte o artigo Localizações das funções do Cloud Run.--trigger-http
é o tipo de acionador desta função, neste caso, um pedido HTTP (webhook).RUNTIME
é o tempo de execução no qual a função é executada.
Crie um acionador de compilação com o ficheiro de configuração criado no passo anterior:
Abra a página Acionadores na Google Cloud consola:
Selecione o seu projeto no menu pendente do seletor de projetos na parte superior da página.
Clique em Criar acionador.
No campo Nome, introduza um nome para o acionador.
Em Região, selecione a região para o acionador.
Em Evento, selecione o evento do repositório para iniciar o acionador.
Em Origem, selecione o seu repositório e o nome da ramificação ou da etiqueta que vai iniciar o acionador. Para mais informações sobre como especificar que ramificações devem ser criadas automaticamente, consulte o artigo Criar um acionador de compilação.
Em Configuração, selecione Ficheiro de configuração do Cloud Build (YAML ou JSON).
No campo Localização do ficheiro de configuração do Cloud Build, escreva
cloudbuild.yaml
após/
.Clique em Criar para guardar o acionador de compilação.
Sempre que enviar novo código para o seu repositório, aciona automaticamente uma compilação e uma implementação nas funções do Cloud Run.
Para mais informações sobre como criar acionadores do Cloud Build, consulte o artigo Criar e gerir acionadores de compilação.
O que se segue?
- Saiba como fazer implementações azul-verde no Compute Engine
- Saiba como implementar no Cloud Run
- Saiba como implementar no GKE
- Saiba como implementar no Firebase
- Saiba como implementar no App Engine
- Saiba como resolver problemas de erros de compilação.