En este instructivo, se muestra cómo configurar Application Integration para recibir notificaciones de clústeres de Google Kubernetes Engine (GKE) por correo electrónico.
Creas una integración con un activador de Pub/Sub para escuchar un tema existente que recibe notificaciones de un clúster de GKE. Luego, puedes usar las tareas de asignación de datos y transformador de datos para transformar el mensaje de Pub/Sub y crear un cuerpo de correo electrónico de texto sin formato.
Objetivos
- Crea una aplicación de Application Integration para recibir y transformar notificaciones externas de GKE.
- Escribe una tarea de envío de correo electrónico que envíe notificaciones de Pub/Sub a un correo electrónico.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE, Application Integration and Pub/Sub APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the GKE, Application Integration and Pub/Sub APIs.
- Habilita las notificaciones de clúster de GKE.
- Si usas Application Integration en tu proyecto por primera vez, asegúrate de configurarlo.
Roles obligatorios
Para garantizar que service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com tenga los permisos necesarios para configurar notificaciones por correo electrónico para las notificaciones de clúster, pídele a tu administrador que otorgue a service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com los siguientes roles de IAM en tu proyecto:
-
Editor de Pub/Sub (
roles/pubsub.editor
) -
Editor de Application Integration (
roles/integrations.editor
)
Configura las notificaciones de clúster para tu clúster de GKE
Para usar Pub/Sub y recibir notificaciones sobre tu clúster de GKE, sigue las instrucciones de Cómo recibir notificaciones de clústeres.
Cómo crear una integración nueva
Para crear una integración nueva, sigue estos pasos:
Ve a la página Application Integration en la consola de Google Cloud.
En el menú de navegación, haz clic en Integraciones. Aparecerá la página Integraciones.
Haz clic en Crear integración.
En Nombre de la integración, ingresa un nombre para la integración que crearás.
Si tienes varias regiones habilitadas, se mostrará una opción desplegable para que selecciones una región para la integración. Cuando solo se haya habilitado una región, se usará esa región de forma predeterminada y no se mostrará el menú desplegable.
Nota: En el menú desplegable Regiones, solo se enumeran las regiones aprovisionadas en el proyecto de Google Cloud. Para aprovisionar una región nueva, haz clic en Habilitar región, que se muestra en la parte inferior del cuadro.
Haz clic en Crear para abrir el editor de integración.
Agrega y configura el activador de Pub/Sub
Para agregar un activador de Pub/Sub a la integración, sigue estos pasos:
En el editor de integración, selecciona Activadores para ver una lista de los activadores disponibles.
Haz clic y coloca el elemento activador de Pub/Sub en el diseñador.
Haz clic en el elemento activador de Pub/Sub en el editor de integración para ver el panel de configuración del activador.
Especifica el tema que el activador debe escuchar en el campo Tema de Pub/Sub en el siguiente formato:
projects/PROJECT_ID/topics/TOPIC_ID
Reemplaza lo siguiente:
PROJECT_ID
: Es el proyecto de Google Cloud en el que se creó tu tema.TOPIC_ID
: Es el ID del tema de Pub/Sub que creaste en Configura tu entorno.Por ejemplo, si tu proyecto se llama
my-project
y tu nombre del temagke-notifications
, ingresa lo siguiente:projects/my-project/topics/gke-notifications
Para ver todos los temas disponibles en el proyecto de Google Cloud, consulta la columna Nombre del tema en Temas. El panel de configuración del activador de Pub/Sub propagará de forma automática el campo Resultado del activador con una variable para contener el mensaje de Pub/Sub.
Agrega y configura la tarea de asignación de datos
La tarea de asignación de datos ayuda a extraer variables relevantes de la notificación de Pub/Sub. Toma el archivo JSON del mensaje de Pub/Sub como entrada y extrae variables como salida.
Para configurar la tarea de asignación de datos, haz lo siguiente:
Selecciona Tareas para ver una lista de tareas disponibles.
Haz clic y coloca el elemento Asignación de datos en el editor de integración.
Haz clic en la tarea Asignación de datos en el diseñador para abrir el panel de configuración de la tarea.
Para agregar una conexión de integración del activador de Pub/Sub a la asignación de datos, mantén el puntero sobre un punto de control del activador de Pub/Sub y, luego, arrastra una línea hasta un punto de control en la tarea de asignación de datos. La conexión de integración denota el flujo de control del activador de Pub/Sub a la tarea de asignación de datos.
Haz clic en Abrir editor de asignación de datos. El Editor de asignación de datos te permite asignar variables de entrada a las variables de salida deseadas con las funciones de transformación disponibles. Entonces, el resultado está disponible como una variable para cualquier otra tarea o activador de integración. Para obtener más información sobre las variables en Application Integration, consulta Variables.
En este instructivo, sigue estos pasos para crear una asignación con
CloudPubSubMessage
como entrada:- Expande la variable JSON
CloudPubSubMessage
en la lista Variables y arrastra la variableCloudPubSubMessage.data
a la primera fila Entrada. - Para crear una variable de salida nueva que contenga el valor de los datos transformados, haz clic en la primera fila de la columna Salida. A continuación, haz lo siguiente:
- En el campo Nombre, ingresa
message_data
. - En la lista Tipo de variable, selecciona Resultado de la integración.
- En la lista Tipos de datos, selecciona Cadena.
- Haz clic en Crear. La variable
message_data
aparece en Resultado.
- En el campo Nombre, ingresa
- Arrastra la variable
CloudPubSubMessage.attributes
desde la lista Variables hasta la segunda fila de la columna entrada. Haz clic en la segunda fila de la columna Salida para crear una variable de salida nueva que contenga el valor de la carga útil JSON con los atributos del clúster. Completa los siguientes campos:
- En el campo Nombre, ingresa
attributes
. - En la lista Tipo de variable, selecciona Ninguna.
- En la lista Tipo de datos, selecciona JSON.
Selecciona Ingresar un esquema JSON en las Opciones de esquema JSON y pega la siguiente carga útil:
{ "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "cluster_name": { "type": "string" }, "payload": { "type": "string" }, "project_id": { "type": "string" }, "cluster_location": { "type": "string" }, "type_url": { "type": "string" } } }
Haz clic en Crear. La variable
attributes
aparece en Resultado. Asegúrate de que la variable de atributos se vea de la siguiente manera:
- En el campo Nombre, ingresa
Haz clic en la tercera fila de la columna Entrada y selecciona
attributes.cluster_name
en el panel Variables. Es posible que debas comenzar a escribir atributos para ver los 5 atributos definidos desde el esquema ingresado en el paso anterior.Haz clic en la fila correspondiente de la columna Salida para crear una variable de salida nueva que contenga el valor del atributo nombre del clúster. Completa los siguientes campos:
- En el campo Nombre, ingresa
cluster_name
. - En la lista Tipo de variable, selecciona Resultado de la integración.
- En la lista Tipos de datos, selecciona Cadena.
- Haz clic en Crear. La variable
cluster_name
aparece en Resultado.
- En el campo Nombre, ingresa
Repite los pasos e y f para
project_id
,cluster_location
,type_url
ypayload
.Cierra el Editor de asignación de datos una vez que se complete la asignación. Los cambios se guardarán automáticamente.
- Expande la variable JSON
Agrega y configura la tarea de Data Transformer (secuencia de comandos)
La tarea de Data Transformer toma las variables extraídas de la tarea de asignación de datos como entrada y las transforma en un cuerpo de mensaje para el consumo del usuario final.
Para configurar la tarea de Data Transformer, haz lo siguiente:
- Selecciona Tareas para ver una lista de tareas disponibles.
- Haz clic y coloca el elemento Data Transformer (secuencia de comandos) en el editor de integración.
- Haz clic en la tarea Data Transformer en el diseñador para abrir el panel de configuración de la tarea.
- Para agregar una conexión perimetral de la tarea de asignación de datos a la tarea de Data Transformer, mantén el puntero sobre un punto de control en la asignación de datos y, luego, arrastra una línea hasta un punto de control en la tarea de Data Transformer. La conexión de integración denota el flujo de control de la tarea de asignación de datos a la tarea de Data Transformer.
Haz clic en Abrir editor de Data Transformer. La tarea Editor de Data Transformer te permite escribir, editar y evaluar plantillas Jsonnet personalizadas para realizar la asignación de datos en tu integración. Entonces, el resultado está disponible como una variable para cualquier otra tarea o activador de integración. Para obtener más detalles sobre esta tarea del transformador, consulta Tarea de Data Transformer. En esta guía de inicio rápido, sigue estos pasos para crear una secuencia de comandos:
Haz clic en
Crear en el panel izquierdo Variables. Se abrirá un panel Crear variable en el lado derecho. Completa los siguientes campos:- Nombre: Ingresa
full_message
. - Selecciona
Output from integration
en el cuadro desplegable Tipo de variable. - Selecciona
String
en el cuadro desplegable Tipo de datos. - Haz clic en Crear para crear la variable y cerrar el panel. La nueva variable
full_message
aparecerá en la listaVariables.
- Nombre: Ingresa
Selecciona Secuencia de comandos.
Usa la siguiente secuencia de comandos de ejemplo como plantilla para el cuerpo del mensaje cuando se envíen notificaciones desde tu clúster:
local message_data = std.extVar("message_data"); local cluster_name = std.extVar("cluster_name"); local project_id = std.extVar("project_id"); local cluster_location = std.extVar("cluster_location"); local type_url = std.extVar("type_url"); local payload = std.extVar("payload"); {full_message: "Project ID: " + project_id + "\n" + "Cluster Name: " + cluster_name + "\n" + "Location: " + cluster_location + "\n" + "Event Type: " + type_url + "\n" + "Message: " + message_data + "\n" + "Payload: " + std.manifestJson(std.parseJson(payload))}
Cierra el Editor de asignación de datos una vez que se complete la asignación. Los cambios se guardarán automáticamente.
Agrega y configura la tarea Enviar correo electrónico
Para configurar la tarea Enviar correo electrónico, haz lo siguiente:
- Selecciona Tareas en el editor de integración para ver la lista de tareas disponibles.
- Haz clic y coloca el elemento Enviar correo electrónico en el editor de integración.
- Para agregar una conexión de integración de la tarea de Data Transformer a la tarea de enviar correo electrónico, mantén el puntero sobre un punto de control en la tarea de Data Transformer y, luego, arrastra una línea hasta un punto de control en la tarea de enviar correo electrónico. El perímetro denota el flujo de control de la tarea de Data Transformer a la tarea de Enviar correo electrónico.
- Haz clic en el elemento Enviar correo electrónico en el diseñador para abrir el panel de configuración de la tarea. Establece las siguientes propiedades:
- A los destinatarios: Ingresa una dirección de correo electrónico. Usa este correo electrónico para confirmar que la integración se completó correctamente.
- Asunto: Ingresa
GKE Notifications
. - Cuerpo en texto sin formato: Selecciona la variable
full_message
que creaste antes en la tarea de Data Transformer. - Las opciones restantes pueden dejarse en la configuración predeterminada.
Los cambios en las propiedades se guardan automáticamente, y tu lienzo debería verse similar a lo siguiente:
Probar la integración
Para probar la nueva integración, ve a la barra de navegación en la parte superior del diagrama de integración y haz clic en Probar. Se abrirá un panel en el lado derecho. Puedes usar el siguiente mensaje de Pub/Sub de muestra en la sección Agregar un valor JSON:
{
"data": "Node pool projects/my-project/locations/us-central1-c/clusters/cluster-1/nodePools/default-pool is upgrading to version 1.29.1-gke.1589017.",
"attributes": {
"cluster_location": "us-central1-c",
"cluster_name": "cluster-1",
"payload": "{\"resourceType\":\"NODE_POOL\",\"operation\":\"operation-upgrade\",\"operationStartTime\":\"2024-05-07T20:09:35.528855756Z\",\"currentVersion\":\"1.28.7-gke.1026000\",\"targetVersion\":\"1.29.1-gke.1589017\",\"resource\":\"projects/my-project/locations/us-central1-c/clusters/cluster-1/nodePools/default-pool\"}",
"project_id": "my-project",
"type_url": "type.googleapis.com/google.container.v1beta1.UpgradeEvent"
}
}
Se enviará un correo electrónico a la dirección que configuraste en la tarea Enviar correo electrónico después de hacer clic en el botón Probar integración.
Publica tu integración
Después de probar esta integración de forma correcta, haz clic en Publicar para que la integración comience a procesar los mensajes.
Solo puedes editar una versión DRAFT
de la integración y ejecutar solo la versión ACTIVE
de la integración. Si quieres editar tu integración, haz clic en Habilitar edición en la página del diseñador de integraciones y, luego, crea una versión de borrador. Para obtener más información, consulta Bloqueos de edición de integraciones.
Libera espacio
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Borra los recursos individuales
¿Qué sigue?
- Obtén más información sobre los tipos de notificaciones de clúster.
- Consulta la documentación de Pub/Sub.