1) Overview
Mình đã có 1 vài bài về kafka cũng như kafka-connect.
Kafka-connect thì có nhiệm vụ là Lấy data từ source nào đó như là: file, database, … ===> rồi ghi vào topic của Kafka
Khi mà topic đó đã có data:
– thì client có read trực tiếp data từ topic đó.
– Hoặc sử dụng feature SINK của kafka connect để ghi data từ topic đó vào nhiều destination khác nhau: database, file, elasticsearch,…
Bài này chúng ta cài chạy kafka-connect trên Kubernetes. Mình sẽ ko quá lan man vào lý thuyết.
2) Install kafka-conect on kubernetes.
Chart của kafka-connect họ để trên github:
https://github.com/confluentinc/cp-helm-charts
2.1) Sample config
Mình sẽ cung cấp cho bạn value:
kafka:
bootstrapServers: 'PLAINTEXT://192.168.101.36:9092'
configurationOverrides:
"config.storage.replication.factor": "1"
"offset.storage.replication.factor": "1"
"status.storage.replication.factor": "1"
Chố này thì bạn buộc khai báo bootstrapServers đây là chỗ khai báo kafka.
replication bạn thấy đều bằng 1 vì mình đang chỉ chạy 1 server kafka => chỉ có 1 blocker
Nếu blocker < replication nó sẽ báo lỗi trong Log pod
2.2) Integrate Kafka-connect with Schema-registry
Mình đã có hướng dẫn cài Schema-registry:
giờ bạn chỉ cần sửa values.yaml như sau:
kafka:
bootstrapServers: 'PLAINTEXT://kafka:9092'
image: docker.nimtechnology.com/nim/kafka-connect-6.1.0
imageTag: 1.0.1
cp-schema-registry:
url: "http://schema-registry-cp-schema-registry:8081"
cp-schema-registry:
url: "http://schema-registry-cp-schema-registry:8081"
đây là phần khái báo kết nối đến schema-registry
3) Install plugin for kafka connect.
cái image mà chúng ta đang cài kafka-connect ở trên thì nó ko có chạy được câu lệnh:confluent-hub install --no-prompt xxx/xxx-xxxx-xxx:x.x.x
3.1) add plugin via build image and base on cp-kafka-connect-base
reference links:
https://docs.confluent.io/home/connect/self-managed/extending.html#create-a-docker-image-containing-c-hub-connectors
chúng ta có Dockerfile như sau:
cat Dockerfile
FROM confluentinc/cp-kafka-connect-base:6.1.0
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
Bạn cần truy cập vào hub này để lấy tìm plugin connector:
https://www.confluent.io/hub
giờ mình có file Dockerfile như sau:
FROM confluentinc/cp-kafka-connect-base:6.1.0
RUN confluent-hub install --no-prompt confluentinc/kafka-connect-elasticsearch:11.1.8
Giờ anh em build image:docker build -t docker.nimtechnology.com/nim/kafka-connect-6.1.0:1.0.0 --force-rm -f Dockerfile .
rồi tiến anh sửa values.yaml và re-install kafka-connect
kafka:
bootstrapServers: 'PLAINTEXT://192.168.101.36:9092'
configurationOverrides:
"config.storage.replication.factor": "1"
"offset.storage.replication.factor": "1"
"status.storage.replication.factor": "1"
image: docker.nimtechnology.com/nim/kafka-connect-6.1.0
imageTag: 1.0.0
giờ chúng ta đã có plugin elastic trong kafka-connect.