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
gcloudnesta 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 stepno 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.yamloucloudbuild.json. No ficheiro de configuração:
- Adicione um campo
namee especifique o passo de compilaçãogcloud. - Adicione
functions deployao campoargspara 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=RUNTIMEJSON
{ "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_DIRECTORYSubstitua 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_PATHe umSOURCE_DIRECTORYno 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=RUNTIMEJSON
{ "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.yamlapó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.