このチュートリアルでは、Google Kubernetes Engine(GKE)のクラスタ通知をメールで受信するように アプリケーション統合を構成する方法について説明します。
Pub/Sub トリガーを含む統合を作成して、GKE クラスタから通知を受信する既存のトピックをリッスンします。次に、データ マッピング タスクと Data Transformer タスクを使用して Pub/Sub メッセージを変換し、プレーンテキストのメール本文を作成します。
目標
- GKE から外部通知を受信して変換するアプリケーション インテグレーション アプリケーションを作成します。
- Pub/Sub 通知をメールに送信する Send Email タスクを作成します。
料金
このドキュメントでは、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 編集者(
roles/pubsub.editor
) -
Application Integration 編集者 (
roles/integrations.editor
)
GKE クラスタのクラスタ通知を設定する
Pub/Sub を使用して GKE クラスタに関する通知を受信するには、クラスタ通知を受信するをご覧ください。
新しい統合を作成する
新しい統合を作成するには、次の手順を行います。
Google Cloud コンソールで [Application Integration] ページに移動します。
ナビゲーション メニューで [統合] をクリックします。[Integrations] ページが表示されます。
[統合を作成] をクリックします。
[Integration name] に、作成する統合の名前を入力します。
複数のリージョンが有効になっている場合は、統合のリージョンを選択するためのプルダウン オプションが表示されます。有効にしたリージョンが 1 つだけの場合、そのリージョンがデフォルトになり、プルダウンは表示されません。
注: [リージョン] プルダウンには、Google Cloud プロジェクトにプロビジョニングされたリージョンのみが表示されます。新しいリージョンをプロビジョニングするには、ボックスの下部にある [リージョンを有効にする] をクリックします。
[作成] をクリックして統合エディタを開きます。
Pub/Sub トリガーを追加して構成する
統合に Pub/Sub トリガーを追加する手順は次のとおりです。
統合エディタで [Triggers] を選択し、使用可能なトリガーのリストを表示します。
[Pub/Sub] トリガー要素をクリックして、デザイナーに配置します。
統合エディタの [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] トリガーの構成ペインの [Trigger Output] フィールドに、Pub/Sub メッセージを保持する変数が自動的に入力されます。
データ マッピング タスクを追加して構成する
データ マッピング タスクは、Pub/Sub 通知から関連する変数を抽出するために役立ちます。Pub/Sub メッセージ JSON ファイルを入力として受け取り、変数を出力として抽出します。
データ マッピング タスクを構成するには:
[Tasks] を選択して、使用可能なタスクのリストを表示します。
統合エディタで [Data Mapping] 要素をクリックして配置します。
デザイナーで [Data Mapping] タスクをクリックして、タスクの構成ペインを開きます。
Pub/Sub トリガーからデータ マッピングにエッジ接続を追加するには、Pub/Sub トリガーのコントロール ポイントにポインタを合わせ、データ マッピング タスクのコントロール ポイントまで線をドラッグします。エッジは、Pub/Sub トリガーからデータ マッピング タスクへの制御フローを意味します。
[Open Data Mapping Editor] をクリックします。データ マッピング エディタを使用すると、使用可能な変換関数を使用して、入力変数を選択した出力変数にマッピングできます。出力は、他の統合タスクまたはトリガーの変数として使用できます。Application Integration の変数の詳細については、変数をご覧ください。
このチュートリアルでは、次の手順で
CloudPubSubMessage
を入力として使用し、マッピングを作成します。- [Variables] リストで
CloudPubSubMessage
JSON 変数を開き、CloudPubSubMessage.data
変数を最初の [Input] 行にドラッグします。 - 変換されたデータの値を保持する新しい出力変数を作成するには、[出力] 列の最初の行をクリックします。次に、以下の操作を行います。
- [名前] フィールドに「
message_data
」と入力します。 - [変数の型] のリストから [統合からの出力] を選択します。
- [データの種類] リストで [文字列] を選択します。
- [作成] をクリックします。
message_data
変数が [出力] に表示されます。
- [名前] フィールドに「
CloudPubSubMessage.attributes
変数を [変数] リストから [入力] 列の 2 番目の行にドラッグします。[出力] 列の 2 番目の行をクリックして、クラスタ属性を含む 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 変数が次のようになっていることを確認します。
- [名前] フィールドに「
[入力] 列の 3 行目をクリックし、[変数] ペインから
attributes.cluster_name
を選択します。前の手順で入力したスキーマから定義された 5 つの属性をすべて表示するには、[attributes] と入力する必要があります。[Output] 列の対応する行をクリックして、クラスタ名属性の値を保持する新しい出力変数を作成します。次のフィールドに入力します。
- [名前] フィールドに「
cluster_name
」と入力します。 - [変数の型] のリストから [統合からの出力] を選択します。
- [データの種類] リストで [文字列] を選択します。
- [作成] をクリックします。
cluster_name
変数が [出力] に表示されます。
- [名前] フィールドに「
project_id
、cluster_location
、type_url
、payload
について、手順 e と f を繰り返します。マッピングが完了したら、データ マッピング エディタを閉じます。変更は自動的に保存されます。
- [Variables] リストで
Data Transformer(スクリプト)タスクを追加して構成する
Data Transformer タスクは、データ マッピング タスクから抽出された変数を入力として受け取り、エンドユーザーが使用できるメッセージ本文に変換します。
Data Transformer タスクを構成するには:
- [Tasks] を選択して、使用可能なタスクのリストを表示します。
- [Data Transformer (Script)] 要素をクリックして、統合エディタに配置します。
- デザイナーで [Data Transformer] タスクをクリックして、タスクの構成ペインを開きます。
- データ マッピング タスクからデータ変換タスクにエッジ接続を追加するには、データ マッピングのコントロール ポイントにポインタを合わせ、データ変換タスクのコントロール ポイントに線をドラッグします。エッジは、データ マッピング タスクからデータ変換タスクへの制御フローを意味します。
[Open Data Transformer Editor] をクリックします。Data Transformer エディタを使用すると、カスタム Jsonnet テンプレートを作成、編集、評価して、統合でデータ マッピングを実行できます。出力は、他の統合タスクまたはトリガーの変数として使用できます。この変換タスクの詳細については、Data Transformer タスクをご覧ください。このクイックスタートでは、次の手順でスクリプトを作成します。
[変数] の左側のパネルで
[作成] をクリックします。右側に [変数の作成] パネルが開きます。次のフィールドに入力します。- 名前: 「
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 タスクを構成するには:
- 統合エディタで [タスク] を選択して、使用可能なタスクのリストを表示します。
- 統合エディタで [Send Email] 要素をクリックして配置します。
- Data Transformer タスクからメール送信タスクにエッジ接続を追加するには、Data Transformer タスクのコントロール ポイントにポインタを合わせ、メール送信タスクのコントロール ポイントに線をドラッグします。エッジは、Data Transformer タスクからメール送信タスクへの制御フローを意味します。
- デザイナーで [Send Email] 要素をクリックして、タスクの構成ペインを開きます。次のプロパティを設定します。
- 送信先: メールアドレスを入力します。このメールアドレスを使用して、統合が正常に完了したことを確認します。
- 件名: 「
GKE Notifications
」と入力します。 - Body in Plain Text: データ変換タスクで前に作成した
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.
リソースを個別に削除する
次のステップ
- クラスタ通知のタイプを確認する。
- Pub/Sub のドキュメントを確認する。