카테고리 없음
주키퍼 gpt
흰곰곰
2025. 2. 11. 13:34
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kafka
labels:
service: kafka
spec:
serviceName: kafka
replicas: 3 # Kafka 클러스터 노드 수
selector:
matchLabels:
service: kafka
template:
metadata:
labels:
service: kafka
spec:
securityContext:
fsGroup: 1000
enableServiceLinks: false
containers:
- name: kafka
image: confluentinc/cp-kafka:7.0.1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9092
volumeMounts:
- mountPath: /var/lib/kafka/
name: kafka-data
command:
- "sh"
- "-c"
- |
# 1️⃣ KAFKA_NODE_ID 설정 (Pod 이름에서 숫자 추출)
export KAFKA_NODE_ID=$(hostname | awk -F'-' '{print $NF}')
# 2️⃣ 클러스터 ID가 없으면 생성
if [ ! -f "/var/lib/kafka/meta.properties" ]; then
export KAFKA_CLUSTER_ID=$(kafka-storage random-uuid)
kafka-storage format --ignore-formatted --cluster-id $KAFKA_CLUSTER_ID --config /etc/kafka/kafka.properties
fi
# 3️⃣ Kafka 환경 변수 설정
export KAFKA_LOG_DIRS="/var/lib/kafka/data"
export KAFKA_PROCESS_ROLES="broker,controller"
export KAFKA_LISTENERS="PLAINTEXT://:9092,CONTROLLER://:9093"
export KAFKA_ADVERTISED_LISTENERS="PLAINTEXT://:9092"
export KAFKA_CONTROLLER_QUORUM_VOTERS="0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093"
export KAFKA_INTER_BROKER_LISTENER_NAME="PLAINTEXT"
export KAFKA_LISTENER_SECURITY_PROTOCOL_MAP="PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT"
# 4️⃣ Kafka 실행
/etc/confluent/docker/run
restartPolicy: Always
volumeClaimTemplates:
- metadata:
name: kafka-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kafka
labels:
service: kafka
spec:
serviceName: kafka
replicas: 3 # Kafka 클러스터 노드 수
selector:
matchLabels:
service: kafka
template:
metadata:
labels:
service: kafka
spec:
securityContext:
fsGroup: 1000
enableServiceLinks: false
containers:
- name: kafka
image: confluentinc/cp-kafka:7.0.1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9092
volumeMounts:
- mountPath: /var/lib/kafka/
name: kafka-data
command:
- "sh"
- "-c"
- |
# 1️⃣ KAFKA_NODE_ID 설정 (Pod 이름에서 숫자 추출)
export KAFKA_NODE_ID=$(hostname | awk -F'-' '{print $NF}')
# 2️⃣ KRaft 설정 파일 생성
cat <<EOF > /etc/kafka/kraft.properties
node.id=$KAFKA_NODE_ID
process.roles=broker,controller
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
advertised.listeners=PLAINTEXT://:9092
controller.quorum.voters=0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093
log.dirs=/var/lib/kafka/data
inter.broker.listener.name=PLAINTEXT
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
EOF
# 3️⃣ 클러스터 ID가 없으면 생성
if [ ! -f "/var/lib/kafka/meta.properties" ]; then
export KAFKA_CLUSTER_ID=$(kafka-storage random-uuid)
kafka-storage format --ignore-formatted --cluster-id $KAFKA_CLUSTER_ID --config /etc/kafka/kraft.properties
fi
# 4️⃣ Kafka 실행
/etc/confluent/docker/run
restartPolicy: Always
volumeClaimTemplates:
- metadata:
name: kafka-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi