在OpenShift上建立Kafka Connect的方法是什么?
首先
我之所以想撰写这篇文章,是因为我想在Openshift上创建一个类似fluentd-kafka的日志收集基础设施,在搜索网络文章的过程中一无所获。(可能是因为我的搜索能力不够…)
所以,我希望创建这篇文章,既作为备忘录,以便将来再次创建时能够复现,也希望能对那些希望创建这个基础设施但却感到困惑的人有所帮助。
制作方式
我想要创建一个fluentd-kafka-s3sinkconnect和postgres的日志收集基础设施。
创建kafka集群
在OpenShift Web控制台上,从操作员中选择Kafka,并创建而不更改任何设置。
S3插件,Postgres插件,Fluentd的构建。
请为每个Dockerfile创建一个。
我认为,只需参考以下URL,就能轻松地创建出类似的fluentd。
https://github.com/fluent/fluentd-docker-image
我认为通过参考以下网址,可以轻松地创建S3:
https://github.com/confluentinc/kafka-connect-storage-cloud/tree/master/kafka-connect-s3
我认为按照以下URL的样例,使用Postgres可以轻松创建。
https://github.com/jcustenborder/kafka-connect-cdc-postgres
创建一个Dockerfile,将s3和postgres的文件复制并部署到/var/kafka/plugins目录下。
请您进入已创建文件的文件夹,并按下以下命令。
https://thinkit.co.jp/article/15696
例:假设我们要构建的对象是fluentd。
oc新建构建 –name=fluentd –strategy=docker
oc启动构建 fluentd –from-dir=. –follow
只需一个选项,将以下内容以中文本地化:您可以使用上述内容创建OpenShift镜像。如果想要在部署中执行,请使用以下命令。
用本地语言将以下内容用中文进行改写,只需一种方案:
oc new-app fluentd
使用OpenShift命令”oc”创建一个名为”fluentd”的应用程序。
创建Kafka Connect
在选择名称并设置之后,将webconsole的kafkaconnect更改为yaml描述的屏幕,并在spec下面进行以下描述。
这是我在创建时遇到的困难。
配置:
配置.storage.topic:postgres-configs
group.id:postgres
offset.storage.topic:postgres-offsets
status.storage.topic:postgres-status
图像:-
image-registry.openshift-image-registry.svc:~~~~~~~~
创建一个保存消息的Kafka主题
在Web控制台中,使用Fluentd指定的主题名称进行创建。
用JSON进行配置设置
进入已创建的 Pod ,使用 curl 命令向该 Pod 的 IP 地址发送配置值。
在使用PostgreSQL的情况下, 将以下内容翻译成中文:
例:
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”
示例:使用PostgreSQL的情况下,
请执行以下命令:
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”