コンテンツへスキップ

RabbitMQSourceの作成

stage version

このトピックでは、RabbitMQSourceの作成方法について説明します。

前提条件

  1. Knative Eventingをインストール済みであること
  2. CertManager v1.5.4をインストール済みであること - RabbitMQ Messaging Topology Operatorとの最も簡単な統合
  3. RabbitMQ Messaging Topology Operatorをインストール済みであること - CertManagerを使用する最新リリースを推奨します
  4. 動作するRabbitMQインスタンス。RabbitMQ Cluster Operatorを使用して作成することを推奨します。`RabbitmqCluster` CRDの設定の詳細については、RabbitMQのウェブサイトを参照してください。

RabbitMQコントローラのインストール

  1. 以下のコマンドを実行して、RabbitMQSourceコントローラをインストールします。

    kubectl apply -f https://github.com/knative-extensions/eventing-rabbitmq/releases/download/knative-v1.16.0/rabbitmq-source.yaml
    
  2. `rabbitmq-controller-manager`と`rabbitmq-webhook`が実行されていることを確認します。

    kubectl get deployments.apps -n knative-sources
    

    出力例

    NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
    rabbitmq-controller-manager     1/1     1            1           3s
    rabbitmq-webhook                1/1     1            1           4s
    

サービスの作成

  1. `event-display`サービスをYAMLファイルとして作成します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: event-display
      namespace: default
    spec:
      template:
        spec:
          containers:
            - # This corresponds to
              # https://github.com/knative/eventing/tree/main/cmd/event_display/main.go
              image: gcr.io/knative-releases/knative.dev/eventing/cmd/event_display
    
  2. 以下のコマンドを実行して、YAMLファイルを適用します。

    kubectl apply -f <filename>.yaml
    
    ここで、``は、前の手順で作成したファイル名です。

    出力例

    service.serving.knative.dev/event-display created
    

  3. 以下のコマンドを実行して、サービスポッドが実行されていることを確認します。

    kubectl get pods
    

    ポッド名は`event-display`で始まります。

    NAME                                            READY     STATUS    RESTARTS   AGE
    event-display-00001-deployment-5d5df6c7-gv2j4   2/2       Running   0          72s
    

RabbitMQSourceオブジェクトの作成

  1. 次のテンプレートを使用してYAMLファイルを作成します。

    apiVersion: sources.knative.dev/v1alpha1
    kind: RabbitmqSource
    metadata:
      name: <source-name>
    spec:
      rabbitmqClusterReference:
        # Configure name if a RabbitMQ Cluster Operator is being used.
        name: <cluster-name>
        # Configure connectionSecret if an external RabbitMQ cluster is being used.
        connectionSecret:
          name: rabbitmq-secret-credentials
      rabbitmqResourcesConfig:
        parallelism: 10
        exchangeName: "eventing-rabbitmq-source"
        queueName: "eventing-rabbitmq-source"
      delivery:
        retry: 5
        backoffPolicy: "linear"
        backoffDelay: "PT1S"
      sink:
        ref:
          apiVersion: serving.knative.dev/v1
          kind: Service
          name: event-display
    
    ここで、

    • ``は、RabbitMQSourceオブジェクトに付ける名前です。
    • ``は、以前に作成したRabbitMQクラスタの名前です。

    注記

    `name`と`connectionSecret`は同時に設定できません。`name`はSourceと同じクラスタで実行されているRabbitMQ Cluster Operatorインスタンス用であり、`connectionSecret`は外部RabbitMQサーバー用です。

  2. 以下のコマンドを実行して、YAMLファイルを適用します。

    kubectl apply -f <filename>
    
    ここで、``は、前の手順で作成したファイル名です。

検証

event-displayサービスがイベントを受信しているかどうかを確認します。ソースがシンクにイベントの送信を開始するまでには時間がかかる場合があります。

  kubectl -l='serving.knative.dev/service=event-display' logs -c user-container
  ☁️  cloudevents.Event
  Context Attributes,
    specversion: 1.0
    type: dev.knative.rabbitmq.event
    source: /apis/v1/namespaces/default/rabbitmqsources/<source-name>
    subject: f147099d-c64d-41f7-b8eb-a2e53b228349
    id: f147099d-c64d-41f7-b8eb-a2e53b228349
    time: 2021-12-16T20:11:39.052276498Z
    datacontenttype: application/json
  Data,
    {
      ...
      Random Data
      ...
    }

クリーンアップ

  1. RabbitMQSourceを削除します。

    kubectl delete -f <source-yaml-filename>
    
  2. RabbitMQ認証情報シークレットを削除します。

    kubectl delete -f <secret-yaml-filename>
    
  3. event-displayサービスを削除します。

    kubectl delete -f <service-yaml-filename>
    

追加情報

サイトトラフィックを理解するために、分析とCookieを使用しています。当サイトの使用に関する情報は、その目的でGoogleと共有されます。詳細はこちら。