Recibe eventos de Pub/Sub

Aprende a implementar un servicio en Cloud Run for Anthos en Google Cloud y, luego, crea y envía eventos a ese servicio desde Pub/Sub.

Antes de comenzar

Para completar esta tarea, debes tener un agente de eventos y saber en qué espacio de nombres se ejecuta. Obtén más información sobre cómo configurar eventos para Cloud Run for Anthos y crear un agente de eventos.

Si tienes un agente de eventos en ejecución, puedes ver el espacio de nombres de Kubernetes si ejecutas este comando:

kubectl get brokers -n NAMESPACE

Implementa un servicio de receptor de eventos de Cloud Run for Anthos

Implementa un servicio de Cloud Run for Anthos que reciba eventos del agente de eventos.

Para implementar el servicio Cloud Run for Anthos, haz lo siguiente:

  1. Clona el repositorio:

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/pubsub
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/pubsub
    

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/pubsub
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/pubsub
    

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/pubsub
    
  2. Compila el contenedor y súbelo a Cloud Build:

    gcloud builds submit \
      --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_FILENAME
    

    En el ejemplo anterior, CLOUD_RUN_CONTAINER_FILENAME es el nombre de archivo de tu contenedor.

  3. Implementa la imagen de contenedor en Cloud Run for Anthos:

    gcloud run deploy CLOUD_RUN_SERVICE_NAME \
        --namespace=NAMESPACE \
        --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
    

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.

Si ves la URL del servicio, se implementó de forma correcta.

Crea un activador para Pub/Sub

  1. Crea un tema de Pub/Sub:

    gcloud pubsub topics create TOPIC_NAME
    
  2. Crea un activador con --parameters topic=TOPIC_NAME y --target-service=CLOUD_RUN_SERVICE_NAME:

    gcloud beta events triggers create TRIGGER_NAME \
      --namespace NAMESPACE \
      --target-service=CLOUD_RUN_SERVICE_NAME \
      --type=google.cloud.pubsub.topic.v1.messagePublished \
      --source=CloudPubSubSource \
      --parameters topic=TOPIC_NAME
    

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que tu agente de eventos, TOPIC-NAME es el nombre del tema de Pub/Sub que creaste y CLOUD_RUN_SERVICE_NAME es el nombre del servicio de receptor de eventos en Cloud Run for Anthos.

  3. Verifica que el activador esté en funcionamiento mediante la herramienta de línea de comandos de gcloud (opcional):

    gcloud beta events triggers list \
      --target-service 'CLOUD_RUN_SERVICE_NAME' \
      --namespace NAMESPACE
    

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.

    El resultado es similar al siguiente:

    TRIGGER           EVENT TYPE                                      TARGET
    trigger-name    google.cloud.pubsub.topic.v1.messagePublished   cloud-run-service
    

Genera un evento

  1. Publica un mensaje en el tema de Pub/Sub:

    gcloud pubsub topics publish TOPIC_NAME \
      --message "World"
    
  2. Revisa los registros del servicio receptor de Cloud Run for Anthos para verificar el evento publicado:

    kubectl logs \
      --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \
      -c user-container \
      -n NAMESPACE \
      --tail=100
    

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.

    En los registros, encontrarás una entrada similar a la siguiente:

    Hello World! ID: 961750303502725
    

Realiza una limpieza

Borra los recursos que se crearon en este instructivo para evitar cargos recurrentes.

  1. Para borrar el activador, escribe lo siguiente:

    gcloud beta events triggers delete TRIGGER-NAME \
        --namespace NAMESPACE
    

    En el ejemplo anterior, NAMESPACE es el mismo espacio de nombres que el agente de eventos.