apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: kafka namespace: kafka spec: spec: selector: matchLabels: app: kafka serviceName: "broker" replicas: 3 updateStrategy: type: RollingUpdate template: metadata: labels: app: kafka annotations: prometheus.io/scrape: "true" prometheus.io/port: "5556" spec: terminationGracePeriodSeconds: 30 initContainers: - name: init-config image: solsson/kafka-initutils@sha256:c98d7fb5e9365eab391a5dcd4230fc6e72caf929c60f29ff091e3b0215124713 env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace command: ['/bin/bash', '/etc/kafka/init.sh'] volumeMounts: - name: config mountPath: /etc/kafka containers: - name: broker image: solsson/kafka:1.0.0@sha256:17fdf1637426f45c93c65826670542e36b9f3394ede1cb61885c6a4befa8f72d env: - name: KAFKA_LOG4J_OPTS value: -Dlog4j.configuration=file:/etc/kafka/log4j.properties - name: JMX_PORT value: "5555" ports: - name: jmx containerPort: 5555 - name: inside containerPort: 9092 - name: outside containerPort: 9094 command: - ./bin/kafka-server-start.sh - /etc/kafka/server.properties - --override - zookeeper.connect=zookeeper:2181 - --override - log.retention.hours=-1 - --override - log.dirs=/var/lib/kafka/data/topics - --override - auto.create.topics.enable=false resources: requests: cpu: 100m memory: 512Mi readinessProbe: tcpSocket: port: 9092 timeoutSeconds: 1 volumeMounts: - name: config mountPath: /etc/kafka - name: data mountPath: /var/lib/kafka/data - name: metrics image: solsson/kafka-prometheus-jmx-exporter@sha256:40a6ab24ccac0ed5acb8c02dccfbb1f5924fd97f46c0450e0245686c24138b53 command: - java - -Xmx64M - -XX:MaxMetaspaceSize=32m - -jar - jmx_prometheus_httpserver.jar - "5556" - /etc/kafka/jmx-kafka-prometheus.yml ports: - containerPort: 5556 livenessProbe: httpGet: path: /liveness port: 5556 periodSeconds: 60 resources: requests: cpu: 0m memory: 100Mi limits: memory: 200Mi volumeMounts: - name: config mountPath: /etc/kafka volumes: - name: config configMap: name: broker-config volumeClaimTemplates: - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] storageClassName: kafka-broker resources: requests: storage: 200Gi