RabbitMQSourceの作成¶
このトピックでは、RabbitMQSourceの作成方法について説明します。
前提条件¶
- Knative Eventingをインストール済みであること
- CertManager v1.5.4をインストール済みであること - RabbitMQ Messaging Topology Operatorとの最も簡単な統合
- RabbitMQ Messaging Topology Operatorをインストール済みであること - CertManagerを使用する最新リリースを推奨します
- 動作するRabbitMQインスタンス。RabbitMQ Cluster Operatorを使用して作成することを推奨します。`RabbitmqCluster` CRDの設定の詳細については、RabbitMQのウェブサイトを参照してください。
RabbitMQコントローラのインストール¶
-
以下のコマンドを実行して、RabbitMQSourceコントローラをインストールします。
kubectl apply -f https://github.com/knative-extensions/eventing-rabbitmq/releases/download/knative-v1.16.0/rabbitmq-source.yaml
-
`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
サービスの作成¶
-
`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
-
以下のコマンドを実行して、YAMLファイルを適用します。
ここで、`kubectl apply -f <filename>.yaml
`は、前の手順で作成したファイル名です。 出力例
service.serving.knative.dev/event-display created
-
以下のコマンドを実行して、サービスポッドが実行されていることを確認します。
kubectl get pods
ポッド名は`event-display`で始まります。
NAME READY STATUS RESTARTS AGE event-display-00001-deployment-5d5df6c7-gv2j4 2/2 Running 0 72s
RabbitMQSourceオブジェクトの作成¶
-
次のテンプレートを使用して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サーバー用です。
- `
-
以下のコマンドを実行して、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
...
}
クリーンアップ¶
-
RabbitMQSourceを削除します。
kubectl delete -f <source-yaml-filename>
-
RabbitMQ認証情報シークレットを削除します。
kubectl delete -f <secret-yaml-filename>
-
event-displayサービスを削除します。
kubectl delete -f <service-yaml-filename>
追加情報¶
- その他のサンプルについては、`eventing-rabbitmq` Githubリポジトリのサンプルディレクトリをご覧ください。
- バグの報告や機能のリクエストは、`eventing-rabbitmq` Githubリポジトリでissueを作成してください。