2.2. Kafka Connect のデプロイ
Kafka クラスターの設定後、Debezium のカスタムコンテナーイメージに Kafka Connect をデプロイします。このサービスは、Debezium MySQL コネクターを管理するためのフレームワークを提供します。
前提条件
- Podman または Docker がインストールされ、コンテナーを作成および管理するのに十分な権限がある。
手順
- Red Hat Integration のダウンロードサイト から Debezium MySQL Connector 1.5 アーカイブをダウンロードします。
Debezium MySQL コネクターアーカイブを展開して、コネクタープラグインのディレクトリー構造を作成します。以下に例を示します。
tree ./my-plugins/ ./my-plugins/ ├── debezium-connector-mysql │ ├── ...
Debezium MySQL コネクターで Kafka Connect を実行するカスタムイメージを作成し、パブリッシュします。
registry.redhat.io/amq7/amq-streams-kafka-28-rhel8:1.8.0
をベースイメージとして使用して、新しいDockerfile
を作成します。以下の例では、my-plugins
をプラグインディレクトリーの名前に置き換えます。FROM registry.redhat.io/amq7/amq-streams-kafka-28-rhel8:1.8.0 USER root:root COPY ./my-plugins/ /opt/kafka/plugins/ USER 1001
Kafka Connect は、コネクターの実行を開始する前に
/opt/kafka/plugins
ディレクトリーにあるサードパーティープラグインをロードします。コンテナーイメージをビルドします。たとえば、前のステップで作成した
Dockerfile
をdebezium-container-for-mysql
として保存し、Dockerfile
がカレントディレクトリーにある場合は、以下のコマンドのいずれかを入力します。podman build -t debezium-container-for-mysql:latest .
docker build -t debezium-container-for-mysql:latest .
カスタムイメージをコンテナーレジストリーにプッシュします。以下のいずれかのコマンドを実行します。
podman push <my_registry.io>/debezium-container-for-mysql:latest
docker push <my_registry.io>/debezium-container-for-mysql:latest
KafkaConnect
カスタムリソースのspec.image
プロパティーを編集して、新しいコンテナーイメージを示すようにします。このプロパティーが設定されている場合、Cluster Operator のSTRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE
変数はこの値によって上書きされます。以下に例を示します。apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaConnect metadata: name: my-connect-cluster annotations:strimzi.io/use-connector-resources: "true" spec: #... image: debezium-container-for-mysql
結果
Kafka Connect が稼働します。コンテナーには Debezium MySQL コネクターがありますが、このコネクターはこの時点ではデータベースの変更をキャプチャーするように設定されていません。