コネクターまたはソフトウェアの追加¶
Confluent では、以下の 2 つの Kafka Connect イメージが提供されています。
cp-kafka-connect
cp-kafka-connect-base
cp-kafka-connect
イメージと cp-kafka-connect-base
イメージの機能は同じです。Confluent Platform バージョン 6.0 より前は、cp-kafka-connect
イメージにパッケージ済みコネクターが含まれていましたが、現在はこれらが含まれていません。
cp-kafka-connect
またはcp-kafka-connect-base
イメージをそのまま使用することにより、ボリュームでコネクター JAR を追加 することができます。- 新しいコネクターがインストールされた新しい Docker イメージを構築します。以下の例を参照してください。
Confluent Hub コネクターを含む Docker イメージの作成¶
この例では、 Confluent Hub クライアント を使用して、Confluent の Kafka Connect イメージの 1 つから拡張された Docker イメージを作成する方法を示しますが、このイメージにはコネクターのカスタムセットが含まれています。こうすると、cp-kafka-connect
イメージに含まれていないコネクターを使用する場合や、カスタムイメージを軽量に保ち、使用する予定のないコネクターを含まないようにする場合に便利です。
Confluent Hub からコネクターを追加します。
拡張するイメージを選択します。
cp-kafka-connect
イメージとcp-kafka-connect-base
イメージの機能は同じです。唯一の違いは、cp-kafka-connect
イメージには Confluent のコネクターがいくつか含まれていますが、cp-kafka-connect-base
イメージにはデフォルトでは何も含まれていません。ここでは、cp-kafka-connect-base
イメージを使用する場合について説明します。カスタムイメージに含めるコネクターを Confluent Hub から選択します。以降の手順を通じて、MongoDB コネクター、Microsoft Azure IoT Hub コネクター、Google BigQuery コネクターを含むカスタムイメージが生成されます。
Dockerfile を作成します。
FROM confluentinc/cp-kafka-connect-base: RUN confluent-hub install --no-prompt hpgrahsl/kafka-connect-mongodb:1.1.0 \ && confluent-hub install --no-prompt microsoft/kafka-connect-iothub:0.6 \ && confluent-hub install --no-prompt wepay/kafka-connect-bigquery:1.1.0
Dockerfile をビルドします。
docker build . -t my-custom-image:1.0.0
このコマンドの出力は以下のようになります。
Step 1/2 : FROM confluentinc/cp-kafka-connect-base ---> e0d92da57dc3 ... Running in a "--no-prompt" mode Implicit acceptance of the license below: Apache 2.0 https://github.com/wepay/kafka-connect-bigquery/blob/master/LICENSE.md Implicit confirmation of the question: You are about to install 'kafka-connect-bigquery' from WePay, as published on Confluent Hub. Downloading component BigQuery Sink Connector 1.1.0, provided by WePay from Confluent Hub and installing into /usr/share/confluent-hub-components Adding installation directory to plugin path in the following files: /etc/kafka/connect-distributed.properties /etc/kafka/connect-standalone.properties /etc/schema-registry/connect-avro-distributed.properties /etc/schema-registry/connect-avro-standalone.properties Completed Removing intermediate container 48d4506b8a83 ---> 496befc3d3f7 Successfully built 496befc3d3f7 Successfully tagged my-custom-image:1.0.0
結果的に、
my-custom-image
という名前のイメージが作成されます。このイメージには、MongoDB、Azure IoT Hub、および BigQuery コネクターが含まれ、Kafka Connect フレームワークを使用してコネクターの一部またはすべてを実行できます。
docker-compose.yml
ファイルと Confluent Hub クライアント を使用して Kafka 環境をビルドする場合、以下のプロパティを使用してコネクターを有効にします。
connect:
image: confluentinc/kafka-connect-datagen:latest
build:
context: .
dockerfile: Dockerfile-confluenthub
ローカルコネクターを含む Docker イメージの作成¶
この例では、cp-kafka-connect-base
イメージを拡張して 1 つ以上のローカルコネクターを含む Docker イメージを作成する方法を示します。これは、Confluent Hub からコネクターを取得するのではなく、独自のコネクターを使用する場合に便利です。
ローカルコネクターを zip ファイルにパッケージ化します。
以下の例のように Dockerfile をセットアップします。
FROM confluentinc/cp-kafka-connect-base: COPY target/components/packages/my-connector-.zip /tmp/my-connector-.zip RUN confluent-hub install --no-prompt /tmp/my-connector-.zip
Dockerfile をビルドします。
docker build . -t my-custom-image:1.0.0
ソフトウェアの追加¶
この例では、イメージに新しいソフトウェアを追加する方法を示します。たとえば、Kafka Connect クライアントを拡張して MySQL JDBC ドライバを含めることができます。この方法を使用して新しいコネクターをイメージに追加する場合は、コネクター JAR が Connect フレームワークの plugin.path
または CLASSPATH
にある必要があります。
Dockerfile を作成します。
FROM confluentinc/cp-kafka-connect ENV MYSQL_DRIVER_VERSION 5.1.39 RUN curl -k -SL "https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-${MYSQL_DRIVER_VERSION}.tar.gz" \ | tar -xzf - -C /usr/share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib \ --strip-components=1 mysql-connector-java-5.1.39/mysql-connector-java-${MYSQL_DRIVER_VERSION}-bin.jar
イメージをビルドします。
docker build -t foo/mysql-connect:latest .
注釈
この方法は、独自の Kafka Connect プラグインを使用してイメージを作成する場合にも使用できます。