Neste tutorial, mostramos como implantar um aplicativo conteinerizado usando um serviço autenticado do Cloud Run que recebe eventos usando o Pub/Sub. O Pub/Sub é um serviço de mensagens em tempo real totalmente gerenciado que permite enviar e receber mensagens entre aplicativos independentes.
Criar um repositório padrão do Artifact Registry
Crie um repositório padrão do Artifact Registry para armazenar a imagem do contêiner:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
Substitua REPOSITORY
por um nome exclusivo para o
repositório.
Implantar um receptor de eventos no Cloud Run
Implante um serviço do Cloud Run que registre o conteúdo de um evento.
Clone o repositório do GitHub:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
Outra alternativa é fazer o download da amostra como um arquivo ZIP e extraí-lo.
Mude para o diretório que contém o código de amostra do Cloud Run:
Node.js
cd nodejs-docs-samples/eventarc/pubsub/
Python
cd python-docs-samples/eventarc/pubsub/
Go
cd golang-samples/eventarc/pubsub/
Java
cd java-docs-samples/eventarc/pubsub/
Ruby
cd ruby-docs-samples/eventarc/pubsub/
C#
cd dotnet-docs-samples/eventarc/pubsub/
Crie o contêiner e faça upload dele para o Cloud Build:
gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
Implante a imagem do contêiner no Cloud Run:
gcloud run deploy ${SERVICE_NAME} \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
No prompt Allow unauthenticated Bigtable to trigger-pubsub (y/N)?, responda
n
para a resposta "No".
Quando o URL do serviço do Cloud Run for exibido, a implantação estará concluída.
Criar um gatilho do Eventarc
Quando uma mensagem é publicada no tópico do Pub/Sub, o evento aciona o serviço do Cloud Run.
Crie um gatilho para detectar mensagens do Pub/Sub:
Novo tópico pub/sub
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Isso cria um novo tópico Pub/Sub e um gatilho para ele chamado
trigger-pubsub
.Tópico do Pub/Sub atual
gcloud eventarc triggers create ${SERVICE_NAME} \ --destination-run-service=${SERVICE_NAME} \ --destination-run-region=${REGION} \ --location=${REGION} \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Substitua:
PROJECT_ID
: o ID do projeto Google CloudTOPIC_ID
: o ID do tópico do Pub/Sub atual.
Isso cria um gatilho chamado
trigger-pubsub
para o tópico atual do Pub/Sub.Ao criar um gatilho do Eventarc pela primeira vez em um projeto do Google Cloud , pode haver um atraso no provisionamento do agente de serviço do Eventarc. Esse problema geralmente pode ser resolvido ao tentar criar o acionador novamente. Para mais informações, consulte Erros de permissão negada.
Confirme se o gatilho foi criado com êxito. Embora o gatilho seja criado imediatamente, pode levar até dois minutos para que ele seja totalmente funcional.
gcloud eventarc triggers list --location=${REGION}
O status do acionador retornado será
ACTIVE: Yes
.
Gerar e visualizar um evento
Publique uma mensagem em um tópico do Pub/Sub para gerar um evento e acionar o serviço do Cloud Run. O serviço do Cloud Run registra as mensagens nos registros de serviço.
Encontre e defina o tópico do Pub/Sub como uma variável de ambiente:
export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \ --format='value(transport.pubsub.topic)')
Envie uma mensagem para o tópico do Pub/Sub a fim de gerar um evento:
gcloud pubsub topics publish $TOPIC_ID --message "Hello there"
O evento é enviado ao serviço do Cloud Run, que registra a mensagem do evento.
Para ver as entradas de registro relacionadas a eventos criadas pelo seu serviço:
gcloud logging read 'textPayload: "Hello there!"'
A entrada de registro precisa ser semelhante a esta:
textPayload: 'Hello, Hello there!'
Os registros podem demorar alguns instantes para aparecer. Se eles não aparecerem imediatamente, verifique novamente após um minuto.