設定叢集,透過電子郵件接收通知


本教學課程說明如何設定 Application Integration,透過電子郵件接收 Google Kubernetes Engine (GKE) 叢集通知

您可以建立具有 Pub/Sub 觸發條件的整合作業,監聽接收 GKE 叢集通知的現有主題。接著,您可以使用「資料對應」和「資料轉換器」工作轉換 Pub/Sub 訊息,並建立純文字電子郵件內文。

目標

  • 建立 Application Integration 應用程式,接收及轉換來自 GKE 的外部通知。
  • 撰寫「傳送電子郵件」工作,將 Pub/Sub 通知傳送至電子郵件。

費用

在本文件中,您會使用 Google Cloud的下列計費元件:

如要根據預測用量估算費用,請使用 Pricing Calculator

初次使用 Google Cloud 的使用者可能符合免費試用資格。

完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。

事前準備

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the GKE, Application Integration and Pub/Sub APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the GKE, Application Integration and Pub/Sub APIs.

    Enable the APIs

  8. 透過 Pub/Sub 啟用接收 GKE 叢集通知。
  9. 如果您是第一次在專案中使用 Application Integration,請務必設定 Application Integration
  10. 必要的角色

    為確保 service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com 具備設定叢集通知電子郵件通知的必要權限,請管理員在專案中將下列 IAM 角色授予 service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com :

設定 GKE 叢集的叢集通知

如要使用 Pub/Sub 接收 GKE 叢集通知,請按照「透過 Pub/Sub 接收叢集通知」一文的說明操作。

建立新的整合

如要建立新的整合,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Application Integration」頁面。

    前往「Application Integration」

  2. 在導覽選單中,按一下「整合」。系統隨即會顯示「Integrations」頁面。

  3. 按一下「建立整合」

  4. 在「整合名稱」中,輸入要建立的整合名稱。

  5. 如果啟用多個區域,系統會顯示下拉式選項,供您選取整合的區域。如果只啟用一個區域,系統會預設為該區域,且不會顯示下拉式選單。

    注意:「區域」下拉式選單只會列出Google Cloud 專案中佈建的區域。如要佈建新區域,請按一下方塊底部的「啟用區域」

  6. 按一下「建立」,開啟整合編輯器。

新增及設定 Pub/Sub 觸發條件

如要將 Pub/Sub 觸發條件新增至整合服務,請按照下列步驟操作:

  1. 在整合編輯器中選取「觸發條件」,即可顯示可用觸發條件清單。

  2. 按一下「Pub/Sub」觸發條件元素,並放置到設計工具中。

  3. 在整合服務編輯器中,按一下「Pub/Sub trigger」(Pub/Sub 觸發條件) 元素,即可查看觸發條件設定窗格。

  4. 在「Pub/Sub topic」(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」觸發條件設定窗格會自動在「Trigger Output」(觸發條件輸出) 欄位中填入變數,用於保留 Pub/Sub 訊息。

新增及設定「資料對應」工作

資料對應工作有助於從 Pub/Sub 通知中擷取相關變數。這項服務會將 Pub/Sub 訊息 JSON 檔案做為輸入內容,並擷取變數做為輸出內容。

如要設定資料對應工作,請按照下列步驟操作:

  1. 選取「工作」,系統隨即會顯示可用工作的清單。

  2. 在整合服務編輯器中,按一下並放置「資料對應」元素。

  3. 在設計工具中,按一下「資料對應」工作,開啟該工作的設定窗格。

  4. 如要從 Pub/Sub 觸發條件新增邊緣連線至資料對應,請將指標懸停在 Pub/Sub 觸發條件的控制點上,然後將線條拖曳至資料對應工作的控制點。邊緣表示從 Pub/Sub 觸發條件到資料對應工作的控制流程。

  5. 按一下「開啟資料對應編輯器」。您可以使用資料對應編輯器,透過可用的轉換函式,將輸入變數對應至所選輸出變數。輸出內容隨後會以變數形式提供給任何其他整合作業或觸發條件。 如要進一步瞭解應用程式整合中的變數,請參閱「變數」。

    在本教學課程中,請按照下列步驟,使用 CloudPubSubMessage 做為輸入內容建立對應:

    1. 展開「變數」清單中的 CloudPubSubMessage JSON 變數,然後將 CloudPubSubMessage.data 變數拖曳至第一個「輸入」列。
    2. 如要建立新的輸出變數來保存轉換後的資料值,請按一下「輸出」欄中的第一列。接著,按照下列步驟操作:
      1. 在「Name」(名稱) 欄位中輸入 message_data
      2. 從「變數類型」清單中選取「整合輸出」
      3. 在「資料類型」清單中,選取「字串」
      4. 按一下「建立」message_data 變數會顯示在「Output」(輸出) 中。
    3. 將「變數」清單中的 CloudPubSubMessage.attributes 變數拖曳至「輸入」欄的第二列。
    4. 按一下「輸出」資料欄中的第二列,建立新的輸出變數,用來保存含有叢集屬性的 JSON 酬載值。填寫下列欄位:

      1. 在「Name」(名稱) 欄位中輸入 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 變數會顯示在「Output」(輸出) 中。 確認屬性變數類似於下列內容:

        Application Integration 區域變數

    5. 按一下「輸入」欄的第三列,然後從「變數」窗格選取 attributes.cluster_name。您可能需要開始輸入屬性,才能看到上一個步驟中輸入的結構定義所定義的所有 5 個屬性。

    6. 按一下「輸出」資料欄中的對應資料列,建立新的輸出變數,用來保存叢集名稱屬性的值。填寫下列欄位:

      1. 在「Name」(名稱) 欄位中輸入 cluster_name
      2. 從「變數類型」清單中選取「整合輸出」
      3. 在「資料類型」清單中,選取「字串」
      4. 按一下「建立」cluster_name 變數會顯示在「Output」(輸出) 中。
    7. 針對 project_idcluster_locationtype_urlpayload 重複步驟 ef

    8. 完成對應後,請關閉資料對應編輯器。系統會自動儲存所有變更。

新增及設定 Data Transformer (指令碼) 工作

「資料轉換工具」工作會將從「資料對應工具」工作擷取的變數做為輸入內容,並轉換成供使用者使用的訊息內文。

如要設定資料轉換器工作,請按照下列步驟操作:

  1. 選取「工作」,系統隨即會顯示可用工作的清單。
  2. 在整合服務編輯器中,點按並放置「Data Transformer (Script)」元素。
  3. 在設計工具中,按一下「資料轉換器」工作,開啟該工作的設定窗格。
  4. 如要從「資料對應」工作新增邊緣連線至「資料轉換器」工作,請將指標懸停在「資料對應」的控制點上,然後將線條拖曳至「資料轉換器」工作的控制點。邊緣表示從「資料對應」工作到「資料轉換器」工作的控制流程。
  5. 按一下「開啟 Data Transformer 編輯器」。您可以在資料轉換器編輯器中編寫、編輯及評估自訂 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. 完成對應後,請關閉資料對應編輯器。系統會自動儲存所有變更。

新增並設定「Send Email」(傳送電子郵件) 任務

如要設定「傳送電子郵件」工作,請按照下列步驟操作:

  1. 在整合編輯器中選取「Tasks」(工作),即可顯示可用工作清單。
  2. 在整合服務編輯器中,按一下並放置「傳送電子郵件」元素。
  3. 如要從「資料轉換器」工作新增邊緣連線至「傳送電子郵件」工作,請將指標懸停在「資料轉換器」工作的控制點上,然後將線條拖曳至「傳送電子郵件」工作的控制點。邊緣表示從「資料轉換器」工作到「傳送電子郵件」工作的控制流程。
  4. 按一下設計工具中的「Send Email」(傳送電子郵件) 元素,開啟任務的設定窗格。設定下列屬性:
    1. 收件者:輸入電子郵件地址。您將使用這封電子郵件確認整合是否成功完成。
    2. 主旨:輸入 GKE Notifications
    3. 純文字格式的郵件內文:選取先前在「資料轉換器」工作建立的 full_message 變數。
    4. 其餘選項則可保留預設設定。

系統會自動儲存您對屬性所做的變更,畫布應會與下圖類似:

Application Integration 畫布

測試整合

如要測試新整合,請前往整合圖頂端的導覽列,然後按一下「測試」。右側隨即會開啟面板。您可以在「Add a json value」部分使用下列 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 版本。如要編輯整合項目,請在整合設計工具頁面按一下「啟用編輯」,然後建立草稿版本。詳情請參閱整合編輯鎖定

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。

刪除專案

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

刪除個別資源

  1. 刪除應用程式整合

  2. 刪除 Pub/Sub 主題

後續步驟