本教學課程說明如何設定 Application Integration,透過電子郵件接收 Google Kubernetes Engine (GKE) 叢集通知。
您可以建立具有 Pub/Sub 觸發條件的整合作業,監聽接收 GKE 叢集通知的現有主題。接著,您可以使用「資料對應」和「資料轉換器」工作轉換 Pub/Sub 訊息,並建立純文字電子郵件內文。
目標
- 建立 Application Integration 應用程式,接收及轉換來自 GKE 的外部通知。
- 撰寫「傳送電子郵件」工作,將 Pub/Sub 通知傳送至電子郵件。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
- 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.
- 透過 Pub/Sub 啟用接收 GKE 叢集通知。
- 如果您是第一次在專案中使用 Application Integration,請務必設定 Application Integration。
-
Pub/Sub 編輯者 (
roles/pubsub.editor
) -
應用程式整合編輯器 (
roles/integrations.editor
)
必要的角色
為確保 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 接收叢集通知」一文的說明操作。
建立新的整合
如要建立新的整合,請按照下列步驟操作:
前往 Google Cloud 控制台的「Application Integration」頁面。
在導覽選單中,按一下「整合」。系統隨即會顯示「Integrations」頁面。
按一下「建立整合」。
在「整合名稱」中,輸入要建立的整合名稱。
如果啟用多個區域,系統會顯示下拉式選項,供您選取整合的區域。如果只啟用一個區域,系統會預設為該區域,且不會顯示下拉式選單。
注意:「區域」下拉式選單只會列出Google Cloud 專案中佈建的區域。如要佈建新區域,請按一下方塊底部的「啟用區域」。
按一下「建立」,開啟整合編輯器。
新增及設定 Pub/Sub 觸發條件
如要將 Pub/Sub 觸發條件新增至整合服務,請按照下列步驟操作:
在整合編輯器中選取「觸發條件」,即可顯示可用觸發條件清單。
按一下「Pub/Sub」觸發條件元素,並放置到設計工具中。
在整合服務編輯器中,按一下「Pub/Sub trigger」(Pub/Sub 觸發條件) 元素,即可查看觸發條件設定窗格。
在「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 檔案做為輸入內容,並擷取變數做為輸出內容。
如要設定資料對應工作,請按照下列步驟操作:
選取「工作」,系統隨即會顯示可用工作的清單。
在整合服務編輯器中,按一下並放置「資料對應」元素。
在設計工具中,按一下「資料對應」工作,開啟該工作的設定窗格。
如要從 Pub/Sub 觸發條件新增邊緣連線至資料對應,請將指標懸停在 Pub/Sub 觸發條件的控制點上,然後將線條拖曳至資料對應工作的控制點。邊緣表示從 Pub/Sub 觸發條件到資料對應工作的控制流程。
按一下「開啟資料對應編輯器」。您可以使用資料對應編輯器,透過可用的轉換函式,將輸入變數對應至所選輸出變數。輸出內容隨後會以變數形式提供給任何其他整合作業或觸發條件。 如要進一步瞭解應用程式整合中的變數,請參閱「變數」。
在本教學課程中,請按照下列步驟,使用
CloudPubSubMessage
做為輸入內容建立對應:- 展開「變數」清單中的
CloudPubSubMessage
JSON 變數,然後將CloudPubSubMessage.data
變數拖曳至第一個「輸入」列。 - 如要建立新的輸出變數來保存轉換後的資料值,請按一下「輸出」欄中的第一列。接著,按照下列步驟操作:
- 在「Name」(名稱) 欄位中輸入
message_data
。 - 從「變數類型」清單中選取「整合輸出」。
- 在「資料類型」清單中,選取「字串」。
- 按一下「建立」,
message_data
變數會顯示在「Output」(輸出) 中。
- 在「Name」(名稱) 欄位中輸入
- 將「變數」清單中的
CloudPubSubMessage.attributes
變數拖曳至「輸入」欄的第二列。 按一下「輸出」資料欄中的第二列,建立新的輸出變數,用來保存含有叢集屬性的 JSON 酬載值。填寫下列欄位:
- 在「Name」(名稱) 欄位中輸入
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
變數會顯示在「Output」(輸出) 中。 確認屬性變數類似於下列內容:
- 在「Name」(名稱) 欄位中輸入
按一下「輸入」欄的第三列,然後從「變數」窗格選取
attributes.cluster_name
。您可能需要開始輸入屬性,才能看到上一個步驟中輸入的結構定義所定義的所有 5 個屬性。按一下「輸出」資料欄中的對應資料列,建立新的輸出變數,用來保存叢集名稱屬性的值。填寫下列欄位:
- 在「Name」(名稱) 欄位中輸入
cluster_name
。 - 從「變數類型」清單中選取「整合輸出」。
- 在「資料類型」清單中,選取「字串」。
- 按一下「建立」,
cluster_name
變數會顯示在「Output」(輸出) 中。
- 在「Name」(名稱) 欄位中輸入
針對
project_id
、cluster_location
、type_url
和payload
重複步驟 e 和 f。完成對應後,請關閉資料對應編輯器。系統會自動儲存所有變更。
- 展開「變數」清單中的
新增及設定 Data Transformer (指令碼) 工作
「資料轉換工具」工作會將從「資料對應工具」工作擷取的變數做為輸入內容,並轉換成供使用者使用的訊息內文。
如要設定資料轉換器工作,請按照下列步驟操作:
- 選取「工作」,系統隨即會顯示可用工作的清單。
- 在整合服務編輯器中,點按並放置「Data Transformer (Script)」元素。
- 在設計工具中,按一下「資料轉換器」工作,開啟該工作的設定窗格。
- 如要從「資料對應」工作新增邊緣連線至「資料轉換器」工作,請將指標懸停在「資料對應」的控制點上,然後將線條拖曳至「資料轉換器」工作的控制點。邊緣表示從「資料對應」工作到「資料轉換器」工作的控制流程。
按一下「開啟 Data Transformer 編輯器」。您可以在資料轉換器編輯器中編寫、編輯及評估自訂 Jsonnet 範本,以便在整合作業中執行資料對應。輸出內容隨後會以變數形式提供給任何其他整合作業或觸發條件。如要進一步瞭解這項轉換器工作,請參閱「資料轉換器工作」。在本快速入門導覽課程中,請按照下列步驟建立指令碼:
按一下「變數」左側面板中的「建立」
。右側會開啟「建立變數」面板。填寫下列欄位:- 名稱:輸入
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))}
完成對應後,請關閉資料對應編輯器。系統會自動儲存所有變更。
新增並設定「Send Email」(傳送電子郵件) 任務
如要設定「傳送電子郵件」工作,請按照下列步驟操作:
- 在整合編輯器中選取「Tasks」(工作),即可顯示可用工作清單。
- 在整合服務編輯器中,按一下並放置「傳送電子郵件」元素。
- 如要從「資料轉換器」工作新增邊緣連線至「傳送電子郵件」工作,請將指標懸停在「資料轉換器」工作的控制點上,然後將線條拖曳至「傳送電子郵件」工作的控制點。邊緣表示從「資料轉換器」工作到「傳送電子郵件」工作的控制流程。
- 按一下設計工具中的「Send Email」(傳送電子郵件) 元素,開啟任務的設定窗格。設定下列屬性:
- 收件者:輸入電子郵件地址。您將使用這封電子郵件確認整合是否成功完成。
- 主旨:輸入
GKE Notifications
。 - 純文字格式的郵件內文:選取先前在「資料轉換器」工作建立的
full_message
變數。 - 其餘選項則可保留預設設定。
系統會自動儲存您對屬性所做的變更,畫布應會與下圖類似:
測試整合
如要測試新整合,請前往整合圖頂端的導覽列,然後按一下「測試」。右側隨即會開啟面板。您可以在「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 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
刪除專案
- 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.