2.2. Kafka Connect のデプロイ

Kafka クラスターの設定後、Debezium のカスタムコンテナーイメージに Kafka Connect をデプロイします。このサービスは、Debezium MySQL コネクターを管理するためのフレームワークを提供します。

前提条件

  • Podman または Docker がインストールされ、コンテナーを作成および管理するのに十分な権限がある。

手順

  1. Red Hat Integration のダウンロードサイト から Debezium MySQL Connector 1.4 アーカイブをダウンロードします。
  2. Debezium MySQL コネクターアーカイブを展開して、コネクタープラグインのディレクトリー構造を作成します。以下に例を示します。

    tree ./my-plugins/
    ./my-plugins/
    ├── debezium-connector-mysql
    │   ├── ...
  3. Debezium MySQL コネクターで Kafka Connect を実行するカスタムイメージを作成し、パブリッシュします。

    1. 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 ディレクトリーにあるサードパーティープラグインをロードします。

    2. コンテナーイメージをビルドします。たとえば、前の手順で作成した Dockerfiledebezium-container-for-mysql として保存し、Dockerfile が現在のディレクトリーにある場合は、以下のコマンドのいずれかを入力します。

      podman build -t debezium-container-for-mysql:latest .
      docker build -t debezium-container-for-mysql:latest .
    3. カスタムイメージをコンテナーレジストリーにプッシュします。以下のいずれかのコマンドを実行します。

      podman push <my_registry.io>/debezium-container-for-mysql:latest
      docker push <my_registry.io>/debezium-container-for-mysql:latest
    4. 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 コネクターがありますが、このコネクターはこの時点ではデータベースの変更をキャプチャーするように設定されていません。