Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.
Guía de inicio rápido: Recibe eventos mediante mensajes de Pub/Sub (Google Cloud CLI)

Recibe eventos mediante mensajes de Pub/Sub (CLI de gcloud)

En esta guía de inicio rápido, se muestra cómo configurar un servicio de Google Kubernetes Engine (GKE) como destino para recibir eventos de un tema de Pub/Sub mediante Eventarc.

En esta guía de inicio rápido, podrás hacer lo siguiente:

  1. Crear un clúster de GKE.
  2. Configurar una cuenta de servicio para extraer eventos de Pub/Sub mediante un componente de reenvío de eventos que reenvíe eventos al destino
  3. Inicializar los destinos de GKE en Eventarc
  4. Implementar un servicio de GKE que reciba eventos.
  5. Crear un activador de Eventarc que conecte un tema de Pub/Sub al servicio de GKE.
  6. Generar y visualizar un evento de Pub/Sub

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  4. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.

  6. Instala y, luego, inicializa Google Cloud CLI. Si se te solicita configurar una región de procesamiento predeterminada, ingresa n.
  7. Actualiza los componentes de gcloud:
    gcloud components update
  8. Habilita las API de Google Cloud, Cloud Build, Resource Manager, Google Kubernetes Engine, Eventarc y Container Registry:
    gcloud services enable cloudapis.googleapis.com
    gcloud services enable cloudbuild.googleapis.com
    gcloud services enable cloudresourcemanager.googleapis.com
    gcloud services enable container.googleapis.com
    gcloud services enable containerregistry.googleapis.com
    gcloud services enable eventarc.googleapis.com
    
  9. Establece las variables de configuración que se usan en esta guía de inicio rápido:
    gcloud config set project PROJECT_ID
    gcloud config set run/cluster events-cluster
    gcloud config set run/cluster_location us-central1
    gcloud config set run/platform gke
    gcloud config set eventarc/location us-central1
    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.
  10. Opcional: Para verificar las opciones de configuración con gcloud_name, escribe lo siguiente:
    gcloud config list
    El resultado debería ser similar al ejemplo siguiente:
    [eventarc]
    location = us-central1
    [run]
    cluster = events-cluster
    cluster_location = us-central1
    platform = gke

Cree un clúster de GKE

Crea un clúster de GKE con el complemento HttpLoadBalancing. Habilita Workload Identity para acceder a los servicios de Google Cloud desde aplicaciones que se ejecutan dentro de GKE.

PROJECT_ID=$(gcloud config get-value project)

gcloud beta container clusters create events-cluster \
  --addons=HttpLoadBalancing \
  --machine-type=n1-standard-4 \
  --enable-autoscaling --min-nodes=2 --max-nodes=10 \
  --no-issue-client-certificate --num-nodes=2  \
  --logging=SYSTEM,WORKLOAD \
  --monitoring=SYSTEM \
  --scopes=cloud-platform,logging-write,monitoring-write,pubsub \
  --zone us-central1 \
  --release-channel=rapid \
  --workload-pool=$PROJECT_ID.svc.id.goog

Espera a que termine de crearse el clúster. Puedes ignorar las advertencias durante el proceso de creación. Una vez que se crea el clúster, el resultado debe ser similar al siguiente:

Creating cluster events-cluster...done.
Created [https://container.googleapis.com/v1beta1/projects/my-project/zones/us-central1/clusters/events-cluster].

En el ejemplo anterior, my-project es el ID del proyecto de Google Cloud.

Esto crea un clúster de GKE llamado events-cluster en my-project.

Configura una cuenta de servicio de Google

Configura una cuenta de servicio proporcionada por el usuario y otórgale roles específicos para que el componente de reenvío de eventos pueda extraer eventos de Pub/Sub.

  1. Crea una cuenta de servicio llamada TRIGGER_GSA que se use para crear activadores:

    TRIGGER_GSA=eventarc-gke-triggers
    gcloud iam service-accounts create $TRIGGER_GSA
  2. Otorga las funciones pubsub.subscriber y monitoring.metricWriter a la cuenta de servicio:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
      --role "roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
      --role "roles/monitoring.metricWriter"

Habilita los destinos de GKE

Para cada activador que se orienta a un servicio de GKE, Eventarc crea un componente de reenvío de eventos que extrae eventos de Pub/Sub y los reenvía al destino. Para crear el componente y administrar los recursos en el clúster de GKE, otorga permisos a una cuenta de servicio de Eventarc:

  1. Habilita los destinos de GKE para Eventarc:

    gcloud eventarc gke-destinations init
    
  2. Cuando se te solicite vincular los roles necesarios, ingresa y.

    Los siguientes roles están vinculados a la cuenta de servicio:

    • compute.viewer
    • container.developer
    • iam.serviceAccountAdmin

Crea un destino de servicio de GKE

Mediante una imagen compilada con anterioridad, gcr.io/cloudrun/hello, implementa un servicio de GKE que recibirá y registrará eventos:

  1. Crea una Deployment de Kubernetes:

    SERVICE_NAME=hello-gke
    kubectl create deployment $SERVICE_NAME \
    --image=gcr.io/cloudrun/hello
    
  2. Exponlo como un servicio de Kubernetes:

    kubectl expose deployment $SERVICE_NAME \
    --type LoadBalancer --port 80 --target-port 8080
    

Crea un activador de Pub/Sub

Cuando se publica un mensaje en el tema de Pub/Sub, el activador de Eventarc envía mensajes al servicio hello-gke de GKE.

  1. Crea un activador GKE para detectar los mensajes de Pub/Sub:

    Nuevo tema Pub/Sub

    gcloud eventarc triggers create gke-trigger-pubsub \
      --destination-gke-cluster=events-cluster \
      --destination-gke-location=us-central1 \
      --destination-gke-namespace=default \
      --destination-gke-service=hello-gke \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --service-account=$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com
    

    Esto crea un nuevo tema de Pub/Sub y un activador llamado gke-trigger-pubsub para este.

    Tema de Pub/Sub existente

    gcloud eventarc triggers create gke-trigger-pubsub \
      --destination-gke-cluster=events-cluster \
      --destination-gke-location=us-central1 \
      --destination-gke-namespace=default \
      --destination-gke-service=hello-gke \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
      --service-account=$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com \
      --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID
    

    Reemplaza lo siguiente:

    • PROJECT_ID es tu ID del proyecto de Cloud.
    • TOPIC_ID es el ID del tema de Pub/Sub existente. Esto crea un activador llamado gke-trigger-pubsub para el tema de Pub/Sub existente.
  2. Confirma que el activador se haya creado correctamente:

    gcloud eventarc triggers list

    El resultado debería ser similar al ejemplo siguiente:

    NAME: gke-trigger-pubsub
    TYPE: google.cloud.pubsub.topic.v1.messagePublished
    DESTINATION: GKE: hello-gke
    ACTIVE: Yes
    

Genera y visualiza un evento

Puedes generar un evento para activar el servicio de GKE si publicas un mensaje en el tema de Pub/Sub. Luego, puedes ver el mensaje en los registros del Pod.

  1. Busca y establece el tema Pub/Sub como una variable de entorno:

    TOPIC=$(gcloud eventarc triggers describe gke-trigger-pubsub --format='value(transport.pubsub.topic)')
    
  2. Envía un mensaje al tema de Pub/Sub para generar un evento:

    gcloud pubsub topics publish $TOPIC --message="Hello World"
    

    El servicio de GKE registra el mensaje del evento.

  3. Para ver el mensaje del evento, sigue estos pasos:

    1. Busca el ID del Pod:
      kubectl get pods
      
      El resultado debería ser similar al ejemplo siguiente:
      NAME                                         READY   STATUS             RESTARTS   AGE
      hello-gke-645964f578-2mjjt                   1/1     Running            0          35s
      Donde NAME es el nombre del Pod. Toma nota de NAME para usarlo en el siguiente paso.
    2. Verifica los registros del Pod:
      kubectl logs NAME
      Reemplaza NAME por el nombre del Pod que copiaste.
    3. Busca una entrada de registro similar a lo siguiente:
      2022/02/24 22:23:49 Hello from Cloud Run! The container started successfully and is listening for HTTP requests on $PORT
      {"severity":"INFO","eventType":"google.cloud.pubsub.topic.v1.messagePublished","message":"Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World"[...]}
      

Limpia

Si bien Cloud Run no cobra cuando el servicio no se usa, es posible que se te cobre poralmacenar la imagen del contenedor en Container Registry, recursos de Eventarc, mensajes de Pub/Sub y el clúster de GKE.

Puedes borrar tu imagen, borrar el tema de Pub/Sub, borrar la suscripción a Pub/Sub y borrar el clúster de GKE.

Para borrar el activador de Eventarc, ejecuta el siguiente comando:

gcloud eventarc triggers delete gke-trigger-pubsub

Como alternativa, puedes borrar el proyecto de Cloud Console para evitar que se generen cargos. Si borras el proyecto de Cloud, se dejan de facturar todos los recursos que usaste en ese proyecto.

gcloud projects delete PROJECT_ID_OR_NUMBER

Reemplaza PROJECT_ID_OR_NUMBER por el ID o el número del proyecto.

¿Qué sigue?

Recibir eventos con los Registros de auditoría de Cloud (Google Cloud CLI)