En este instructivo, se muestra cómo implementar una aplicación alojada en contenedores mediante un servicio autenticado de Cloud Run que recibe eventos mediante Pub/Sub. Pub/Sub es un servicio de mensajería en tiempo real completamente administrado que te permite enviar y recibir mensajes entre aplicaciones independientes.
Crea un repositorio estándar de Artifact Registry
Crea un repositorio estándar de Artifact Registry para almacenar tu imagen de contenedor:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
Reemplaza REPOSITORY
por un nombre único para el repositorio.
Implementa un receptor de eventos en Cloud Run
Implementa un servicio de Cloud Run que registre el contenido de un evento.
Clona el repositorio de GitHub:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo zip y extraerla.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
Ve al directorio que contiene el código de muestra de 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/
Compila el contenedor y súbelo a Cloud Build:
gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
Implementa la imagen del contenedor en Cloud Run:
gcloud run deploy ${SERVICE_NAME} \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/trigger-pubsub:v1
En el mensaje ¿Permitir invocaciones no autenticadas en trigger-pubsub (y/N)?, responde
n
para “No”.
Cuando veas la URL del servicio de Cloud Run, la implementación estará completa.
Crea un activador de Eventarc
Cuando se publica un mensaje en el tema de Pub/Sub, el evento activa el servicio de Cloud Run.
Crea un activador para detectar los mensajes de Pub/Sub:
Nuevo tema 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
Esto crea un nuevo tema de Pub/Sub y un activador llamado
trigger-pubsub
para este.Tema de Pub/Sub existente
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
Reemplaza lo siguiente:
PROJECT_ID
: El ID de tu proyecto de Google CloudTOPIC_ID
: el ID del tema de Pub/Sub existente.
Esto crea un activador llamado
trigger-pubsub
para el tema de Pub/Sub existente.Ten en cuenta que, cuando creas un activador de Eventarc por primera vez en un proyecto de Google Cloud , es posible que haya un retraso en el aprovisionamiento del agente de servicio de Eventarc. Por lo general, este problema se puede resolver si intentas crear el activador de nuevo. Para obtener más información, consulta Errores de permisos denegados.
Confirma que el activador se haya creado de forma correcta. Ten en cuenta que, si bien tu activador se crea de inmediato, puede tardar hasta dos minutos para que un activador sea por completo funcional.
gcloud eventarc triggers list --location=${REGION}
El estado del activador que se muestra debe ser
ACTIVE: Yes
.
Genera y visualiza un evento
Publicar un mensaje en un tema de Pub/Sub para generar un evento y activar el servicio de Cloud Run. El servicio de Cloud Run registra los mensajes en los registros del servicio.
Busca y establece el tema Pub/Sub como una variable de entorno:
export TOPIC_ID=$(gcloud eventarc triggers describe ${SERVICE_NAME} \ --format='value(transport.pubsub.topic)')
Envía un mensaje al tema de Pub/Sub para generar un evento:
gcloud pubsub topics publish $TOPIC_ID --message "Hello there"
El evento se envía al servicio de Cloud Run, que registra el mensaje del evento.
Ve las entradas de registro relacionadas con eventos creadas por tu servicio:
gcloud logging read 'textPayload: "Hello there!"'
La entrada de registro debería ser similar a la siguiente:
textPayload: 'Hello, Hello there!'
Los registros pueden tardar un poco en aparecer. Si no los ves de inmediato, vuelve a revisar en un minuto.