メールで通知を受け取るようにクラスタを構成する

このチュートリアルでは、Application Integration を構成し、Google Kubernetes Engine(GKE)のクラスタ通知をメールで受信する方法について説明します。

GKE クラスタから通知を受信する既存のトピックをリッスンするための、Pub/Sub トリガーを含む統合を作成します。次に、データ マッピング タスクとデータ変換タスクを使用して Pub/Sub メッセージを変換し、書式なしテキストのメール本文を作成します。

GKE クラスタのクラスタ通知を設定する

Pub/Sub を使用して GKE クラスタに関する通知を受信するには、Pub/Sub を介してクラスタ通知を受信するをご覧ください。

新しい統合を作成する

新しい統合を作成するには、次の操作を行います。

  1. Google Cloud コンソールで [Application Integration] ページに移動します。

    [Application Integration] に移動

  2. ナビゲーション メニューで [統合] をクリックします。[統合] のページが表示されます。

  3. [Create integration] をクリックします。

  4. [Integration name] に作成する統合の名前を入力します。

  5. 複数のリージョンが有効になっている場合は、統合のリージョンを選択するためのプルダウン オプションが表示されます。有効にしたリージョンが 1 つだけの場合、そのリージョンがデフォルトになり、プルダウンは表示されません。

    注: [リージョン] プルダウンには、Google Cloud プロジェクトにプロビジョニングされたリージョンのみが表示されます。新しいリージョンをプロビジョニングするには、ボックスの下部にある [Enable Region] をクリックします。

  6. [作成] をクリックして統合エディタを開きます。

Pub/Sub トリガーを追加して構成する

統合に Pub/Sub トリガーを追加する手順は次のとおりです。

  1. 統合エディタで [トリガー] を選択し、使用可能なトリガーのリストを表示します。

  2. [Pub/Sub] トリガー要素をクリックしてデザイナーに配置します。

  3. 統合エディタの [Pub/Sub トリガー] 要素をクリックして、トリガー構成ペインを表示します。

  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] トリガー構成ペインの [Trigger Output] フィールドに、Pub/Sub メッセージを保持する変数が自動的に入力されます。

データ マッピング タスクを追加して構成する

データ マッピング タスクは、Pub/Sub 通知から関連する変数を抽出するうえで役立ちます。Pub/Sub メッセージ JSON ファイルを入力として受け取り、変数を出力として抽出します。

データ マッピング タスクを構成するには:

  1. [タスク] を選択して、使用可能なタスクのリストを表示します。

  2. 統合エディタで [データ マッピング] 要素をクリックして配置します。

  3. デザイナーの [データ マッピング] タスクをクリックして、タスクの構成ペインを開きます。

  4. Pub/Sub トリガーからデータ マッピングにエッジ接続を追加するには、Pub/Sub トリガーのコントロール ポイントにポインタを合わせ、データ マッピング タスクのコントロール ポイントまで線を引きます。エッジは、Pub/Sub トリガーからデータ マッピング タスクへの制御フローを示します。

  5. [Open Data Mapping Editor] をクリックします。Data Mapping Editor を使用すると、使用可能な変換関数を使用して、入力変数を目的の出力変数にマッピングできます。出力は、他の統合タスクまたはトリガーの変数として使用できます。Application Integration の変数の詳細については、変数をご覧ください。

    このチュートリアルは、次のように、CloudPubSubMessage を入力としてマッピングを作成します。

    1. [変数] リストで CloudPubSubMessage JSON 変数を開き、CloudPubSubMessage.data 変数を最初の [入力] 行にドラッグします。
    2. 変換されたデータの値を保持する新しい出力変数を作成するには、[出力] 列の最初の行をクリックします。次に、以下の操作を行います。
      1. [名前] フィールドに「message_data」と入力します。
      2. [変数タイプ] のリストから [Output from integration] を選択します。
      3. [データ型] のリストから [文字列] を選択します。
      4. [作成] をクリックします。message_data 変数が [出力] に表示されます。
    3. CloudPubSubMessage.attributes 変数を、[変数] リストから [入力] 列の 2 番目の行にドラッグします。
    4. [出力] 列の 2 番目の行をクリックして、クラスタ属性を含む JSON ペイロードの値を保持する新しい出力変数を作成します。次のフィールドに値を入力します。

      1. [名前] フィールドに「attributes」と入力します。
      2. [変数タイプ] のリストから [なし] を選択します。
      3. [データ型] リストから [JSON] を選択します。
      4. [Enter a JSON schema] から [JSON schema options] を選択し、次のペイロードを貼り付けます。

        {
          "$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. [入力] 列の 3 番目の行をクリックし、[変数] ペインから attributes.cluster_name を選択します。前の手順で入力したスキーマで定義された 5 つの属性をすべて表示するには、「attributes」と入力する必要があります。

    6. [出力] 列の対応する行をクリックして、クラスタ名属性の値を保持する新しい出力変数を作成します。次のフィールドに値を入力します。

      1. [名前] フィールドに「cluster_name」と入力します。
      2. [変数タイプ] のリストから [Output from integration] を選択します。
      3. [データ型] のリストから [文字列] を選択します。
      4. [作成] をクリックします。cluster_name 変数が [出力] に表示されます。
    7. project_idcluster_locationtype_urlpayload に対して、手順 ef を繰り返します。

    8. マッピングが完了したら、データ マッピング エディタを閉じます。変更は自動的に保存されます。

Data Transformer(スクリプト)タスクを追加して構成する

Data Transformer タスクは、データ マッピング タスクから抽出された変数を入力として受け取り、エンドユーザーが使用できるメッセージ本文に変換します。

Data Transformer タスクを構成するには:

  1. [タスク] を選択して、使用可能なタスクのリストを表示します。
  2. [Data Transformer (Script)] 要素をクリックして統合エディタに配置します。
  3. デザイナーの [Data Transformer] タスクをクリックして、タスクの構成ペインを開きます。
  4. データ マッピング タスクからデータ変換タスクにエッジ接続を追加するには、データ マッピングのコントロール ポイントにポインタを合わせ、データ変換タスクのコントロール ポイントに線を引きます。エッジは、データ マッピング タスクからデータ変換タスクへの制御フローを意味します。
  5. [Open Data Transformer Editor] をクリックします。Data Transformer Editor を使用すると、カスタム 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. Body in Plain Text: データ マッピング タスクで前に作成した 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 バージョンのみを実行できます。統合を編集する場合は、統合デザイナー ページで [Enable Editing] をクリックし、下書きバージョンを作成します。詳細については、統合の編集ロックをご覧ください。