Un activador de Eventarc declara tu interés en un evento o conjunto de eventos determinado. Si quieres configurar el enrutamiento de eventos, especifica filtros para el activador, incluida la fuente del evento, y el servicio de destino de Google Kubernetes Engine (GKE) que se ejecuta en un clúster de GKE. Ten en cuenta que los objetivos solo pueden incluir servicios que se ejecuten en clústeres de GKE (públicos o privados) con extremos públicos. Para orientar los servicios en clústeres de GKE con extremos privados, enruta los eventos a extremos HTTP internos.
Eventarc entrega eventos al receptor de eventos en formato de CloudEvents a través de una solicitud HTTP.
En estas instrucciones, se muestra cómo configurar el enrutamiento de eventos para el servicio de GKE que activa un evento directo Cloud Pub/Sub . En este caso, un mensaje publicado en un tema de Pub/Sub. Para obtener más detalles, consulta la lista de eventos directos compatibles.
Antes de comenzar
Debes habilitar Workload Identity Federation for GKE en el clúster de GKE en el que se ejecuta el servicio de destino. Se requiere Workload Identity Federation for GKE para configurar el servidor de reenvío de eventos de forma correcta y es la forma recomendada de acceder a los servicios de Google Cloud desde aplicaciones que se ejecutan dentro de GKE debido a sus propiedades de seguridad y capacidad de administración mejoradas.
Federación de identidades para cargas de trabajo para GKE
Es posible que las aplicaciones que se ejecutan en GKE necesiten acceso a las APIs de Google Cloud. Workload Identity Federation for GKE permite que una cuenta de servicio de Kubernetes en el clúster de GKE actúe como una cuenta de servicio de IAM. Los Pods que usan la cuenta de servicio de Kubernetes configurada se autentican de forma automática como la cuenta de servicio de IAM cuando accedes a las APIs de Google Cloud. El uso de Workload Identity Federation for GKE te permite asignar identidades y autorizaciones distintas y detalladas para cada aplicación en el clúster. Ten en cuenta que se deben otorgar permisos específicos a la cuenta de servicio del activador de Eventarc. En este documento, consulta los pasos para crear una cuenta de servicio.
Para obtener más información sobre cómo habilitar y configurar Workload Identity Federation for GKE en los clústeres de GKE, consulta Usa Workload Identity Federation for GKE.
Reenvío de eventos
El servidor de reenvío de eventos de Eventarc extrae eventos nuevos de Eventarc y los reenvía al destino de GKE. Este componente actúa como un mediador entre la capa de transporte de Pub/Sub y el servicio de GKE. Funciona en servicios existentes y también admite servicios de señalización (incluidos los que no se exponen fuera del clúster completamente administrado) y simplifica la configuración y el mantenimiento. A nivel de la red, para recibir eventos en un servicio de GKE, no necesitas abrir el servicio al tráfico externo, ya que todos los eventos se entregan desde un origen que reside dentro del mismo clúster de GKE.
Ten en cuenta que Eventarc administra el ciclo de vida del servidor de reenvío de eventos y, si borras el servidor de reenvío de eventos por accidente, Eventarc restablecerá este componente.
Para cada activador que apunta a un destino de GKE, el servidor de reenvío
de eventos (un Pod gke-forwarder
configurado de forma específica) hace lo siguiente:
Usa la API de Pub/Sub para abrir una conexión
StreamingPull
al transportador del activador (un tema y una suscripción de Pub/Sub) y recibe eventos a medida que están disponibles.Transforma los eventos en el formato de CloudEvents correcto y los codifica y los entrega como una solicitud
HTTP POST
al servicio de GKE de destino.
El agente de servicio de Eventarc necesita el permiso para ejecutar y
actualizar con regularidad la instancia de gke-forwarder
. Este permiso se debe otorgar
una vez por proyecto. Para obtener más información, en este documento, consulta
Habilita los destinos de GKE.
Prepárate para crear un activador
Para cada activador que se orienta a un servicio de GKE, Eventarc crea un componente de reenvío de eventos. Eventarc requiere permisos para instalar el componente y administrar recursos en el clúster de GKE. Antes de crear un activador de Eventarc para destinos de GKE, asegúrate de completar las siguientes tareas.
Console
En la página del selector de proyectos de la consola de Google Cloud, elige o crea un proyecto de Google Cloud.
Habilita las APIs de Eventarc, Eventarc Publising, Google Kubernetes Engine y Resource Manager.
Si corresponde, habilita la API relacionada con los eventos directos. Por ejemplo, para eventos Cloud Pub/Sub , habilita la APICloud Pub/Sub .
Si aún no tienes una, crea una cuenta de servicio administrada por el usuario y, luego, otórgale los roles y los permisos necesarios para que Eventarc pueda administrar los eventos para el servicio de destino.
En la consola de Google Cloud, ve a la página Crear cuenta de servicio.
Elige tu proyecto.
Escribe un nombre en el campo Nombre de cuenta de servicio. La consola de Google Cloud completa el campo ID de la cuenta de servicio en función de este nombre.
Opcional: en el campo Descripción de la cuenta de servicio, escribe una descripción. Por ejemplo,
Service account for event trigger
.Haz clic en Crear y continuar.
Para proporcionar el acceso adecuado, en la lista Seleccionar un rol, selecciona los roles de Identity and Access Management (IAM) necesarios para otorgar a tu cuenta de servicio. Si deseas obtener más información, consulta Roles y permisos para destinos de GKE.
Para obtener roles adicionales, haz clic en
Agregar otro rol y agrega cada rol adicional.Haz clic en Continuar.
Para terminar de crear la cuenta, haz clic en Listo.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Habilita las APIs de Eventarc, Eventarc Publising, Google Kubernetes Engine y Resource Manager.
gcloud services enable eventarc.googleapis.com \ eventarcpublishing.googleapis.com \ container.googleapis.com \ cloudresourcemanager.googleapis.com
Si corresponde, habilita la API relacionada con los eventos directos. Por ejemplo, para los eventos Cloud Pub/Sub , habilita
pubsub.googleapis.com
.Si aún no tienes una, crea una cuenta de servicio administrada por el usuario y, luego, otórgale los roles y los permisos necesarios para que Eventarc pueda administrar los eventos de tu destino de GKE.
Cree la cuenta de servicio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Reemplaza
SERVICE_ACCOUNT_NAME
por el nombre de la cuenta de servicio. Debe tener entre 6 y 30 caracteres y puede contener guiones y caracteres alfanuméricos en minúscula. Después de crear una cuenta de servicio, no podrás cambiar su nombre.Otorga los roles o los permisos de Identity and Access Management (IAM) necesarios. Si deseas obtener más información, consulta Roles y permisos para destinos de GKE.
Habilita los destinos de GKE
Para permitir que Eventarc administre recursos en el clúster de GKE, habilita los destinos de GKE y vincula la cuenta de servicio de Eventarc con los roles necesarios.
Habilita los destinos de GKE para Eventarc:
gcloud eventarc gke-destinations init
Cuando se te solicite vincular los roles necesarios, ingresa
y
.Los siguientes roles están vinculados:
roles/compute.viewer
roles/container.developer
roles/iam.serviceAccountAdmin
Crear un activador
Puedes crear un activador de Eventarc con Google Cloud CLI o a través de la consola de Google Cloud.
Console
- En la consola de Google Cloud, ve a la página Activadores de Eventarc.
- Haz clic en Crear activador.
- Escribe un nombre de activador.
Este es el ID del activador y debe empezar con una letra. Puede contener hasta 63 letras en minúscula, números o guiones.
- Para el Tipo de activador, elige Fuentes de Google.
- En la lista Proveedor del evento, elige
Cloud Pub/Sub.
Ten en cuenta que el nombre del proveedor de eventos que se usa en la documentación de Google Cloud asociada podría no tener el prefijo Cloud o Google Cloud. Por ejemplo, en la consola, Memorystore for Redis se denomina Google Cloud Memorystore para Redis.
- En la lista Tipo de evento, en los eventos Directos, selecciona google.cloud.pubsub.topic.v1.messagePublished.
- En la lista Seleccionar un tema de Cloud Pub/Sub, elige un tema o acepta la configuración predeterminada Ninguno para que se cree un tema nuevo.
- En la lista Región, elige la misma región que el servicio de Google Cloud que genera los eventos.
Para obtener más información, consulta Ubicaciones de Eventarc.
- Elige la cuenta de servicio que invocará el servicio
o el flujo de trabajo.
O bien, puedes crear una cuenta de servicio nueva.
Esto especifica el correo electrónico de la cuenta de servicio de Identity and Access Management (IAM) asociado con el activador y al que otorgaste antes roles específicos que requiere Eventarc.
- En la lista Destino del evento, elige Kubernetes Engine.
- Elige un servicio.
Este es el nombre del servicio que recibe los eventos del activador. El servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (
/
) cada vez que se genere el evento. - De manera opcional, puedes especificar la ruta de URL de servicio a la que enviar
la solicitud entrante.
Esta es la ruta de acceso relativa en el servicio de destino al que se deben enviar los eventos del activador. Por ejemplo:
/
,/route
,route
,route/subroute
. - Haz clic en Crear.
Después de que se crea un activador, los filtros de fuente del evento no se pueden cambiar. En su lugar, crea un activador nuevo y borra el anterior. Para obtener más información, consulta Administra activadores.
gcloud
Para crear un activador, ejecuta un comando gcloud eventarc triggers create
junto con las marcas obligatorias y opcionales.
Mensajes de Pub/Sub (tema existente)
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-gke-cluster=DESTINATION_GKE_CLUSTER \ --destination-gke-location=DESTINATION_GKE_LOCATION \ --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \ --destination-gke-service=DESTINATION_GKE_SERVICE \ --destination-gke-path=DESTINATION_GKE_PATH \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Reemplaza lo siguiente:
TRIGGER
: el ID del activador o un identificador completamente calificadoLOCATION
: ubicación del activador de Eventarc. De forma alternativa, puedes establecer la propiedadeventarc/location
; por ejemplo,gcloud config set eventarc/location us-central1
.Los activadores de Pub/Sub para Eventarc solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global. Para obtener más información, consulta Ubicaciones de Eventarc.
DESTINATION_GKE_CLUSTER
: el nombre del clúster de GKE en el que se ejecuta un servicio de GKE de destino que recibe eventos.DESTINATION_GKE_LOCATION
: (opcional) la región de Compute Engine del clúster de GKE en el que se ejecuta el servicio de GKE de destino. Si no se especifica, se supone que el clúster es un clúster regional y se encuentra en la misma región que el activador.DESTINATION_GKE_NAMESPACE
: el espacio de nombres en el que se ejecuta el servicio de GKE de destino (opcional). Si no se especifica, se usa el espacio de nombresdefault
.DESTINATION_GKE_SERVICE
: el nombre del servicio de GKE que recibe los eventos del activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de GKE y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/
) cada vez que se genere el evento.DESTINATION_GKE_PATH
: la ruta de acceso relativa que especificas en el servicio de GKE de destino al que deben enviarse los eventos para el activador (opcional). Por ejemplo:/
,/route
,route
,route/subroute
.PROJECT_ID
: Es el ID de tu proyecto de Google Cloud.
TOPIC_ID
: el ID del tema de Pub/Sub existente. El tema debe estar en el mismo proyecto que el activador.SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio administrada por el usuario.
Notas:
- La marca
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
es obligatoria y no se puede cambiar. Para un tipo de evento diferente, debes crear un activador nuevo. - Cada activador tiene varios filtros de eventos, delimitados por comas en una marca
--event-filters
=[ATTRIBUTE
=VALUE
,...], o puedes repetir la marca para agregar más filtros. Solo los eventos que coinciden con todos los filtros se envían al destino. No se admiten comodines ni expresiones regulares. - La marca
--transport-topic
se usa para especificar el ID del tema existente de Pub/Sub o su identificador completamente calificado. - De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc persisten, independientemente de la actividad, y no vencen. Para cambiar la duración de la inactividad, consulta Administra suscripciones.
Ejemplo:
gcloud eventarc triggers create helloworld-trigger \
--destination-gke-cluster=gke-events-cluster \
--destination-gke-location=us-central1-a \
--destination-gke-namespace=default \
--destination-gke-service=helloworld \
--destination-gke-path=/ \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--transport-topic=projects/${PROJECT_ID}/topics/${TOPIC_ID} \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Este comando crea un activador llamado helloworld-trigger
para el tema de Pub/Sub identificado por projects/${PROJECT_ID}/topics/${TOPIC_ID}
.
Mensajes de Pub/Sub (tema nuevo)
gcloud eventarc triggers create TRIGGER \ --location=LOCATION \ --destination-gke-cluster=DESTINATION_GKE_CLUSTER \ --destination-gke-location=DESTINATION_GKE_LOCATION \ --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \ --destination-gke-service=DESTINATION_GKE_SERVICE \ --destination-gke-path=DESTINATION_GKE_PATH \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Reemplaza lo siguiente:
TRIGGER
: el ID del activador o un identificador completamente calificadoLOCATION
: ubicación del activador de Eventarc. De forma alternativa, puedes establecer la propiedadeventarc/location
; por ejemplo,gcloud config set eventarc/location us-central1
.Los activadores de Pub/Sub para Eventarc solo están disponibles en ubicaciones de una sola región y no puedes crear un activador de Eventarc global. Para obtener más información, consulta Ubicaciones de Eventarc.
DESTINATION_GKE_CLUSTER
: el nombre del clúster de GKE en el que se ejecuta un servicio de GKE de destino que recibe eventos.DESTINATION_GKE_LOCATION
: (opcional) la región de Compute Engine del clúster de GKE en el que se ejecuta el servicio de GKE de destino. Si no se especifica, se supone que el clúster es un clúster regional y se encuentra en la misma región que el activador.DESTINATION_GKE_NAMESPACE
: el espacio de nombres en el que se ejecuta el servicio de GKE de destino (opcional). Si no se especifica, se usa el espacio de nombresdefault
.DESTINATION_GKE_SERVICE
: el nombre del servicio de GKE que recibe los eventos del activador. El servicio puede estar en cualquiera de las ubicaciones admitidas de GKE y no es necesario que esté en la misma ubicación que el activador. Sin embargo, el servicio debe estar en el mismo proyecto que el activador y recibirá eventos como solicitudes POST HTTP enviadas a su ruta de URL raíz (/
) cada vez que se genere el evento.DESTINATION_GKE_PATH
: la ruta de acceso relativa que especificas en el servicio de GKE de destino al que deben enviarse los eventos para el activador (opcional). Por ejemplo:/
,/route
,route
,route/subroute
.SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio administrada por el usuario.PROJECT_ID
: Es el ID de tu proyecto de Google Cloud.
Notas:
- La marca
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished"
es obligatoria y no se puede cambiar. Para un tipo de evento diferente, debes crear un activador nuevo. - Cada activador tiene varios filtros de eventos, delimitados por comas en una marca
--event-filters
=[ATTRIBUTE
=VALUE
,...], o puedes repetir la marca para agregar más filtros. Solo los eventos que coinciden con todos los filtros se envían al destino. No se admiten comodines ni expresiones regulares. - De forma predeterminada, las suscripciones de Pub/Sub creadas para Eventarc persisten, independientemente de la actividad, y no vencen. Para cambiar la duración de la inactividad, consulta Administra suscripciones.
Ejemplo:
gcloud eventarc triggers create helloworld-trigger \
--location=us-central1 \
--destination-gke-cluster=gke-events-cluster \
--destination-gke-location=us-central1-a \
--destination-gke-namespace=default \
--destination-gke-service=helloworld \
--destination-gke-path=/ \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
Esto crea un nuevo tema de Pub/Sub y un activador llamado helloworld-trigger
para este.
Terraform
Puedes crear un activador para un destino de GKE con Terraform. Para obtener más información, consulta Crea un activador con Terraform.
Enumera un activador
Para confirmar la creación de un activador, enumera los activadores de Eventarc con Google Cloud CLI o a través de la consola de Google Cloud.
Console
En la consola de Google Cloud, ve a la página Activadores de Eventarc.
En esta página, se enumeran tus activadores en todas las ubicaciones y se incluyen detalles, como nombres, regiones, proveedores de eventos, destinos y mucho más.
Para filtrar tus activadores, haz lo siguiente:
- Haz clic en Filtrar o en el campo Filtrar activadores.
- En la lista Propiedades, elige una opción para filtrar los activadores.
Puedes elegir una sola propiedad o usar el operador lógico
OR
para agregar más propiedades.Para ordenar los activadores, junto con el encabezado de la columna compatible, haz clic en
Ordenar.
gcloud
Ejecuta el siguiente comando para enumerar los activadores:
gcloud eventarc triggers list --location=-
Este comando enumera tus activadores en todas las ubicaciones y, además, incluye detalles como nombres, tipos, destinos y estados.