4.5.2. コネクター設定の追加
提供される Debezium コンテナーを使用して、Debezium MongoDB コネクターをデプロイできます。この手順では、Debezium のカスタム Kafka Connect コンテナーイメージをビルドし、必要に応じて Debezium コネクターを設定して、コネクター設定を Kafka Connect 環境に追加します。
前提条件
- Podman または Docker がインストールされ、コンテナーを作成および管理するのに十分な権限がある。
- Debezium MongoDB コネクターアーカイブがインストールされている。
手順
Debezium MongoDB コネクターアーカイブを展開して、コネクタープラグインのディレクトリー構造を作成します。以下に例を示します。
tree ./my-plugins/ ./my-plugins/ ├── debezium-connector-mongodb │ ├── ...
tree ./my-plugins/ ./my-plugins/ ├── debezium-connector-mongodb │ ├── ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow Debezium コネクターを実行するためのカスタムイメージを作成し、パブリッシュします。
registry.redhat.io/amq7/amq-streams-kafka-26-rhel7:1.6.0をベースイメージとして使用して、新規のDockerfileを作成します。以下の例の my-plugins は、プラグインディレクトリーの名前に置き換えます。FROM registry.redhat.io/amq7/amq-streams-kafka-26-rhel7:1.6.0 USER root:root COPY ./my-plugins/ /opt/kafka/plugins/ USER 1001
FROM registry.redhat.io/amq7/amq-streams-kafka-26-rhel7:1.6.0 USER root:root COPY ./my-plugins/ /opt/kafka/plugins/ USER 1001Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka Connect は、コネクターの実行を開始する前に、
/opt/kafka/pluginsディレクトリーにあるサードパーティープラグインをロードします。コンテナーイメージをビルドします。たとえば、前のステップで作成した
Dockerfileをdebezium-container-for-mongodbとして保存し、Dockerfileが現在のディレクトリーにある場合は、以下のコマンドを実行します。podman build -t debezium-container-for-mongodb:latest .カスタムイメージをコンテナーレジストリーにプッシュします。例を以下に示します。
podman push debezium-container-for-mongodb:latest新しいコンテナーイメージを示します。次のいずれかを行います。
KafkaConnectorカスタムリソースのspec.imageプロパティーを編集します。このプロパティーが設定されていると、クラスターオペレータのSTRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE変数がオーバーライドされます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
install/cluster-operator/050-Deployment-strimzi-cluster-operator.yamlファイルのSTRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE変数を編集し、新しいコンテナーイメージを示すようにした後、Cluster Operator を再インストールします。このファイルを編集する場合は、OpenShift クラスターに適用する必要があります。
-
Debezium MongoDB コネクターインスタンスを定義する
KafkaConnectorカスタムリソースを作成します。コネクター設定の例 を参照してください。 コネクターインスタンスを適用します。以下に例を示します。
oc apply -f inventory-connector.yamlこれにより
inventory-connectorが登録され、コネクターがinventoryデータベースに対して実行されるようになります。コネクターが作成され、指定されたデータベース内の変更のキャプチャーを開始したことを確認します。例えば
inventory-connectorが起動したときの Kafka Connect のログ出力を見ることで、コネクターのインスタンスを確認することができます。Kafka Connect のログ出力を表示します。
oc logs $(oc get pods -o name -l strimzi.io/name=my-connect-cluster-connect)
oc logs $(oc get pods -o name -l strimzi.io/name=my-connect-cluster-connect)Copy to Clipboard Copied! Toggle word wrap Toggle overflow ログの出力を確認し、初回のスナップショットが実行されたことを確認します。以下のような行が表示されるはずです。
... INFO Starting snapshot for ... ... INFO Snapshot is using user 'debezium' ...
... INFO Starting snapshot for ... ... INFO Snapshot is using user 'debezium' ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
結果
コネクターが起動すると、コネクターが設定された MongoDB データベースの 整合性スナップショットが実行 されます。その後、コネクターはドキュメントレベルの操作のデータ変更イベントの生成を開始し、変更イベントレコードを Kafka トピックにストリーミングします。