1. 네임스페이스 생성 (선택)
$ sudo kubectl create namespace kafka
2. Helm 저장소 등록 및 최신화
$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm repo update
3. 명시적 KRaft Cluster ID 포함해서 설치
#$ helm uninstall my-kafka -n kafka
#$ kubectl delete pvc -n kafka --all
$ export KAFKA_CLUSTER_ID=$(uuidgen)
echo "Using Kafka Cluster ID: $KAFKA_CLUSTER_ID"
$ helm install my-kafka bitnami/kafka \
--namespace kafka \
--set kraft.enabled=true \
--set controller.replicaCount=3 \
--set broker.replicaCount=3 \
--set kraft.clusterId=$KAFKA_CLUSTER_ID
중요: 이 clusterId는 controller와 broker가 공유해야 하며, 명시해주면 안전하게 포맷
my-kafka: Helm 릴리스 이름
--namespace kafka: 지정한 네임스페이스에 설치
4. 설치 확인
$ sudo kubectl get pods -n kafka
my-kafka로 시작하는 kafka 들이 모두 Running 상태
5. Kafka Pod 내부로 들어가기
지금 설치된 Kafka는 KRaft 모드이며, 3개의 my-kafka-controller-0~2 pod, my-kafka-broker-0~2 3개가 떠 있는 상태
이 중 한 pod에 들어가서 Kafka 명령어를 실행
$ sudo kubectl exec -it -n kafka my-kafka-controller-0 -- bash
-it: 터미널 인터랙티브
-n kafka: kafka 네임스페이스
my-kafka-controller-0: 컨트롤러 0번 pod
6. 토픽 생성 및 메시지 테스트
6.1. Kafka 토픽 생성
Kafka 내부에 "test-topic" 이라는 이름의 메시지 채널생성
kafka-topics.sh --create \
--topic test-topic \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1
• --topic test-topic: 토픽 이름
• --bootstrap-server localhost:9092: Kafka 브로커 주소 (내부 pod에서 접속)
• --partitions: 파티션 수 (기본은 1)
• --replication-factor: 복제 수 (지금은 1로 충분)
6.2. 메시지 전송 - Producer 실행]
Kafka에 메시지를 입력하는 역할 (Producer)을 실행
kafka-console-producer.sh \
--broker-list localhost:9092 \
--topic test-topic
이 명령을 실행하면 입력 대기 상태
여기서 아무 문자열을 입력(예: hello kafka) → Enter
6.3. 메시지 수신 - Consumer 실행
다른 터미널을 하나 더 열고, 아래 명령어로 다른 pod에 접속
$ kubectl exec -it -n kafka my-kafka-controller-1 -- bash
그 안에서 Consumer 실행
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic \
--from-beginning
이 명령을 실행하면, Producer에서 보낸 메시지를 실시간으로 수신.
아까 입력한 hello kafka 같은 메시지가 여기 뜨면 성공
=================다시===================
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install my-kafka bitnami/kafka
kubectl get pods -n default
kubectl get svc -n default
'kill' 카테고리의 다른 글
minio, hadoop (6) | 2025.05.15 |
---|---|
Kafka (Helm 기반) 제거 스크립트 (2) | 2025.05.14 |
strimzi operator, helm 삭제 (0) | 2025.05.14 |
Strimzi Kafka Operator 기반으로 Kafka를 설치 (30) | 2025.05.13 |
kafka 설치 (66) | 2025.05.12 |