すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:EventBridgeを使用してKnativeのイベントソースを設定する

最終更新日:Nov 22, 2024

EventBridgeは、Knativeで本番向けのイベント駆動型アプリケーションの開発に役立ちます。 EventBridgeを使用して、イベントバス、ルール、およびターゲットを設定できます。 イベントをフィルタリングおよび変換した後、EventBridgeは、イベントを消費するためにKnativeサービスまたは関数の実行をトリガーするイベントを生成します。 これにより、オンデマンドでリソースを使用できます。

前提条件

  • EventingおよびKafkaコンポーネントはKnative用にデプロイされます。 詳細については、「Knativeコンポーネントのデプロイ」をご参照ください。

  • ossutilがインストールされています。 詳細については、「ossutilのインストール」をご参照ください。

  • EventBridgeがアクティブになり、EventBridgeコンソールを使用する権限が付与されます。 詳細については、「EventBridgeの有効化とRAMユーザーへの権限付与」をご参照ください。

    EventBridgeは、Alibaba Cloudが提供するサーバーレスイベントバスサービスです。 EventBridgeは、他のAlibaba Cloudサービス、カスタムアプリケーション、およびSaaS (software-as-a-service) アプリケーションから、標準的かつ集中化された方法でアクセスできます。 さらに、EventBridgeは、標準のCloudEvents 1.0仕様に基づいて、これらのサービスとアプリケーション間でイベントをルーティングできます。 EventBridgeを使用して、疎結合および分散型のイベント駆動型アーキテクチャを構築できます。

機能紹介

EventBridgeは、さまざまなイベントソースをサポートしています。 イベントバス、ルール、ターゲットを設定して、イベントをフィルタリング、変換、配信できます。 EventBridgeを使用してKnativeサービスをトリガーしてイベントを消費することで、オンデマンドでリソースを使用できます。 次の図はアーキテクチャを示しています。

説明

イベントソースとしてObject Storage Service (OSS) をEventBridgeに接続できます。 イベントソースとしてOSSをEventBridgeに接続する方法の詳細については、「OSSイベント」をご参照ください。

image

手順1: Knativeサービスの作成

このセクションでは、イベント表示という名前のKnativeサービスを例として使用します。 サービスは、受信したすべてのイベントを自動的に記録します。

  1. event-display.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、Knative Serviceを作成するために使用されます。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: event-display
      namespace: default
    spec:
      template:
        spec:
          containers:
          - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/event-display:20230207194118_3874dbd
    kubectl apply -f event-display.yaml
  2. 次のコマンドを実行して、Knativeサービスがデプロイされているかどうかを確認します。

    kubectl get ksvc

    期待される出力:

    NAME            URL                                        LATESTCREATED         LATESTREADY           READY   REASON
    event-display   http://event-display.default.example.com   event-display-00001   event-display-00001   True    
  3. Knativeサービスのドメイン名とゲートウェイアドレスを取得します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[アプリケーション] > [ネイティブ] を選択します。

    3. Knativeページで、[サービス] タブをクリックし、Knativeサービスのデフォルトのドメイン名とゲートウェイアドレスを取得します。

ステップ2: 接続とAPI宛先の設定

  1. EventBridgeコンソールにログインします。 左側のナビゲーションウィンドウで、[Integration Center] > [API Destination] を選択します。

  2. 上部のナビゲーションバーで、クラスターがデプロイされているリージョンを選択します。

  3. [接続設定] タブをクリックします。 [作成] をクリックします。 [接続設定の作成] パネルで、接続の名前と説明を指定し、[認証][なし] に設定し、[ネットワーク][インターネット] に設定して、[OK] をクリックします。

  4. [APIの宛先] タブをクリックします。 [作成] をクリックします。 [基本情報] セクションで、[メソッド][カスタム] に設定し、API宛先の名前説明を指定します。

  5. [API設定] セクションで、URLステップ3で取得したKnativeゲートウェイアドレス (http:// 8.141.XX.XX.XXなど) に設定し、HTTPメソッドPOSTに設定します。

    説明

    Application Load Balancer (ALB) ゲートウェイを使用する場合は、ALBインスタンスのドメイン名にURLを設定します。

  6. [接続設定] セクションで、[既存の接続の選択] をクリックし、既存の接続を選択し、[OK] をクリックします。

ステップ3: ルールを作成する

  1. EventBridgeコンソールにログインします。 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。

  2. [イベントバス] ページで、[デフォルト] イベントを選択し、[アクション] 列の [イベントルール] をクリックします。 [イベントルール] ページで、[ルールの作成] をクリックします。

  3. [基本情報の設定] ウィザードページで、ルールの名前と説明を指定し、[次のステップ] をクリックします。

  4. [イベントパターンの設定] ウィザードページで、[イベントソース]acs.ossに、[イベントタイプ]oss:ObjectCreated:PutObjectに設定し、[次のステップ] をクリックします。

  5. [ターゲットの設定] ウィザードページで、パラメーターを設定し、[作成] をクリックします。

    パラメーター

    説明

    サービスタイプ

    [API宛先によるトリガー] を選択します。

    移動方法

    [既存のアイテムを使用] を選択し、ステップ2で作成したAPIの宛先を選択します。

    HTTPパラメータ

    EventBridgeがイベントをKnative Serviceに配信するときに渡すパラメーターキーと値を指定します。

    1. [ヘッダー] タブで、[キー] タイプを [固定値] に、キーを [ホスト] に設定します。 次に、[値] タイプを [固定値] に設定し、値をステップ4で取得したKnative Serviceドメイン名に設定します。

    2. [本文] タブをクリックします。 [生データ] を選択します。 [パラメーター] コードエディターに { "data": "$.data"}[テンプレート] コードエディターに { "data": ${data}} と入力します。 コードエディターの下にある [JSON (application/json)] を選択します。 イベントの詳細については、「概要」をご参照ください。

手順4: EventBridgeがKnativeサービスをトリガーしてイベントを消費できるかどうかを確認する

次の手順を実行する前に、ossutilをインストールする必要があります。

  1. 次のコマンドを実行して、ファイルをOSSにアップロードします。

    説明

    OSSバケットとEventBridgeは同じリージョンにデプロイする必要があります。

    ossutil cp <File name> oss://<Bucket name>

    ファイルがアップロードされた後、EventBridgeはイベントを消費するためにKnativeサービスをトリガーします。

  2. イベントトレースを表示します。

    1. EventBridgeコンソールにログインします。 左側のナビゲーションウィンドウで、[イベントバス] をクリックします。

    2. [イベントバス] ページで、[デフォルト] イベントを選択し、[アクション] 列の [イベントトラッキング] をクリックします。 [時間範囲でクエリ] タブで、[時間範囲][過去1時間] に設定します。 [クエリ] をクリックします。

    3. [イベントソース][OSS] に、[イベントタイプ][オブジェクトの配置] に設定し、対応するイベントの [操作] 列の [イベントトレース] をクリックします。

      image.png

      [イベントトレース] ページで、イベントが配信されたかどうかを確認できます。

  3. Knativeサービスがイベントを消費するかどうかを確認します。

    1. 次のコマンドを実行して、Knativeサービスがイベントを消費するかどうかを確認します。

      kubectl get  pod

      期待される出力:

      NAME                                              READY   STATUS    RESTARTS         AGE
      event-display-00001-deployment-56cc79****-z2vhv   2/2     Running   0                7s
    2. 次のコマンドを実行して、イベントのKnative Serviceレコードを表示します。

      kubectl logs event-display-00001-deployment-56cc79****-z2vhv user-container

      期待される出力:

      Defaulted container "user-container" out of: user-container, queue-proxy
      {
      "data":{"eventVersion":"1.0","responseElements":{"requestId":"6524C9F5F326DB333575119B"},"eventSource":"acs:oss","eventTime":"2023-10-10T03:50:13.000Z","requestParameters":{"sourceIPAddress":"101.132.XX.XX"},"eventName":"ObjectCreated:PutObject","userIdentity":{"principalId":"203097492760048007"},"region":"cn-beijing","oss":{"bucket":{"name":"ossutil-demo-liu","arn":"acs:oss:cn-beijing:1159648454668874:ossutil-demo-liu","virtualBucket":"","ownerIdentity":"1159648454668874"},"ossSchemaVersion":"1.0","object":{"size":603050,"objectMeta":{"mimeType":"text/markdown; charset=utf-8"},"deltaSize":0,"eTag":"3298F4DC29D2A0578088FF5810C210B3","key":"RELEASENOTES.md"}}}

    出力は、KnativeサービスがOSSアップロードイベントを消費および記録することを示します。 これは、EventBridgeがKnativeサービスを正常にトリガーしてイベントを消費することを意味します。

関連ドキュメント

他のイベントソースを使用してイベント駆動機能を有効にする方法の詳細については、「KnativeでのGitHubイベントの使用」をご参照ください。