일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- minikube
- Consumer
- Elk
- Helm
- partition
- Kubernetes
- k8s
- loadbalance
- elastic
- ElasticSearch
- kafka-connect
- Message
- topic
- kafka broker
- tls disable
- command
- kibana
- es
- Kafka Connect
- consumer group
- Golang
- Produce
- create topic
- Producer
- eck
- Kafka
- http
- 쿠버네티스
- broker
- offset
- Today
- Total
개발자의 개발괴발
kafka connect 배포하기 본문
kafka connector를 동작시키기 위해선 kafka connect가 필요하다.
kafka connector와 kafka connect는 이름이 비슷하지만 다른 것이다.
kafka connector는 kafka connect 위에서 플러그인 형식으로 동작한다.
kafka-connect를 docker로 빌드하기
일단 kafka connector를 포함해서 docker build를 먼저 해보자. 여기를 참고해서 해보았다.
링크해준 것은 로컬 PC에 내가 사용할 kafka connector가 있는 경우에 유용하다.
많은 경우에는 Confluent Hub 에서 제공하는 kafka connector를 쓰는 경우가 많을 것이다.
그러나 가끔 접속이 안되는 경우도 있고 또 내가 커스텀으로 개발한 kafka connector를 플러그인으로 사용할 수도 있으니 로컬로 해보자.
위의 Confluent Hub에 접속해서 원하는 kafka connector를 다운받자.
나는 confluentinc-kafka-connect-jdbc-10.8.0.zip를 다운받았다.
내가 받은 connector를 포함해서 image를 빌드하기 위해 Dockerfile을 하나 만들고 아래와 같이 추가하자.
FROM confluentinc/cp-server-connect-base:7.9.0
COPY confluentinc-kafka-connect-jdbc-10.8.0.zip /tmp/confluentinc-kafka-connect-jdbc-10.8.0.zip
RUN confluent-hub install --no-prompt /tmp/confluentinc-kafka-connect-jdbc-10.8.0.zip
Dockerfile과 confluentinc-kafka-connect-jdbc-10.8.0.zip파일을 같은 곳에 위치시킨 후에 docker build를 하자
docker build . -t kafka-connect/kafka-connect:v1.0
빌드를 하면 이미지를 다운받고 빌드하기 시작할 것이다.
빌드가 완료되면 이미지가 빌드 되었는지 확인해보자.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kafka-connect/kafka-connect v1.0 13519cea0137 19 seconds ago 3.43GB
Build한 docker 이미지를 minikube에 옮기기
빌드한 docker image는 로컬에 존재한다. 우리가 Harbor같은 Container registry를 가지고 있다면 거기로 docker push를 하면 쉽게 이미지를 어디든 공유할 수 있지만 아직은 Container registry가 없다. 그래서 이미지를 직접 minikube로 옮기도록 하겠다.
docker image를 tar 파일로 저장하자.
docker save kafka-connect/kafka-connect:v1.0 > kafka-connect-v1.tar
이 tar파일을 minikube로 옮기자.
minikube cp kafka-connect-v1.tar /tmp/kafka-connect-v1.tar
minikube에 접속해서 tar 파일을 image로 로드하자.
$ minikube ssh # minikube에 접속
docker@minikube:~$ docker load < /tmp/kafka-connect-v1.tar
5e82f88088b0: Loading layer [==================================================>] 101.5MB/101.5MB
9086e0acd8fd: Loading layer [==================================================>] 3.072kB/3.072kB
b0b644d49574: Loading layer [==================================================>] 835.2MB/835.2MB
2205a4de59ba: Loading layer [==================================================>] 13.31kB/13.31kB
f650ef593267: Loading layer [==================================================>] 11.38MB/11.38MB
855078b60f12: Loading layer [==================================================>] 442.4kB/442.4kB
f934b4c53d5c: Loading layer [==================================================>] 47.39MB/47.39MB
fb578de462b8: Loading layer [==================================================>] 15.36kB/15.36kB
67e4dd9562f3: Loading layer [==================================================>] 6.144kB/6.144kB
fc09f025a64b: Loading layer [==================================================>] 4.096kB/4.096kB
5ce1325e0af3: Loading layer [==================================================>] 1.536kB/1.536kB
d8f2b2b446bc: Loading layer [==================================================>] 2.56kB/2.56kB
f75a390a11b2: Loading layer [==================================================>] 1MB/1MB
5c3a0d9f9e7b: Loading layer [==================================================>] 1.471GB/1.471GB
a1b588710d49: Loading layer [==================================================>] 20.48kB/20.48kB
b3468ab03039: Loading layer [==================================================>] 927.9MB/927.9MB
658cd204c69b: Loading layer [==================================================>] 16.9kB/16.9kB
346c7868409a: Loading layer [==================================================>] 26MB/26MB
72353a1151c2: Loading layer [==================================================>] 27.81MB/27.81MB
Loaded image: kafka-connect/kafka-connect:v1.0
minikube 내부에서 이미지를 확인해보면 잘 있는 것을 확인할 수 있다.
docker@minikube:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kafka-connect/kafka-connect v1.0 13519cea0137 9 minutes ago 3.43GB
kafka connect를 배포해보자
아래처럼 kafka-connect-deployment.yaml 파일을 만들자.
안의 환경변수는 적절한 값으로 바꿔도 된다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-connect
spec:
replicas: 1
selector:
matchLabels:
app: kafka-connect
template:
metadata:
labels:
app: kafka-connect
spec:
containers:
- name: kafka-connect
image: kafka-connect/kafka-connect:v1.0 # 이것은 내가 빌드한 이미지
imagePullPolicy: IfNotPresent
env:
- name: CONNECT_BOOTSTRAP_SERVERS
value: "bitnami-kafka-controller-headless:9092"
- name: CONNECT_GROUP_ID
value: "lecture"
- name: CONNECT_KEY_CONVERTER
value: "org.apache.kafka.connect.json.JsonConverter"
- name: CONNECT_VALUE_CONVERTER
value: "org.apache.kafka.connect.json.JsonConverter"
- name: CONNECT_REST_ADVERTISED_HOST_NAME
value: "kafka-connect"
- name: CONNECT_REST_PORT
value: "8083"
- name: CONNECT_CONFIG_STORAGE_TOPIC
value: "connect-configs"
- name: CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR
value: "1"
- name: CONNECT_OFFSET_STORAGE_TOPIC
value: "connect-offsets"
- name: CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR
value: "1"
- name: CONNECT_STATUS_STORAGE_TOPIC
value: "connect-status"
- name: CONNECT_STATUS_STORAGE_REPLICATION_FACTOR
value: "1"
- name: CONNECT_SECURITY_PROTOCOL
value: "PLAINTEXT"
아래 명령어로 적용을 하면
$ kubectl apply -f kafka-connect-deployment.yaml
deployment.apps/kafka-connect configured
아래와 같이 kafka connect가 성공적으로 배포된 것을 확인할 수 있다.
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
bitnami-kafka-controller-0 2/2 Running 3 (2m29s ago) 6m25s
bitnami-kafka-controller-1 2/2 Running 0 2m37s
bitnami-kafka-controller-2 2/2 Running 0 2m37s
kafka-connect-79544bd975-lsh46 2/2 Running 4 (2m27s ago) 6m7s
참고:
'개발 > kubernetes' 카테고리의 다른 글
[postgresql] minikube에 postgersql 배포하기 (0) | 2025.03.16 |
---|---|
[kubernetes] headless service란? (0) | 2025.03.06 |
[kubernetes] loadbalancer type service 사용하기 (0) | 2025.03.03 |
[kubernetes] port forwarding (0) | 2025.03.01 |
[Kubernetes] Mac에서 k8s 연습하기(feat. minikube) (0) | 2025.02.26 |