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.
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 los pasos que se indican en Cómo recibir notificaciones del clúster a través de Pub/Sub.
Crea 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 estás creando.
Si tienes habilitadas varias regiones, aparecerá una opción de menú desplegable para que selecciones una región para la integración. Cuando solo se habilita una región, se establecerá 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 tu proyecto deGoogle 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 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 tu proyecto 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 Output from integration.
- En la lista Tipos de datos, selecciona Cadena.
- Haz clic en Crear. La variable
message_data
aparece en Salida.
- 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 Ninguno.
- 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 Salida. Asegúrate de que la variable de atributos se vea similar a la siguiente:
- 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 a partir del esquema que ingresaste 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 de nombre del clúster. Completa los siguientes campos:
- En el campo Nombre, ingresa
cluster_name
. - En la lista Tipo de variable, selecciona Output from integration.
- En la lista Tipos de datos, selecciona Cadena.
- Haz clic en Crear. La variable
cluster_name
aparece en Salida.
- 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 Data Transformer (Script)
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. Para 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 Script.
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 el 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 Test. 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 envía 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 correctamente, haz clic en Publicar para que tu 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 integración y, luego, crea una versión de borrador. Para obtener más información, consulta Bloqueos de edición de la integración.