Strimzi를 활용한 kafka 클러스터 구성하기 - 설치
What is Strimzi?
Strimzi는 Apache Kafka on Kubernetes and OpenShift를 목표로 운영되는 오픈소스 프로젝트입니다. 이 글은 strimzi on minikube 가이드 문서를 참고하여 맥에서 로컬 개발용 Kafka 구성 방법을 정리합니다.
Local setup
- minikube를 실행합니다. minikube 설치는 kubernetes 공식 문서를 참고합니다.
minikube start
- kubernetes namespace를 생성합니다.
kubectl create namespace kafka
- 설치 파일을 다운로드 및 적용합니다. (strimzi 0.13.0 버전 기준으로 진행)정상적으로 설정됐는지 보기 위해 pod를 확인합니다.
curl -L https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.13.0/strimzi-cluster-operator-0.13.0.yaml \ | sed 's/namespace: .*/namespace: kafka/' \ | kubectl -n kafka apply -f -
kubectl -n kafka get pods
NAME READY STATUS RESTARTS AGE strimzi-cluster-operator-8697dcf649-x5wfw 1/1 Running 0 19h
- kafka 클러스터를 프로비저닝합니다. strimzi의 kafka 구성 example은 현재 4가지 정도 있는데, 여기서는 kafka와 zookeeper를 각각 persistent single 노드로 구성하는 예제를 적용해보겠습니다. 정상적으로 설치되고 있는지 보기 위해 pod를 watch 모드로 확인합니다.
kubectl apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/0.13.0/examples/kafka/kafka-persistent-single.yaml -n kafka
kubectl -n kafka get pods -w
위 과정에서 Pending > Kill > retry를 반복한다면 minikube 인스턴스의 리소스 문제를 의심해봐야 합니다. 이를 해결하기 위해선 아래와 같이 진행하시기 바랍니다.NAME READY STATUS RESTARTS AGE my-cluster-zookeeper-0 0/2 ContainerCreating 0 2s strimzi-cluster-operator-8697dcf649-x5wfw 1/1 Running 0 20h my-cluster-zookeeper-0 0/2 Running 0 43s my-cluster-zookeeper-0 1/2 Running 0 57s my-cluster-zookeeper-0 2/2 Running 0 66s my-cluster-kafka-0 0/2 Pending 0 0s my-cluster-kafka-0 0/2 Pending 0 0s my-cluster-kafka-0 0/2 ContainerCreating 0 0s my-cluster-kafka-0 0/2 Running 0 3s my-cluster-kafka-0 1/2 Running 0 22s my-cluster-kafka-0 2/2 Running 0 24s my-cluster-entity-operator-759fb59899-mnv7k 0/3 Pending 0 0s my-cluster-entity-operator-759fb59899-mnv7k 0/3 Pending 0 0s my-cluster-entity-operator-759fb59899-mnv7k 0/3 ContainerCreating 0 0s my-cluster-entity-operator-759fb59899-mnv7k 0/3 Running 0 1s my-cluster-entity-operator-759fb59899-mnv7k 1/3 Running 0 15s my-cluster-entity-operator-759fb59899-mnv7k 2/3 Running 0 18s my-cluster-entity-operator-759fb59899-mnv7k 3/3 Running 0 25s
- virtualBox 실행
- minikube 인스턴스의 메모리, 프로세서 개수 등 리소스 조정
- minikube 재실행
Message Pub/Sub
- kafka를 통해 메세지를 주고받아봅시다. kafka console 프로듀서를 실행합니다. 프롬프트가 실행되면 메세지를 입력해봅니다.
kubectl -n kafka run kafka-producer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list my-cluster-kafka-bootstrap:9092 --topic my-topic
this is test
- 메세지를 확인해보기 위해 kafka console 컨슈머를 실행합니다. 메시지를 확인합니다.
kubectl -n kafka run kafka-consumer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic --from-beginning
this is test
'프로그래밍' 카테고리의 다른 글
클라이언트 설치 없이 카프카 브로커와 통신하기 - Kafkacat (0) | 2020.11.29 |
---|---|
Filebeat-Kafka-Nifi로 데이터 스트림 5분 안에 구성해보기 (0) | 2019.12.22 |
MS Azure로 갈아타기 - 5. Circle CI로 CI/CD 구성하기 (0) | 2019.02.06 |
MS Azure로 갈아타기 - 4. React 어플리케이션 만들기 (0) | 2019.01.30 |
MS Azure로 갈아타기 - 3. 웹서버 실행하기 (0) | 2019.01.20 |