카테고리 없음

카프카 띄우기

흰곰곰 2025. 2. 6. 22:06
apiVersion: v1
kind: ConfigMap
metadata:
  name: kafka-config
data:
  kafka-0: "0"
  kafka-1: "1"
  kafka-2: "2"
  
  
  

apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    service: kafka
  name: kafka
spec:
  serviceName: kafka
  replicas: 3
  selector:
    matchLabels:
      service: kafka
  template:
    metadata:
      labels:
        network/kafka-network: "true"
        service: kafka
    spec:
      securityContext:
        fsGroup: 1000
      enableServiceLinks: false
      containers:
      - name: kafka
        imagePullPolicy: IfNotPresent
        image: confluentinc/cp-kafka:7.0.1
        ports:
          - containerPort: 9092
          - containerPort: 9093
        env:
          # 🟢 KRaft 모드 활성화
          - name: KAFKA_NODE_ID
            valueFrom:
              configMapKeyRef:
                name: kafka-config
                key: "$(POD_NAME)"
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: KAFKA_PROCESS_ROLES
            value: "controller,broker"
          - name: KAFKA_CONTROLLER_QUORUM_VOTERS
            value: "0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093"
          - name: KAFKA_LISTENERS
            value: "PLAINTEXT://:9092,CONTROLLER://:9093"
          - name: KAFKA_ADVERTISED_LISTENERS
            value: "PLAINTEXT://:9092"
          - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
            value: "PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT"
          - name: KAFKA_CONTROLLER_LISTENER_NAMES
            value: "CONTROLLER"
          - name: KAFKA_LOG_DIRS
            value: "/var/lib/kafka/data"
          - name: KAFKA_AUTO_CREATE_TOPICS_ENABLE
            value: "true"
        volumeMounts:
          - mountPath: /var/lib/kafka/
            name: kafka-data
      hostname: kafka
      restartPolicy: Always
  volumeClaimTemplates:
    - metadata:
        name: kafka-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
            
            
            
            
            
 apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    service: kafka
  name: kafka
spec:
  serviceName: kafka
  replicas: 3
  selector:
    matchLabels:
      service: kafka
  template:
    metadata:
      labels:
        network/kafka-network: "true"
        service: kafka
    spec:
      securityContext:
        fsGroup: 1000
      enableServiceLinks: false
      containers:
      - name: kafka
        imagePullPolicy: IfNotPresent
        image: confluentinc/cp-kafka:7.0.1
        ports:
          - containerPort: 9092
          - containerPort: 9093
        env:
          - name: POD_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
        command:
          - /bin/sh
        args:
          - -c
          - |
            export KAFKA_NODE_ID=$(echo ${POD_NAME##*-});
            exec /usr/bin/dumb-init /bin/bash -c "/etc/confluent/docker/run"
        volumeMounts:
          - mountPath: /var/lib/kafka/
            name: kafka-data
      hostname: kafka
      restartPolicy: Always
  volumeClaimTemplates:
    - metadata:
        name: kafka-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
env:
  - name: POD_NAME
    valueFrom:
      fieldRef:
        fieldPath: metadata.name
  - name: KAFKA_NODE_ID
    value: "$(echo ${POD_NAME##*-})"
    
    
    
    

env:
  - name: POD_NAME
    valueFrom:
      fieldRef:
        fieldPath: metadata.name
command:
  - sh
  - -c
  - |
    export KAFKA_NODE_ID=${POD_NAME##*-}
    echo "KAFKA_NODE_ID=${KAFKA_NODE_ID}"
    exec /etc/confluent/docker/run
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    service: zookeeper
  name: zookeeper
spec:
  serviceName: zookeeper
  replicas: 3  # ✅ 3개 Replica
  selector:
    matchLabels:
      service: zookeeper
  template:
    metadata:
      labels:
        network/kafka-network: "true"
        service: zookeeper
    spec:
      securityContext:
        fsGroup: 1000
      enableServiceLinks: false
      containers:
        - name: zookeeper
          imagePullPolicy: Always
          image: confluentinc/cp-zookeeper:7.3.2
          ports:
            - containerPort: 2181
          env:
            - name: ZOOKEEPER_CLIENT_PORT
              value: "2181"
            - name: ZOOKEEPER_DATA_DIR
              value: "/var/lib/zookeeper/data"
            - name: ZOOKEEPER_LOG_DIR
              value: "/var/lib/zookeeper/log"
            - name: ZOOKEEPER_SERVER_ID
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name  # ✅ Pod 이름을 가져옴
            - name: ZOOKEEPER_SERVERS
              value: "zookeeper-0.zookeeper:2888:3888,zookeeper-1.zookeeper:2888:3888,zookeeper-2.zookeeper:2888:3888"
          command:
            - sh
            - -c
            - |
              echo $(( ${HOSTNAME##*-} + 1 )) > /var/lib/zookeeper/data/myid
              exec /etc/confluent/docker/run
          resources: {}
          volumeMounts:
            - mountPath: /var/lib/zookeeper/data
              name: zookeeper-data
            - mountPath: /var/lib/zookeeper/log
              name: zookeeper-log
      restartPolicy: Always
  volumeClaimTemplates:
    - metadata:
        name: zookeeper-data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1024Mi
    - metadata:
        name: zookeeper-log
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1024Mi