2.2. Kafka Connect のデプロイ
Kafka クラスターの設定後、Debezium のカスタムコンテナーイメージに Kafka Connect をデプロイします。このサービスは、Debezium MySQL コネクターを管理するためのフレームワークを提供します。
前提条件
- Podman または Docker がインストールされ、コンテナーを作成および管理するのに十分な権限がある。
手順
- Red Hat Integration のダウンロードサイト から Debezium MySQL Connector 1.4 アーカイブをダウンロードします。
Debezium MySQL コネクターアーカイブを展開して、コネクタープラグインのディレクトリー構造を作成します。以下に例を示します。
tree ./my-plugins/ ./my-plugins/ ├── debezium-connector-mysql │ ├── ...
Debezium MySQL コネクターで Kafka Connect を実行するカスタムイメージを作成し、パブリッシュします。
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
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/v1beta1 kind: KafkaConnect metadata: name: my-connect-cluster annotations:strimzi.io/use-connector-resources: "true" spec: #... image: debezium-container-for-mysql
結果
Kafka Connect が稼働します。コンテナーには Debezium MySQL コネクターがありますが、このコネクターはこの時点ではデータベースの変更をキャプチャーするように設定されていません。