配置集群以通过电子邮件接收通知

本教程介绍如何配置 Application Integration 以通过电子邮件接收 Google Kubernetes Engine (GKE) 集群通知

您可以创建与 Pub/Sub 触发器的集成,以监听接收来自 GKE 集群的通知的现有主题。然后,您可以使用“数据映射”和“数据转换器”任务来转换 Pub/Sub 消息并构建纯文本的电子邮件正文。

为 GKE 集群设置集群通知

如需使用 Pub/Sub 接收有关 GKE 集群的通知,请参阅通过 Pub/Sub 接收集群通知

创建新集成

如需创建新的集成,请执行以下步骤:

  1. 前往 Google Cloud 控制台中的 Application Integration 页面。

    转到 Application Integration

  2. 在导航菜单中,点击集成。此时会显示集成页面。

  3. 点击创建集成

  4. 集成名称中,输入您要创建的集成的名称。

  5. 如果您已启用多个区域,会显示一个下拉菜单选项,供您为集成选择区域。如果仅启用了一个区域,则会默认使用该区域,并且不会显示下拉菜单。

    注意:区域下拉菜单仅列出您的Google Cloud 项目中预配的区域。如需预配新区域,请点击框底部显示的启用区域

  6. 点击创建以打开集成编辑器。

添加并配置 Pub/Sub 触发器

如需向集成添加 Pub/Sub 触发器,请按以下步骤操作:

  1. 在集成编辑器中,选择触发器以显示可用触发器列表。

  2. 点击 Pub/Sub 触发器元素,并将其放置在设计器中。

  3. 点击集成编辑器中的 Pub/Sub 触发器 (Cloud Pub/Sub Trigger) 元素以查看触发器配置窗格。

  4. 按照以下格式在 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 文件作为输入,并提取变量作为输出。

如需配置数据映射任务,请执行以下操作:

  1. 选择任务以显示可用任务的列表。

  2. 点击数据映射元素,并将其放置到集成编辑器中。

  3. 点击设计器上的数据映射任务以打开任务的配置窗格。

  4. 如需添加从 Pub/Sub 触发器到数据映射的边缘连接,请将指针悬停在 Pub/Sub 触发器上的控制点上,然后将线条拖到“数据映射”任务上的控制点。边缘表示从 Pub/Sub 触发器到“数据映射”任务的控制流。

  5. 点击打开数据映射编辑器。 借助数据映射编辑器,您可以使用可用的转换函数将输入变量映射为所选的输出变量。然后,输出可用作任何其他集成任务或触发器的变量。如需详细了解 Application Integration 中的变量,请参阅变量

    在本教程中,请按照以下步骤使用 CloudPubSubMessage 作为输入来创建映射:

    1. 展开变量列表中的 CloudPubSubMessage JSON 变量,然后将 CloudPubSubMessage.data 变量拖动到第一个输入行。
    2. 如需创建一个新变量来存放转换后数据的值,请点击输出列中的第一行。然后,执行以下操作:
      1. 名称字段中,输入 message_data
      2. 变量类型列表中,选择集成输出
      3. 数据类型列表中,选择字符串
      4. 点击创建message_data 变量会显示在输出中。
    3. CloudPubSubMessage.attributes 变量从 Variables 列表拖动到“输入”列中的第二行。
    4. 点击输出列中的第二行,以创建一个新的输出变量来存放包含集群属性的 JSON 载荷的值。填写以下字段:

      1. 名称字段中,输入 attributes
      2. 变量类型列表中,选择
      3. 数据类型列表中,选择 JSON
      4. 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"
            }
          }
        }
        
      5. 点击创建attributes 变量会显示在输出中。确保 attributes 变量如下所示:

        Application Integration 局部变量

    5. 点击输入列中的第三行,然后从变量窗格中选择 attributes.cluster_name。您可能需要开始输入 attributes,才能看到在上一步中输入的架构中定义的所有 5 个属性。

    6. 点击输出列中的相应行,以创建一个新的输出变量来存放集群名称属性的值。填写以下字段:

      1. 名称字段中,输入 cluster_name
      2. 变量类型列表中,选择集成输出
      3. 数据类型列表中,选择字符串
      4. 点击创建cluster_name 变量会显示在输出中。
    7. 针对 project_idcluster_locationtype_urlpayload 重复步骤 ef

    8. 映射完成后,关闭数据映射编辑器。所有更改都将自动保存。

添加并配置“数据转换器(脚本)”任务

“数据转换器”任务会将从“数据映射”任务中提取的变量作为输入,并将其转换为电子邮件正文,以供最终用户使用。

如需配置“数据转换器”任务,请执行以下操作:

  1. 选择任务以显示可用任务的列表。
  2. 点击数据转换器(脚本)元素,并将其放置到集成编辑器中。
  3. 点击设计器上的数据转换器任务以打开任务的配置窗格。
  4. 如需添加从“数据映射”任务到“数据转换器”任务的边缘连接,请将指针悬停在“数据映射”上的控制点上,然后将线条拖到“数据转换器”任务上的控制点。边缘表示从“数据映射”任务到“数据转换器”任务的控制流。
  5. 点击打开数据转换器编辑器。借助数据转换器编辑器任务,您可以编写、修改和评估自定义 Jsonnet 模板,以便在集成中执行数据映射。然后,输出可用作任何其他集成任务或触发器的变量。如需详细了解此转换器任务,请参阅数据转换器任务。在本快速入门中,请按照以下步骤创建脚本:

    1. 点击变量左侧面板中的 创建。此时,右侧会打开一个创建变量面板。填写以下字段:

      • 名称:输入 full_message
      • 变量类型下拉框中选择 Output from integration
      • 数据类型下拉框中选择 String
      • 点击创建以创建变量并关闭窗格。 新的 full_message 变量将显示在变量列表中。
    2. 选择脚本

    3. 从集群发送通知时,请将以下示例脚本用作电子邮件正文的模板:

      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))}
      
    4. 映射完成后,关闭数据映射编辑器。所有更改都将自动保存。

添加并配置“发送电子邮件”任务

如需配置“发送电子邮件”任务,请执行以下操作:

  1. 在集成编辑器中选择任务以显示可用任务列表。
  2. 点击发送电子邮件元素,并将其放入集成编辑器中。
  3. 如需添加从“数据转换器”任务到“发送电子邮件”任务的边缘连接,请将光标悬停在“数据转换器”任务上的控制点上,然后将线条拖到“发送电子邮件”任务上的控制点。边缘表示从“数据转换器”任务到“发送电子邮件”任务的控制流。
  4. 点击设计器上的发送电子邮件元素以打开任务的配置窗格。设置以下属性:
    1. 收件人:输入电子邮件地址。您将使用此电子邮件来确认集成已成功完成。
    2. 主题:输入 GKE Notifications
    3. 纯文本正文:选择之前在数据转换器任务中创建的 full_message 变量。
    4. 其余选项可以保留默认配置。

系统会自动保存您对属性的更改,并且您的画布应如下所示:

Application Integration 画布

测试集成

如需测试新集成,请点击集成图表顶部导航栏中的测试。右侧会打开一个面板。您可以在添加 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"
  }
}

点击测试集成按钮后,系统会向您在“发送电子邮件”任务中配置的电子邮件地址发送电子邮件。

发布集成

成功测试此集成后,点击集成的发布以开始处理消息。

您只能修改 DRAFT 版本的集成,并且只能执行 ACTIVE 版本的集成。如果您想修改集成,请点击集成设计器页面上的启用修改功能,然后创建草稿版本。如需了解详情,请参阅集成修改锁定