|
|
@@ -0,0 +1,446 @@
|
|
|
+---
|
|
|
+# Source: kafka/templates/serviceaccount.yaml
|
|
|
+apiVersion: v1
|
|
|
+kind: ServiceAccount
|
|
|
+metadata:
|
|
|
+ name: my-release-kafka
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ helm.sh/chart: kafka-11.8.6
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: kafka
|
|
|
+---
|
|
|
+# Source: kafka/templates/scripts-configmap.yaml
|
|
|
+apiVersion: v1
|
|
|
+kind: ConfigMap
|
|
|
+metadata:
|
|
|
+ name: my-release-kafka-scripts
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ helm.sh/chart: kafka-11.8.6
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+data:
|
|
|
+ setup.sh: |-
|
|
|
+ #!/bin/bash
|
|
|
+
|
|
|
+ ID="${MY_POD_NAME#"my-release-kafka-"}"
|
|
|
+ export KAFKA_CFG_BROKER_ID="$ID"
|
|
|
+
|
|
|
+ exec /entrypoint.sh /run.sh
|
|
|
+---
|
|
|
+# Source: kafka/charts/zookeeper/templates/svc-headless.yaml
|
|
|
+apiVersion: v1
|
|
|
+kind: Service
|
|
|
+metadata:
|
|
|
+ name: my-release-zookeeper-headless
|
|
|
+ namespace: default
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: zookeeper
|
|
|
+ helm.sh/chart: zookeeper-5.21.9
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: zookeeper
|
|
|
+spec:
|
|
|
+ type: ClusterIP
|
|
|
+ clusterIP: None
|
|
|
+ publishNotReadyAddresses: true
|
|
|
+ ports:
|
|
|
+
|
|
|
+ - name: tcp-client
|
|
|
+ port: 2181
|
|
|
+ targetPort: client
|
|
|
+
|
|
|
+
|
|
|
+ - name: follower
|
|
|
+ port: 2888
|
|
|
+ targetPort: follower
|
|
|
+ - name: tcp-election
|
|
|
+ port: 3888
|
|
|
+ targetPort: election
|
|
|
+ selector:
|
|
|
+ app.kubernetes.io/name: zookeeper
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/component: zookeeper
|
|
|
+---
|
|
|
+# Source: kafka/charts/zookeeper/templates/svc.yaml
|
|
|
+apiVersion: v1
|
|
|
+kind: Service
|
|
|
+metadata:
|
|
|
+ name: my-release-zookeeper
|
|
|
+ namespace: default
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: zookeeper
|
|
|
+ helm.sh/chart: zookeeper-5.21.9
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: zookeeper
|
|
|
+spec:
|
|
|
+ type: ClusterIP
|
|
|
+ ports:
|
|
|
+
|
|
|
+ - name: tcp-client
|
|
|
+ port: 2181
|
|
|
+ targetPort: client
|
|
|
+
|
|
|
+
|
|
|
+ - name: follower
|
|
|
+ port: 2888
|
|
|
+ targetPort: follower
|
|
|
+ - name: tcp-election
|
|
|
+ port: 3888
|
|
|
+ targetPort: election
|
|
|
+ selector:
|
|
|
+ app.kubernetes.io/name: zookeeper
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/component: zookeeper
|
|
|
+---
|
|
|
+# Source: kafka/templates/svc-headless.yaml
|
|
|
+apiVersion: v1
|
|
|
+kind: Service
|
|
|
+metadata:
|
|
|
+ name: my-release-kafka-headless
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ helm.sh/chart: kafka-11.8.6
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: kafka
|
|
|
+spec:
|
|
|
+ type: ClusterIP
|
|
|
+ clusterIP: None
|
|
|
+ ports:
|
|
|
+ - name: tcp-client
|
|
|
+ port: 9092
|
|
|
+ protocol: TCP
|
|
|
+ targetPort: kafka-client
|
|
|
+ - name: tcp-internal
|
|
|
+ port: 9093
|
|
|
+ protocol: TCP
|
|
|
+ targetPort: kafka-internal
|
|
|
+ selector:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/component: kafka
|
|
|
+---
|
|
|
+# Source: kafka/templates/svc.yaml
|
|
|
+apiVersion: v1
|
|
|
+kind: Service
|
|
|
+metadata:
|
|
|
+ name: my-release-kafka
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ helm.sh/chart: kafka-11.8.6
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: kafka
|
|
|
+spec:
|
|
|
+ type: ClusterIP
|
|
|
+ ports:
|
|
|
+ - name: tcp-client
|
|
|
+ port: 9092
|
|
|
+ protocol: TCP
|
|
|
+ targetPort: kafka-client
|
|
|
+ nodePort: null
|
|
|
+ selector:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/component: kafka
|
|
|
+---
|
|
|
+# Source: kafka/charts/zookeeper/templates/statefulset.yaml
|
|
|
+apiVersion: apps/v1
|
|
|
+kind: StatefulSet
|
|
|
+metadata:
|
|
|
+ name: my-release-zookeeper
|
|
|
+ namespace: default
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: zookeeper
|
|
|
+ helm.sh/chart: zookeeper-5.21.9
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: zookeeper
|
|
|
+ role: zookeeper
|
|
|
+spec:
|
|
|
+ serviceName: my-release-zookeeper-headless
|
|
|
+ replicas: 1
|
|
|
+ podManagementPolicy: Parallel
|
|
|
+ updateStrategy:
|
|
|
+ type: RollingUpdate
|
|
|
+ selector:
|
|
|
+ matchLabels:
|
|
|
+ app.kubernetes.io/name: zookeeper
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/component: zookeeper
|
|
|
+ template:
|
|
|
+ metadata:
|
|
|
+ name: my-release-zookeeper
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: zookeeper
|
|
|
+ helm.sh/chart: zookeeper-5.21.9
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: zookeeper
|
|
|
+ spec:
|
|
|
+
|
|
|
+ serviceAccountName: default
|
|
|
+ securityContext:
|
|
|
+ fsGroup: 1001
|
|
|
+ containers:
|
|
|
+ - name: zookeeper
|
|
|
+ image: docker.io/bitnami/zookeeper:3.6.2-debian-10-r10
|
|
|
+ imagePullPolicy: "IfNotPresent"
|
|
|
+ securityContext:
|
|
|
+ runAsUser: 1001
|
|
|
+ command:
|
|
|
+ - bash
|
|
|
+ - -ec
|
|
|
+ - |
|
|
|
+ # Execute entrypoint as usual after obtaining ZOO_SERVER_ID based on POD hostname
|
|
|
+ HOSTNAME=`hostname -s`
|
|
|
+ if [[ $HOSTNAME =~ (.*)-([0-9]+)$ ]]; then
|
|
|
+ ORD=${BASH_REMATCH[2]}
|
|
|
+ export ZOO_SERVER_ID=$((ORD+1))
|
|
|
+ else
|
|
|
+ echo "Failed to get index from hostname $HOST"
|
|
|
+ exit 1
|
|
|
+ fi
|
|
|
+ exec /entrypoint.sh /run.sh
|
|
|
+ resources:
|
|
|
+ requests:
|
|
|
+ cpu: 250m
|
|
|
+ memory: 256Mi
|
|
|
+ env:
|
|
|
+ - name: ZOO_DATA_LOG_DIR
|
|
|
+ value: ""
|
|
|
+ - name: ZOO_PORT_NUMBER
|
|
|
+ value: "2181"
|
|
|
+ - name: ZOO_TICK_TIME
|
|
|
+ value: "2000"
|
|
|
+ - name: ZOO_INIT_LIMIT
|
|
|
+ value: "10"
|
|
|
+ - name: ZOO_SYNC_LIMIT
|
|
|
+ value: "5"
|
|
|
+ - name: ZOO_MAX_CLIENT_CNXNS
|
|
|
+ value: "60"
|
|
|
+ - name: ZOO_4LW_COMMANDS_WHITELIST
|
|
|
+ value: "srvr, mntr, ruok"
|
|
|
+ - name: ZOO_LISTEN_ALLIPS_ENABLED
|
|
|
+ value: "no"
|
|
|
+ - name: ZOO_AUTOPURGE_INTERVAL
|
|
|
+ value: "0"
|
|
|
+ - name: ZOO_AUTOPURGE_RETAIN_COUNT
|
|
|
+ value: "3"
|
|
|
+ - name: ZOO_MAX_SESSION_TIMEOUT
|
|
|
+ value: "40000"
|
|
|
+ - name: ZOO_SERVERS
|
|
|
+ value: my-release-zookeeper-0.my-release-zookeeper-headless.default.svc.cluster.local:2888:3888
|
|
|
+ - name: ZOO_ENABLE_AUTH
|
|
|
+ value: "no"
|
|
|
+ - name: ZOO_HEAP_SIZE
|
|
|
+ value: "1024"
|
|
|
+ - name: ZOO_LOG_LEVEL
|
|
|
+ value: "ERROR"
|
|
|
+ - name: ALLOW_ANONYMOUS_LOGIN
|
|
|
+ value: "yes"
|
|
|
+ - name: POD_NAME
|
|
|
+ valueFrom:
|
|
|
+ fieldRef:
|
|
|
+ apiVersion: v1
|
|
|
+ fieldPath: metadata.name
|
|
|
+ ports:
|
|
|
+
|
|
|
+ - name: client
|
|
|
+ containerPort: 2181
|
|
|
+
|
|
|
+
|
|
|
+ - name: follower
|
|
|
+ containerPort: 2888
|
|
|
+ - name: election
|
|
|
+ containerPort: 3888
|
|
|
+ livenessProbe:
|
|
|
+ exec:
|
|
|
+ command: ['/bin/bash', '-c', 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok']
|
|
|
+ initialDelaySeconds: 30
|
|
|
+ periodSeconds: 10
|
|
|
+ timeoutSeconds: 5
|
|
|
+ successThreshold: 1
|
|
|
+ failureThreshold: 6
|
|
|
+ readinessProbe:
|
|
|
+ exec:
|
|
|
+ command: ['/bin/bash', '-c', 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok']
|
|
|
+ initialDelaySeconds: 5
|
|
|
+ periodSeconds: 10
|
|
|
+ timeoutSeconds: 5
|
|
|
+ successThreshold: 1
|
|
|
+ failureThreshold: 6
|
|
|
+ volumeMounts:
|
|
|
+ - name: data
|
|
|
+ mountPath: /bitnami/zookeeper
|
|
|
+ volumes:
|
|
|
+ volumeClaimTemplates:
|
|
|
+ - metadata:
|
|
|
+ name: data
|
|
|
+ annotations:
|
|
|
+ spec:
|
|
|
+ accessModes:
|
|
|
+ - "ReadWriteOnce"
|
|
|
+ resources:
|
|
|
+ requests:
|
|
|
+ storage: "8Gi"
|
|
|
+---
|
|
|
+# Source: kafka/templates/statefulset.yaml
|
|
|
+apiVersion: apps/v1
|
|
|
+kind: StatefulSet
|
|
|
+metadata:
|
|
|
+ name: my-release-kafka
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ helm.sh/chart: kafka-11.8.6
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: kafka
|
|
|
+spec:
|
|
|
+ podManagementPolicy: Parallel
|
|
|
+ replicas: 1
|
|
|
+ selector:
|
|
|
+ matchLabels:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/component: kafka
|
|
|
+ serviceName: my-release-kafka-headless
|
|
|
+ updateStrategy:
|
|
|
+ type: "RollingUpdate"
|
|
|
+ template:
|
|
|
+ metadata:
|
|
|
+ labels:
|
|
|
+ app.kubernetes.io/name: kafka
|
|
|
+ helm.sh/chart: kafka-11.8.6
|
|
|
+ app.kubernetes.io/instance: my-release
|
|
|
+ app.kubernetes.io/managed-by: Helm
|
|
|
+ app.kubernetes.io/component: kafka
|
|
|
+ spec:
|
|
|
+ securityContext:
|
|
|
+ fsGroup: 1001
|
|
|
+ runAsUser: 1001
|
|
|
+ serviceAccountName: my-release-kafka
|
|
|
+ containers:
|
|
|
+ - name: kafka
|
|
|
+ image: docker.io/bitnami/kafka:2.6.0-debian-10-r30
|
|
|
+ imagePullPolicy: "IfNotPresent"
|
|
|
+ command:
|
|
|
+ - /scripts/setup.sh
|
|
|
+ env:
|
|
|
+ - name: BITNAMI_DEBUG
|
|
|
+ value: "false"
|
|
|
+ - name: MY_POD_IP
|
|
|
+ valueFrom:
|
|
|
+ fieldRef:
|
|
|
+ fieldPath: status.podIP
|
|
|
+ - name: MY_POD_NAME
|
|
|
+ valueFrom:
|
|
|
+ fieldRef:
|
|
|
+ fieldPath: metadata.name
|
|
|
+ - name: KAFKA_CFG_ZOOKEEPER_CONNECT
|
|
|
+ value: "my-release-zookeeper"
|
|
|
+ - name: KAFKA_INTER_BROKER_LISTENER_NAME
|
|
|
+ value: "INTERNAL"
|
|
|
+ - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP
|
|
|
+ value: "INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT"
|
|
|
+ - name: KAFKA_CFG_LISTENERS
|
|
|
+ value: "INTERNAL://:9093,CLIENT://:9092"
|
|
|
+ - name: KAFKA_CFG_ADVERTISED_LISTENERS
|
|
|
+ value: "INTERNAL://$(MY_POD_NAME).my-release-kafka-headless.default.svc.cluster.local:9093,CLIENT://$(MY_POD_NAME).my-release-kafka-headless.default.svc.cluster.local:9092"
|
|
|
+ - name: ALLOW_PLAINTEXT_LISTENER
|
|
|
+ value: "yes"
|
|
|
+ - name: KAFKA_CFG_DELETE_TOPIC_ENABLE
|
|
|
+ value: "false"
|
|
|
+ - name: KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE
|
|
|
+ value: "true"
|
|
|
+ - name: KAFKA_HEAP_OPTS
|
|
|
+ value: "-Xmx1024m -Xms1024m"
|
|
|
+ - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MESSAGES
|
|
|
+ value: "10000"
|
|
|
+ - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MS
|
|
|
+ value: "1000"
|
|
|
+ - name: KAFKA_CFG_LOG_RETENTION_BYTES
|
|
|
+ value: "1073741824"
|
|
|
+ - name: KAFKA_CFG_LOG_RETENTION_CHECK_INTERVALS_MS
|
|
|
+ value: "300000"
|
|
|
+ - name: KAFKA_CFG_LOG_RETENTION_HOURS
|
|
|
+ value: "168"
|
|
|
+ - name: KAFKA_CFG_MESSAGE_MAX_BYTES
|
|
|
+ value: "1000012"
|
|
|
+ - name: KAFKA_CFG_LOG_SEGMENT_BYTES
|
|
|
+ value: "1073741824"
|
|
|
+ - name: KAFKA_CFG_LOG_DIRS
|
|
|
+ value: "/bitnami/kafka/data"
|
|
|
+ - name: KAFKA_CFG_DEFAULT_REPLICATION_FACTOR
|
|
|
+ value: "1"
|
|
|
+ - name: KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR
|
|
|
+ value: "1"
|
|
|
+ - name: KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR
|
|
|
+ value: "1"
|
|
|
+ - name: KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR
|
|
|
+ value: "1"
|
|
|
+ - name: KAFKA_CFG_NUM_IO_THREADS
|
|
|
+ value: "8"
|
|
|
+ - name: KAFKA_CFG_NUM_NETWORK_THREADS
|
|
|
+ value: "3"
|
|
|
+ - name: KAFKA_CFG_NUM_PARTITIONS
|
|
|
+ value: "1"
|
|
|
+ - name: KAFKA_CFG_NUM_RECOVERY_THREADS_PER_DATA_DIR
|
|
|
+ value: "1"
|
|
|
+ - name: KAFKA_CFG_SOCKET_RECEIVE_BUFFER_BYTES
|
|
|
+ value: "102400"
|
|
|
+ - name: KAFKA_CFG_SOCKET_REQUEST_MAX_BYTES
|
|
|
+ value: "104857600"
|
|
|
+ - name: KAFKA_CFG_SOCKET_SEND_BUFFER_BYTES
|
|
|
+ value: "102400"
|
|
|
+ - name: KAFKA_CFG_ZOOKEEPER_CONNECTION_TIMEOUT_MS
|
|
|
+ value: "6000"
|
|
|
+ ports:
|
|
|
+ - name: kafka-client
|
|
|
+ containerPort: 9092
|
|
|
+ - name: kafka-internal
|
|
|
+ containerPort: 9093
|
|
|
+ livenessProbe:
|
|
|
+ tcpSocket:
|
|
|
+ port: kafka-client
|
|
|
+ initialDelaySeconds: 10
|
|
|
+ timeoutSeconds: 5
|
|
|
+ failureThreshold:
|
|
|
+ periodSeconds:
|
|
|
+ successThreshold:
|
|
|
+ readinessProbe:
|
|
|
+ tcpSocket:
|
|
|
+ port: kafka-client
|
|
|
+ initialDelaySeconds: 5
|
|
|
+ timeoutSeconds: 5
|
|
|
+ failureThreshold: 6
|
|
|
+ periodSeconds:
|
|
|
+ successThreshold:
|
|
|
+ resources:
|
|
|
+ limits: {}
|
|
|
+ requests: {}
|
|
|
+ volumeMounts:
|
|
|
+ - name: data
|
|
|
+ mountPath: /bitnami/kafka
|
|
|
+ - name: scripts
|
|
|
+ mountPath: /scripts/setup.sh
|
|
|
+ subPath: setup.sh
|
|
|
+ volumes:
|
|
|
+ - name: scripts
|
|
|
+ configMap:
|
|
|
+ name: my-release-kafka-scripts
|
|
|
+ defaultMode: 0755
|
|
|
+ volumeClaimTemplates:
|
|
|
+ - metadata:
|
|
|
+ name: data
|
|
|
+ spec:
|
|
|
+ accessModes:
|
|
|
+ - "ReadWriteOnce"
|
|
|
+ resources:
|
|
|
+ requests:
|
|
|
+ storage: "8Gi"
|
|
|
+
|