-
Kubernetes 위에 kafka 구축 - strimziKafka 2022. 1. 11. 10:32
Kafka를 수동으로 운영하려면 수많은 구성 요소를 꼼꼼히 설정해야 하므로 일이 매우 복잡해진다.
Strimzi에서 제공하는 오퍼레이터를 사용하여 Apache Kafka 설정을 순조롭게 원활히 배포한다.
strimzi github page
https://github.com/strimzi/strimzi-kafka-operator
strimzi는 컨테이너 이미지와 오퍼레이터를 제공하여 kubernetes위에 kafka를 쉽게 구축할 수 있게 한다.
strimzi kafka 구조
strimzi kafka에서 제공하는 operator는 3 종류이다.
kubernetes의 operator는 쿠버네티스 API의 기능을 확장하여 쿠버네티스 사용자를 대신해 복잡한 애플리케이션의 인스턴스를 생성, 설정 및 관리하는 애플리케이션별 컨트롤러이다.
operator는 사용자 정의 리소스(CR)를 사용하여 애플리케이션과 그 구성 요소를 관리하는 역할을 한다.
- cluster operator: kafka cluster, kafka connect cluster 등 다양한 cluster를 생성
- topic operator: broker의 topic을 생성, 변경, 삭제해주는 역할을 수행
- User operator: User의 설정을 통해, kafka에 접근할 때, 접근을 승인하거나 권한을 줌
Kafka deploy 방식
위에서 설명한 것처럼 operator를 먼저 kubernetes에 배포해야한다. 그 후에 사용자가 resource를 정의해서 apply하면 operator가 그 사용자 정의 리소스에 참고하여 cluster를 생성하거나 다른 작업을 수행해준다.
kafka cluster 생성하기
자세한 방법은 공식문서로 대체한다.
https://strimzi.io/docs/operators/in-development/deploying.html#deploying-cluster-operator-str
본인 github에도 정리해두었으니 확인하길 바란다.
https://github.com/JackCokebb/kafka-all
kafka broker custom resource 정의
operator에게 전달해줄 custom resource를 정의해야한다. 즉 CR를 전달하는 시점에서는 operator가 kubernetes에 배포된 상태여야한다.
https://github.com/JackCokebb/kafka-all/blob/master/kafkaServer/kafka-persistent.yaml
관련 코드는 본인 github에 올려두었다.
//-f 는 파일 위치를 지정해야한다. 작성한 CR의 yaml파일 위치를 지정하자. kubectl apply -f examples/kafka/kafka-persistent.yaml
CR을 apply하면 operator가 그에 맞는 작업을 수행한다. kafka-persistent.yaml을 올리면 cluster operator가 정의한 내용을 바탕으로 kafka cluster를 생성한다.
kubernetes monitoring tool lens로 monitoring 한 결과, 정의 해준대로 kafka cluster가 생성된 것을 확인할 수 있다.
또는 코드로도 확인할 수 있다.
kubectl get deployments -n my-kafka-namespace
'Kafka' 카테고리의 다른 글
Kafka streams로 kafka 내부 데이터 처리 (1) 2022.01.13 Kafka connect로 kafka와 여러 서비스 연결하기 (0) 2022.01.12 Kafka 튜닝, 최적화 방안 (1) 2022.01.10 Kafka docker-compose로 구축 (1) 2021.09.17 Apache Kafka란 - 이론 공부 내용 (2) 2021.09.12