本教程介绍如何配置应用集成以通过电子邮件接收 Google Kubernetes Engine (GKE) 集群通知。
您可以创建与 Pub/Sub 触发器的集成,以监听接收来自 GKE 集群的通知的现有主题。然后,您可以使用数据映射和数据转换器任务来转换 Pub/Sub 消息并构建纯文本电子邮件正文。
目标
- 创建应用集成应用以接收和转换来自 GKE 的外部通知。
- 编写用于将 Pub/Sub 通知发送到电子邮件的“发送电子邮件”任务。
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
您可使用价格计算器根据您的预计使用情况来估算费用。
完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理。
准备工作
- 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.
- 启用 GKE 集群通知。
- 如果您是首次在项目中使用 Application Integration,请确保您已设置 Application Integration。
所需的角色
如需确保 service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com 拥有为集群通知设置电子邮件通知所需的权限,请让管理员向 service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com 授予项目的以下 IAM 角色:
-
Pub/Sub Editor (
roles/pubsub.editor
) -
Application Integration Editor (
roles/integrations.editor
)
为 GKE 集群设置集群通知
如需使用 Pub/Sub 接收有关 GKE 集群的通知,请参阅接收集群通知。
创建新的集成
如需创建新的集成,请执行以下步骤:
前往 Google Cloud 控制台中的 Application Integration 页面。
在导航菜单中,点击集成。系统会显示集成页面。
点击创建集成。
在集成名称中,输入您要创建的集成的名称。
如果您已启用多个区域,系统会显示一个下拉菜单选项,供您选择集成所需的区域。如果仅启用了一个区域,则系统会默认使用该区域,并且不会显示下拉菜单。
注意:区域下拉列表仅列出您的 Google Cloud 项目中预配的区域。如需预配新区域,请点击框底部的 Enable Region。
点击创建以打开集成编辑器。
添加并配置 Pub/Sub 触发器
如需将 Pub/Sub 触发器添加到集成中,请按以下步骤操作:
在集成编辑器中,选择触发器以显示可用触发器列表。
点击 Pub/Sub 触发器元素,并将其放置在设计器中。
点击集成编辑器中的 Pub/Sub 触发器 (Cloud Pub/Sub Trigger) 元素以查看触发器配置窗格。
按照以下格式在 Pub/Sub 主题字段中指定触发器应监听的主题:
projects/PROJECT_ID/topics/TOPIC_ID
替换以下内容:
PROJECT_ID
:创建主题的 Google Cloud 项目。TOPIC_ID
:您在设置环境中创建的 Pub/Sub 主题的 ID。例如,如果您的项目命名为
my-project
并将主题命名为gke-notifications
,请输入:projects/my-project/topics/gke-notifications
如需查看 Google Cloud 项目中所有可用的主题,请查看主题中的主题名称列。 Pub/Sub 触发器配置面板将自动使用变量填充触发器输出字段以保存 Pub/Sub 消息。
添加并配置“数据映射”任务
数据映射任务有助于从 Pub/Sub 通知中提取相关变量。它将 Pub/Sub 消息 JSON 文件作为输入,并提取变量作为输出。
如需配置数据映射任务,请执行以下操作:
选择任务以显示可用任务的列表。
点击数据映射元素,并将其放置到集成编辑器中。
点击设计器上的数据映射任务以打开任务的配置窗格。
如需添加从 Pub/Sub 触发器到数据映射的边缘连接,请将指针悬停在 Pub/Sub 触发器上的控制点上,然后将线条拖动到数据映射任务上的控制点。边缘表示从 Pub/Sub 触发器到数据映射任务的控制流。
点击打开数据映射编辑器。 借助数据映射编辑器,您可以使用可用的转换函数将输入变量映射为所选的输出变量。然后,输出可用作任何其他集成任务或触发器的变量。如需详细了解 Application Integration 中的变量,请参阅变量。
在本教程中,请按照以下步骤使用
CloudPubSubMessage
作为输入来创建映射:- 展开变量列表中的
CloudPubSubMessage
JSON 变量,然后将CloudPubSubMessage.data
变量拖动到第一个输入行。 - 如需创建一个新变量来存放转换后的数据的值,请点击输出列中的第一行。然后,执行以下操作:
- 在名称字段中,输入
message_data
。 - 在 Variable Type(变量类型)列表中,选择 Output from integration(集成输出)。
- 从数据类型列表中选择字符串。
- 点击创建。
message_data
变量会显示在输出中。
- 在名称字段中,输入
- 将
CloudPubSubMessage.attributes
变量从 Variables 列表拖动到“输入”列中的第二行。 点击输出列中的第二行,以创建一个新的输出变量来存放包含集群属性的 JSON 载荷的值。填写以下字段:
- 在名称字段中,输入
attributes
。 - 在变量类型列表中,选择无。
- 从数据类型列表中选择 JSON。
从 JSON 架构选项中选择输入 JSON 架构,然后粘贴以下载荷:
{ "$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" } } }
点击创建。
attributes
变量会显示在输出中。确保 attributes 变量如下所示:
- 在名称字段中,输入
点击输入列中的第三行,然后从变量窗格中选择
attributes.cluster_name
。您可能需要开始输入属性,才能看到在前一步中输入的架构中定义的所有 5 个属性。点击输出列中的相应行,以创建一个新的输出变量,用于存储集群名称属性的值。填写以下字段:
- 在名称字段中,输入
cluster_name
。 - 在 Variable Type(变量类型)列表中,选择 Output from integration(集成输出)。
- 从数据类型列表中选择字符串。
- 点击创建。
cluster_name
变量会显示在输出中。
- 在名称字段中,输入
针对
project_id
、cluster_location
、type_url
和payload
重复步骤 e 和 f。映射完成后,关闭数据映射编辑器。所有更改都将自动保存。
- 展开变量列表中的
添加并配置“数据转换器(脚本)”任务
数据转换器任务会将从数据映射任务中提取的变量作为输入,并将其转换为消息正文供最终用户使用。
如需配置数据转换器任务,请执行以下操作:
- 选择任务以显示可用任务的列表。
- 点击数据转换器(脚本)元素,并将其放置到集成编辑器中。
- 点击设计器上的数据转换器任务,以打开该任务的配置窗格。
- 如需添加从数据映射任务到数据转换器任务的边缘连接,请将指针悬停在数据映射上的控制点上,然后将线条拖动到数据转换器任务上的控制点。边缘表示从数据映射任务到数据转换器任务的控制流。
点击打开数据转换器编辑器。借助数据转换器编辑器任务,您可以编写、修改和评估自定义 Jsonnet 模板,以便在集成中执行数据映射。然后,输出可用作任何其他集成任务或触发器的变量。如需详细了解此转换器任务,请参阅数据转换器任务。在本快速入门中,请按照以下步骤创建脚本:
点击变量左侧面板中的
Create。此时,右侧会打开一个创建变量面板。填写以下字段:- 名称:输入
full_message
。 - 在变量类型下拉框中选择
Output from integration
。 - 在数据类型下拉框中选择
String
。 - 点击创建以创建变量并关闭窗格。 新的
full_message
变量将显示在变量列表中。
- 名称:输入
选择脚本。
从集群发送通知时,请将以下示例脚本用作消息正文的模板:
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))}
映射完成后,关闭数据映射编辑器。所有更改都将自动保存。
添加并配置“发送电子邮件”任务
如需配置“发送电子邮件”任务,请执行以下操作:
- 在集成编辑器中选择任务以显示可用任务列表。
- 点击发送电子邮件元素,并将其放入集成编辑器中。
- 如需添加从数据转换器任务到“发送电子邮件”任务的边缘连接,请将光标悬停在数据转换器任务上的控制点上,然后将线条拖到“发送电子邮件”任务上的控制点。边缘表示从“数据转换器”任务到“发送电子邮件”任务的控制流。
- 点击设计器上的发送电子邮件元素以打开任务的配置窗格。设置以下属性:
- 收件人:输入电子邮件地址。您将使用此电子邮件来确认集成已成功完成。
- 主题:输入
GKE Notifications
。 - 纯文本正文:选择之前在数据转换器任务中创建的
full_message
变量。 - 其余选项可以保留默认配置。
系统会自动保存您对属性的更改,并且您的画布应如下所示:
测试集成
如需测试新的集成,请转到集成图表顶部的导航栏,然后点击测试。系统会在右侧打开一个面板。您可以在添加 JSON 值部分中使用以下 Pub/Sub 消息示例:
{
"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"
}
}
点击 Test Integration 按钮后,系统会向您在“发送电子邮件”任务中配置的电子邮件地址发送电子邮件。
发布集成
成功测试此集成后,点击集成的发布以开始处理消息。
您只能修改 DRAFT
版本的集成,并且只能执行 ACTIVE
版本的集成。如果您想修改集成,请点击集成设计器页面上的启用修改,然后创建草稿版本。如需了解详情,请参阅集成修改锁定。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。
删除项目
- 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.