LoginSignup
1
0

More than 1 year has passed since last update.

kafkaConnectをopenshift上で構築する方法

Posted at

初めに

今回この記事を書こうと思ったのは、openshift上でfluentd-kafka-?のようなログ収集基盤を作成したいと思いウェブの記事を探しながら作成したのですが、一切見つかりませんでした。(私の検索力が低いだけかもしれませんが・・・)
なので、今後再度作りたいと思ったときに再現できるようとして備忘録かつこの基盤を作成したくて困っている人に対して少しでも救いになればと思い今回の記事を作成しました。

作成方法

今回は、fluentd-kafka-s3sinkconnect,postgresのログ収集基盤を作成していきたいと思います。

kafka cluster作成

openshiftWebコンソールでoperatorからkafkaを選択、設定を変えずに作成

S3plugin,postgresplugin,fluentdのビルド

それぞれのDockerfileを作成する。

fluentdは以下のURLを見本に作成すると簡単にできると思います。
https://github.com/fluent/fluentd-docker-image

s3は以下のURLを見本に作成すると簡単にできると思います。
https://github.com/confluentinc/kafka-connect-storage-cloud/tree/master/kafka-connect-s3

postgresは以下のURLを見本に作成すると簡単にできると思います。
https://github.com/jcustenborder/kafka-connect-cdc-postgres

s3とpostgresは作成したファイルを/var/kafka/pluginsの配下にコピーして配置するDockerfileを作成します。

作成したファイルのあるフォルダに移動して以下のコマンドを押下します。
https://thinkit.co.jp/article/15696

例:fluetndの場合(fluentdの部分はビルドしたい対象によって変わります。)
oc new-build --name=fluentd --strategy=docker
oc start-build fluentd --from-dir=. --follow

以上でopenshift用のイメージは作成することが出来ます。
デプロイメントで実行したい場合は以下のコマンドで実行できます。

oc new-app fluentd

kakfaconnectの作成

webconsoleのkafkaconnectを選択名前を設定後yaml記述に画面を変更して spec の下に以下を記述します。
ここが作成時につまづきました。

この記述を行わないとkafkaconnectでメッセージを複数の場所に送りたいときバグが起きます。

config:
config.storage.topic: postgres-configs
group.id: postgres
offset.storage.topic: postgres-offsets
status.storage.topic: postgres-status
image: >-
image-registry.openshift-image-registry.svc:~~~~~~~~

imageはwebコンソールにあるイメージストリームタグにあるイメージリポジトリーorパブリックイメージリポジトリーを用いてください

メッセージを保存するkafkatopicの作成

webコンソールでfluentdで指定したtopic名で作成します。

jsonで設定を行う

作成されたpodに入り、そのpodのIPアドレスに対してcurlで設定値を送る

例:postgresの場合
echo '{
"name":"sink-connect-jdbc-postgres",
"config":{
"group.id": "postgres",
"connector.class": "hogehoge",
"connection.url": "hogehoge",
"connection.password": "hogehoge",
"db.name": "hogehoge",
"topics": "hogehoge",
"task.max": "hogehoge",
"insert.mode": "insert",
"max.retries": "1"
}
}
'|curl -x POST -d @-http://podIP/connectors --header "content-Type:application/json"

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0