0. INTRO
- K8s환경(Minikube)을 대상으로 진행
- HelmChart 를 사용한 Strimzi Opeator 사용
- Kafka Cluster를 구축
1. Minikube 실행
minikube 실행
minikube start
2. Helm 설치
Helm 설치페이지에 접근
해당 페이지에서 원하는 방식으로 설치
내가 추천하는 방식은 스크립트 기반의 설치
helm 설치되어있는지 확인 : helm
헬름 설치 이후 alias 설정(zsh쉘 기준)
설정파일 접근 : vi ~.zshrc
alias h=’helm’
입력
설정파일 저장 : source ~/.zshrc
3. 쿠버네티스 버전확인
버전확인하는 명령어 : kubectl version
Server Version의 GitVersion이 쿠버네티스의 버전이다
4. Strimzi Operator 설치
helm repo에 strimzi 저장소를 등록
helm repo add strimzi https://strimzi.io/charts/
helm repo update
strimzi helm chart 를 다운로드
helm pull strimzi/strimzi-kafka-operator
압축해제및 helm chart로 설치
#압축해제
tar -zxvf strimzi-kafka-operator-helm-3-chart-0.32.0.tgz
#디렉토리 이동
cd strimzi-kafka-operator
#헬름차트로 설치
helm install strimzi-kafka-operator .
#헬름차트의 이름을 strimzi-kafka-operator로 지정
#현재위치를 기준으로 지정
CRD 존재하는지 확인
5. Kafka 클러스터 배포
strimzi github 의 example 페이지 접속
https://github.com/strimzi/strimzi-kafka-operator/tree/main/examples
해당 페이지에는 다양한 예제가 들어있다. 클러스터를 배포하기 위함이니 kafka 디렉토리 선택
볼륨지정유무 구분
- epehemeral : 볼륨을 지정하지않겠다(파드의 기본 볼륨만 사용하겠다)
- persistent : 볼륨을 지정하겠다(PV, PVC를 사용하겠다)
브로커 구성 구분
- single : 단일파드(1개) 로 지정하겠다
- (없음) : 다중파드(여러개) 로 지정하겠다
여기서는 kafka-ephemeral.yaml
파일 선택
yaml파일의 전체내용 복사 후 로컬파일로 저장.
사진에서는 파일구분을 위해 CLUSTER 디렉토리 생성, cluster.yaml 이름으로 저장하였다
이때 Kind는 Kafka
(CRD로만든것) 이고, 생성될 클러스터의 이름은 my-cluster
이다. 또한, Strimzi 버전에 맞추어서 카프카 버전을 3.2.0 으로 지정해주었다.
이후 카프카 클러스터 배포
minikube kubectl -- apply -f cluster.yaml
배포되어있는지 확인(READY에 TRUE 되기까지 시간이 몇분 걸렸다)
6. Topic 배포
토픽 파일내용을 전체 복사
이후 로컬파일로 저장
디렉토리 구분을 위해서 TOPIC폴더를 만들고, topic.yaml파일로 저장
이때 metadata.labels.strimzi.io/cluster
에는 5에서 배포한 kafka cluster의 이름과 동일해야함.
토픽 배포 : minikube kubectl -- apply -f topic.yaml
제대로 토픽이 떠있는지 확인
minikube kubectl -- get kafkatopics
READY 확인
7. 배포한 브로커의 정보조회
jq 설치
Brew : brew install jq
Ubuntu : apt install jq
정보조회
#minikube kubectl -- get kafka {kafka-clustername} -o jsonpath={.status} | jq -r ".listeners”
minikube kubectl -- get kafka my-cluster -o jsonpath={.status} | jq -r ".listeners"
이때 나오는 bootstrapServers 값이 카프카 브로커의 Bootstrap IP
9092포트로 지정한 Plain Listener는 "my-cluster-kafka-bootstrap.default.svc:9092"
9093포트로 지정한 TLS Listener는 "my-cluster-kafka-bootstrap.default.svc:9093”
인것을 확인할수 있다.
'DATA Engineering > Kafka' 카테고리의 다른 글
CDC 아키텍쳐를 이루는 debezium, kafka connect (1) | 2023.10.23 |
---|---|
에러해결 : strimzi로 띄운 카프카 클러스터가 READY 가 안될때 (0) | 2023.03.25 |
카프카 토픽 생성, 프로듀서, 메세지, 삭제 명령어 (0) | 2022.11.29 |
Kafka 토픽 생성, 콘솔 프로듀서, 콘솔 컨슈머, 컨슈머그룹 명령어 (0) | 2022.11.08 |
Kafka에서 서버연결해서 메세지보내기 (0) | 2022.11.08 |