2.3. AMQ Streams での Debezium のデプロイ

Red Hat OpenShift Container Platform で Debezium コネクターを設定するには、Kafka クラスターを OpenShift にデプロイし、Debezium コネクターをダウンロードおよび設定して、コネクターで Kafka Connect をデプロイします。

前提条件

  • Red Hat AMQ Streams を使用して OpenShift で Apache Kafka および Kafka Connect が設定済みである。AMQ Streams は、Kafka を OpenShift に取り入れる operator およびイメージを提供します。
  • Podman または Docker がインストールされている。

手順

  1. Kafka クラスターをデプロイします。Kafka クラスターがすでにデプロイされている場合は、以下の 3 つのサブステップを省略します。

    1. Installing AMQ Streams and deploying components」の手順に従って、AMQ Streams operator をインストールします。
    2. 希望の設定を選択し、Kafka Cluster をデプロイ します。
    3. Kafka Connect をデプロイします。

    これで、Kafka Connect を使用して OpenShift で実行されている Kafka クラスターを利用できます。

  2. Pod が稼働していることを確認します。Pod 名は AMQ Streams デプロイメントに対応します。

    $ oc get pods
    
    NAME                                               READY STATUS
    <cluster-name>-entity-operator-7b6b9d4c5f-k7b92    3/3   Running
    <cluster-name>-kafka-0                             2/2   Running
    <cluster-name>-zookeeper-0                         2/2   Running
    <cluster-name>-operator-97cd5cf7b-l58bq            1/1   Running

    Pod の実行の他に、Kafka Connect に関連付けられた DeploymentConfig が必要です。

  3. Red Hat Integration のダウンロードサイト に移動します。
  4. データベースの Debezium コネクターアーカイブをダウンロードします。
  5. アーカイブを展開して、コネクタープラグインのディレクトリー構造を作成します。複数のアーカイブをダウンロードおよび展開した場合、構造は以下のようになります。

    $ tree ./my-plugins/
    ./my-plugins/
    ├── debezium-connector-db2
    |   ├── ...
    ├── debezium-connector-mongodb
    |   ├── ...
    ├── debezium-connector-mysql
    │   ├── ...
    ├── debezium-connector-postgres
    │   ├── ...
    └── debezium-connector-sqlserver
        ├── ...
  6. registry.redhat.io/amq7/amq-streams-kafka-28-rhel8:1.8.0 をベースイメージとして使用して、新しい Dockerfile を作成します。

    FROM registry.redhat.io/amq7/amq-streams-kafka-28-rhel8:1.8.0
    USER root:root
    COPY ./my-plugins/ /opt/kafka/plugins/
    USER 1001
  7. コンテナーイメージをビルドします。前の手順で作成した Dockerfile がカレントディレクトリーにある場合は、以下のコマンドのいずれかを入力します。

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

    podman push my-new-container-image:latest
    docker push my-new-container-image:latest
  9. 新しいコンテナーイメージを示します。Debezium コネクターを実行するために作成したイメージの名前を指定するため、以下のいずれかのタスクを実行します。

    • 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: my-new-container-image
    • install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml ファイルの STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE 変数を編集して新しいコンテナーイメージを示すようにし、Cluster Operator を再インストールします。このファイルを編集する場合は、これを OpenShift クラスターに適用する必要があります。

    Kafka Connect デプロイメントによって、新しいイメージの使用が開始されます。

次のステップ

  • デプロイする各 Debezium コネクターに、コネクターインスタンスを設定する KafkaConnect カスタムリソースを作成し、適用します。これにより、設定されたデータベースに対してコネクターの実行が開始されます。コネクターが起動すると、設定されたデータベースに接続し、挿入、更新、および削除された各行または各ドキュメントの変更イベントレコードを生成します。コネクターのデプロイに関する詳細は、以下を参照してください。

  • KafkaConnect.spec.image property および STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE 変数の詳細は、『Using AMQ Streams on OpenShift』を参照してください。