반응형
사전 준비
- k8s 클러스터
- helm 설치
1. Strimzi-Kafka-Operator 설치
- 저 같은 경우 Helm 차트를 사용해서 Operator 설치를 해주었습니다.
- 설치가 완료되면, Strimzi Operator와 CRD 모두 설치가 됩니다.
- 다만, 업그레이드가 필요한 경우 CRD는 수동으로 적용 시켜주어야 합니다.
helm install my-strimzi-kafka-operator oci://quay.io/strimzi-helm/strimzi-kafka-operator --version 0.47.0
- 현재는 최신 버전인 0.47.0 버전으로 설치를 했지만, 이전 버전으로 설치를 했다면 아래와 같이 업그레이들 해주어야 합니다.
번외, Upgrade 과정
- CRD 수동 갱신 (0.35 -> 0.47)
kubectl apply -f https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.47.0/strimzi-crds-0.47.0.yaml
- CRD 수동 갱신 (0.35 -> 0.47)
- Operator 업그레이드
helm upgrade strimzi-cluster-operator oci://quay.io/strimzi-helm/strimzi-kafka-operator --version 0.47.0
- Operator 업그레이드
Kafka 배포
저 같은 경우 테스트 용도로 사용을 하려고, Bootstrap 서버를 외부로 노출시키고 tls 인증을 꺼두었습니다.
KafkaNodePool(Controller) 리소스
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaNodePool metadata: name: controller namespace: kafka-operator labels: strimzi.io/cluster: kafka-cluster spec: replicas: 1 roles: - controller storage: type: jbod volumes: - id: 0 type: persistent-claim size: 100Gi class: ebs-gp3-sc kraftMetadata: shared deleteClaim: false
KafkaNodePool(Broker) 리소스
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaNodePool metadata: name: broker namespace: kafka-operator labels: strimzi.io/cluster: kafka-cluster spec: replicas: 2 roles: - broker storage: type: jbod volumes: - id: 0 type: persistent-claim size: 100Gi class: ebs-gp3-sc kraftMetadata: shared deleteClaim: false
Kafka Cluster 리소스
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: kafka-cluster namespace: kafka-operator annotations: strimzi.io/node-pools: enabled strimzi.io/kraft: enabled spec: kafka: version: 4.0.0 metadataVersion: 4.0-IV3 listeners: - name: plain port: 9092 type: internal tls: false - name: tls port: 9093 type: internal tls: true config: offsets.topic.replication.factor: 2 transaction.state.log.replication.factor: 2 transaction.state.log.min.isr: 1 default.replication.factor: 2 min.insync.replicas: 1 entityOperator: topicOperator: {} userOperator: {}
옵션 | 설명 |
---|---|
offsets.topic.replication.factor | - Kafka consumer 그룹의 오프셋 정보를 저장하는 내부 토픽의 복제 계수입니다. - 값이 2라면, 브로커 2개에 해당 토픽 데이터가 복제됩니다. - 이 값은 클러스터의 브로커 수보다 크면 안 됨. - ❗ 예: 브로커가 2개인데 replication.factor: 3이면 토픽 생성 실패 |
transaction.state.log.replication.factor | - Kafka의 트랜잭션 기능(exactly-once, idempotent producer 등)에 사용되는 내부 로그 토픽의 복제 계수입니다. - 트랜잭션 상태를 안전하게 저장하는 데 중요합니다. - Kafka가 트랜잭션 프로듀서일 때 사용됩니다. |
transaction.state.log.min.isr | - 트랜잭션 로그 토픽의 최소 동기화 복제본 수(min in-sync replicas)입니다. - 이보다 적으면 트랜잭션 commit 불가 → 안정성 보장 - 테스트에서는 1도 가능하지만, 프로덕션에서는 최소 2 이상 권장 |
default.replication.factor | - Kafka에 토픽을 명시적으로 replication.factor 없이 생성할 경우 적용되는 기본 복제 계수입니다. - 일반 애플리케이션이 auto.create.topics.enable=true로 토픽을 생성할 때 사용됩니다. |
min.insync.replicas | - 정상적인 producer write를 위해 최소한 몇 개의 replica가 동기화돼 있어야 하는지를 정의합니다. - 이보다 적은 replica만 살아 있으면 produce 요청 거부됨. - acks=all 인 경우에도 이 값을 만족하지 못하면 producer는 오류를 받습니다.- 테스트 환경에서는 1이 현실적인 선택이지만, 프로덕션에서는 최소 2 이상 권장 |
반응형
'Kafka' 카테고리의 다른 글
Strimzi kafka 란? (2) | 2025.08.11 |
---|---|
Apache Kafka 에 대해 알아보기 (2) | 2025.08.06 |