Broker 외부에 노출하기

2025. 3. 10. 00:17k8s/Kafka

Service: node별로 생성

apiVersion: v1
kind: Service
metadata:
  name: kafka-0-svc
  namespace: kafka
spec:
  type: LoadBalancer
  ports:
    - port: 9092 # Kafka default port
      targetPort: 9092
  selector:
    statefulset.kubernetes.io/pod-name: kafka-0

ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: kafka-external-config
  namespace: kafka
data:
  kafka-0: "PLAINTEXT://{LoadBalancer1 IP}:9092"
  kafka-1: "PLAINTEXT://{LoadBalancer2 IP}:9092"
  kafka-2: "PLAINTEXT://{LoadBalancer3 IP}:9092"

StatefulSet

          command:
            - "/bin/bash"
            - "-c"
            - |
              export KAFKA_ADVERTISED_LISTENERS=$(cat /etc/kafka-external-config/$(hostname))
              exec /etc/confluent/docker/run
          volumeMounts:
            - name: external-config
              mountPath: /etc/kafka-external-config
      volumes:
        - name: external-config
          configMap:
            name: kafka-external-config

producer

spring:
  kafka:
    bootstrap-servers: {외부IP1}:9092,{외부IP2}:9092,{외부IP3}:9092,