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

Container Compute Service:Knative での EventBridge のイベント駆動機能の使用

最終更新日:Dec 28, 2024

Knative Eventing は、外部イベントシステムからのイベントの取り込みプロセスを簡素化するイベントモデルを提供します。ACS クラスタに Knative Eventing コンポーネントをデプロイし、トリガーを作成してイベント駆動機能を有効にすることができます。イベントがアクセスされると、システム内で標準の CloudEvents 形式で転送されます。このトピックでは、EventBridge を使用して、Knative の本番環境でイベント駆動機能を提供する方法について説明します。

前提条件

  • ossutil がインストールされ、バケットが作成されていること。詳細については、ossutil のインストールバケットの作成を参照してください。

  • EventBridge がアクティブ化され、必要な権限が RAM (Resource Access Management) ユーザーに付与されていること。詳細については、EventBridge のアクティブ化と RAM ユーザーへの権限の付与を参照してください。

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

機能紹介

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

説明

オブジェクトストレージサービス (OSS) をイベントソースとして EventBridge に接続できます。OSS をイベントソースとして EventBridge に接続する方法の詳細については、OSS イベントを参照してください。

手順 1: Eventing および EventBridge コンポーネントをデプロイする

Knative は EventBridge のイベント駆動機能を提供し、Alibaba Cloud サービスのイベントソースとイベント転送をサポートしています。

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

  2. クラスタページで、管理するクラスタを見つけて、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、アプリケーション > Knative を選択します。

  3. コンポーネントタブで、Eventing および EventBridge コンポーネントをデプロイします。

    1. コンポーネントタブで、Eventing を見つけ、アクション列のデプロイをクリックします。

    2. Eventing がデプロイされた後、EventBridge を見つけ、アクション列のデプロイをクリックします。表示されるダイアログボックスで、AccessKey ID と AccessKey シークレットを入力し、[OK] をクリックします。

      AccessKey ペアの取得方法の詳細については、AccessKey ペアの作成を参照してください。

      説明

      RAM ユーザーのアカウントセキュリティを確保するために、コンソールログイン時またはコンソールでの機密操作時に二次認証のために、RAM ユーザーに多要素認証 (MFA) デバイスをバインドすることをお勧めします。MFA は、ユーザー名とパスワードに加えて保護の層を追加するセキュリティ強化機能です。詳細については、RAM ユーザーへの MFA デバイスのバインドを参照してください。

コンポーネントの ステータス列にデプロイ済みと表示されている場合、コンポーネントはデプロイされています。

手順 2: Knative サービスを作成する

このセクションでは、event-display という名前の Knative サービスを例として使用します。このサービスは、受信したすべてのイベントを自動的に記録します。次のコンテンツでは、ACK コンソールと kubectl で Knative サービスを作成する方法について説明します。

ACK コンソールの使用

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

  2. クラスタページで、管理するクラスタを見つけて、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、アプリケーション > Knative を選択します。

  3. サービスタブをクリックし、テンプレートから作成をクリックして Knative サービスを作成します。

    次のサンプルコードは例を示しています。

    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

    サービスタブで、Knative サービスの ステータス列に作成済みと表示されている場合、Knative サービスは作成されています。

kubectl

  1. event-display.yaml という名前のファイルを作成し、次のコンテンツをファイルにコピーします。このファイルは、Knative サービスの作成に使用されます。

    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: トリガーを作成する

ACK コンソールの使用

  1. Knative ページで、サービスタブをクリックし、Knative サービスの名前をクリックします。表示されるページで、トリガータブをクリックします。

  2. トリガーの作成をクリックします。構成ページで、指示に基づいてパラメータを構成します。次の表はパラメータについて説明しています。

    パラメータ

    説明

    名前

    トリガーの名前を入力します。

    my-service-trigger

    ブローカー

    EventBridge またはその他を選択できます。

    EventBridge

    イベントソース

    複数のイベントソースがサポートされています。

    OSS

    イベントタイプ

    複数のイベントタイプがサポートされています。

    oss:ActionTrail:ConsoleOperation

    トリガーが作成されると、トリガータブでトリガーを表示できます。

    image

kubectl の使用

  1. my-service-trigger.yaml という名前のファイルを作成し、次のコンテンツをファイルにコピーして、クラスタにデプロイします。このファイルは、トリガーの作成に使用されます。

    apiVersion: eventing.knative.dev/v1
    kind: Trigger
    metadata:
      name: my-service-trigger
    spec:
      broker: eventbridge-default-broker
      filter:
        attributes:
          source: acs.oss
          type: 'oss:ActionTrail:ConsoleOperation'
      subscriber:
        ref:
          apiVersion: serving.knative.dev/v1
          kind: Service
          name: helloworld-go
          namespace: default
    • broker: デフォルトのイベントバスに対応する eventbridge-default-broker に名前を設定します。

    • source: EventBridge でサポートされているイベントソースを指定します。

    • type: イベントソースのイベントタイプを指定します。複数のイベントタイプはコンマ (,) で区切ります。

    • subscriber: サブスクライブするサービスを指定します。

    kubectl apply -f my-service-trigger.yaml
  2. 次のコマンドを実行して、トリガーが作成されたかどうかを確認します。

     kubectl get triggers

    予期される出力:

    NAME                         BROKER                       SUBSCRIBER_URI                                   AGE   READY   REASON
    my-service-trigger           eventbridge-default-broker   http://helloworld-go.default.svc.cluster.local   42h   True   

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

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

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

    説明

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

    ossutil cp <ファイル名> oss://<バケット名>

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

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

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

    2. イベントバスページで、default イベントを選択し、アクション列のイベントトラッキングをクリックします。時間範囲でクエリタブで、時間範囲パラメータを構成します。クエリをクリックします。

    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 サービスレコードを表示します。

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

      予期される出力:

      {"data":{"eventVersion":"1.0","responseElements":{"requestId":"63E21F5FEE852133319101AD"},"eventSource":"acs:oss","eventTime":"2023-02-07T09:52:31.000Z","requestParameters":{"sourceIPAddress":"XX.XXX.XX.XXX"},"eventName":"ObjectCreated:PutObject","userIdentity":{"principalId":"1118324452360952"},"region":"cn-hangzhou","oss":{"bucket":{"name":"knative","arn":"acs:oss:cn-hangzhou:1581204543170042:knative","virtualBucket":"","ownerIdentity":"1581204543170042"},"ossSchemaVersion":"1.0","object":{"size":225496,"objectMeta":{"mimeType":"application/octet-stream"},"deltaSize":0,"eTag":"B350C082843DAC7E9E634193437EBA30","key":"demo.data"}}}}

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

参照

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