github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/applications/kafka/manifest.yaml (about) 1 --- 2 apiVersion: v1 3 kind: Namespace 4 metadata: 5 name: kafka-system 6 labels: 7 app.kubernetes.io/name: kafka 8 app.kubernetes.io/instance: my-kafka 9 --- 10 # Source: kafka/templates/serviceaccount.yaml 11 apiVersion: v1 12 kind: ServiceAccount 13 metadata: 14 name: my-kafka 15 namespace: kafka-system 16 labels: 17 app.kubernetes.io/name: kafka 18 app.kubernetes.io/instance: my-kafka 19 app.kubernetes.io/component: kafka 20 automountServiceAccountToken: true 21 --- 22 # Source: kafka/templates/scripts-configmap.yaml 23 apiVersion: v1 24 kind: ConfigMap 25 metadata: 26 name: my-kafka-scripts 27 namespace: kafka-system 28 labels: 29 app.kubernetes.io/name: kafka 30 app.kubernetes.io/instance: my-kafka 31 32 data: 33 setup.sh: |- 34 #!/bin/bash 35 36 ID="${MY_POD_NAME#"my-kafka-"}" 37 if [[ -f "/bitnami/kafka/data/meta.properties" ]]; then 38 export KAFKA_CFG_BROKER_ID="$(grep "broker.id" /bitnami/kafka/data/meta.properties | awk -F '=' '{print $2}')" 39 else 40 export KAFKA_CFG_BROKER_ID="$((ID + 0))" 41 fi 42 43 exec /entrypoint.sh /run.sh 44 --- 45 # Source: kafka/charts/zookeeper/templates/svc-headless.yaml 46 apiVersion: v1 47 kind: Service 48 metadata: 49 name: my-kafka-zookeeper-headless 50 namespace: kafka-system 51 labels: 52 app.kubernetes.io/name: zookeeper 53 app.kubernetes.io/instance: my-kafka 54 app.kubernetes.io/component: zookeeper 55 spec: 56 type: ClusterIP 57 clusterIP: None 58 publishNotReadyAddresses: true 59 ports: 60 - name: tcp-client 61 port: 2181 62 targetPort: client 63 - name: follower 64 port: 2888 65 targetPort: follower 66 - name: tcp-election 67 port: 3888 68 targetPort: election 69 selector: 70 app.kubernetes.io/name: zookeeper 71 app.kubernetes.io/instance: my-kafka 72 app.kubernetes.io/component: zookeeper 73 --- 74 # Source: kafka/charts/zookeeper/templates/svc.yaml 75 apiVersion: v1 76 kind: Service 77 metadata: 78 name: my-kafka-zookeeper 79 namespace: kafka-system 80 labels: 81 app.kubernetes.io/name: zookeeper 82 app.kubernetes.io/instance: my-kafka 83 app.kubernetes.io/component: zookeeper 84 spec: 85 type: ClusterIP 86 ports: 87 - name: tcp-client 88 port: 2181 89 targetPort: client 90 - name: follower 91 port: 2888 92 targetPort: follower 93 - name: tcp-election 94 port: 3888 95 targetPort: election 96 selector: 97 app.kubernetes.io/name: zookeeper 98 app.kubernetes.io/instance: my-kafka 99 app.kubernetes.io/component: zookeeper 100 --- 101 # Source: kafka/templates/svc-headless.yaml 102 apiVersion: v1 103 kind: Service 104 metadata: 105 name: my-kafka-headless 106 namespace: kafka-system 107 labels: 108 app.kubernetes.io/name: kafka 109 app.kubernetes.io/instance: my-kafka 110 app.kubernetes.io/component: kafka 111 spec: 112 type: ClusterIP 113 clusterIP: None 114 ports: 115 - name: tcp-client 116 port: 9092 117 protocol: TCP 118 targetPort: kafka-client 119 - name: tcp-internal 120 port: 9093 121 protocol: TCP 122 targetPort: kafka-internal 123 selector: 124 app.kubernetes.io/name: kafka 125 app.kubernetes.io/instance: my-kafka 126 app.kubernetes.io/component: kafka 127 --- 128 # Source: kafka/templates/svc.yaml 129 apiVersion: v1 130 kind: Service 131 metadata: 132 name: my-kafka 133 namespace: kafka-system 134 labels: 135 app.kubernetes.io/name: kafka 136 app.kubernetes.io/instance: my-kafka 137 app.kubernetes.io/component: kafka 138 spec: 139 type: ClusterIP 140 ports: 141 - name: tcp-client 142 port: 9092 143 protocol: TCP 144 targetPort: kafka-client 145 selector: 146 app.kubernetes.io/name: kafka 147 app.kubernetes.io/instance: my-kafka 148 app.kubernetes.io/component: kafka 149 --- 150 # Source: kafka/charts/zookeeper/templates/statefulset.yaml 151 apiVersion: apps/v1 152 kind: StatefulSet 153 metadata: 154 name: my-kafka-zookeeper 155 namespace: kafka-system 156 labels: 157 app.kubernetes.io/name: zookeeper 158 app.kubernetes.io/instance: my-kafka 159 app.kubernetes.io/component: zookeeper 160 role: zookeeper 161 spec: 162 serviceName: my-kafka-zookeeper-headless 163 replicas: 1 164 podManagementPolicy: Parallel 165 updateStrategy: 166 type: RollingUpdate 167 selector: 168 matchLabels: 169 app.kubernetes.io/name: zookeeper 170 app.kubernetes.io/instance: my-kafka 171 app.kubernetes.io/component: zookeeper 172 template: 173 metadata: 174 name: my-kafka-zookeeper 175 labels: 176 app.kubernetes.io/name: zookeeper 177 app.kubernetes.io/instance: my-kafka 178 app.kubernetes.io/component: zookeeper 179 spec: 180 serviceAccountName: default 181 securityContext: 182 fsGroup: 1001 183 affinity: 184 podAntiAffinity: 185 preferredDuringSchedulingIgnoredDuringExecution: 186 - podAffinityTerm: 187 labelSelector: 188 matchLabels: 189 app.kubernetes.io/name: zookeeper 190 app.kubernetes.io/instance: my-kafka 191 app.kubernetes.io/component: zookeeper 192 namespaces: 193 - "kafka-system" 194 topologyKey: kubernetes.io/hostname 195 weight: 1 196 containers: 197 - name: zookeeper 198 image: docker.io/bitnami/zookeeper:3.7.0-debian-10-r97 199 imagePullPolicy: "IfNotPresent" 200 securityContext: 201 runAsUser: 1001 202 command: 203 - bash 204 - -ec 205 - | 206 # Execute entrypoint as usual after obtaining ZOO_SERVER_ID 207 # check ZOO_SERVER_ID in persistent volume via myid 208 # if not present, set based on POD hostname 209 if [[ -f "/bitnami/zookeeper/data/myid" ]]; then 210 export ZOO_SERVER_ID="$(cat /bitnami/zookeeper/data/myid)" 211 else 212 HOSTNAME=`hostname -s` 213 if [[ $HOSTNAME =~ (.*)-([0-9]+)$ ]]; then 214 ORD=${BASH_REMATCH[2]} 215 export ZOO_SERVER_ID=$((ORD + 1 )) 216 else 217 echo "Failed to get index from hostname $HOST" 218 exit 1 219 fi 220 fi 221 exec /entrypoint.sh /run.sh 222 resources: 223 requests: 224 cpu: 250m 225 memory: 256Mi 226 env: 227 - name: BITNAMI_DEBUG 228 value: "false" 229 - name: ZOO_DATA_LOG_DIR 230 value: "" 231 - name: ZOO_PORT_NUMBER 232 value: "2181" 233 - name: ZOO_TICK_TIME 234 value: "2000" 235 - name: ZOO_INIT_LIMIT 236 value: "10" 237 - name: ZOO_SYNC_LIMIT 238 value: "5" 239 - name: ZOO_MAX_CLIENT_CNXNS 240 value: "60" 241 - name: ZOO_4LW_COMMANDS_WHITELIST 242 value: "srvr, mntr, ruok" 243 - name: ZOO_LISTEN_ALLIPS_ENABLED 244 value: "no" 245 - name: ZOO_AUTOPURGE_INTERVAL 246 value: "0" 247 - name: ZOO_AUTOPURGE_RETAIN_COUNT 248 value: "3" 249 - name: ZOO_MAX_SESSION_TIMEOUT 250 value: "40000" 251 - name: ZOO_SERVERS 252 value: my-kafka-zookeeper-0.my-kafka-zookeeper-headless.kafka-system.svc.cluster.local:2888:3888::1 253 - name: ZOO_ENABLE_AUTH 254 value: "no" 255 - name: ZOO_HEAP_SIZE 256 value: "1024" 257 - name: ZOO_LOG_LEVEL 258 value: "ERROR" 259 - name: ALLOW_ANONYMOUS_LOGIN 260 value: "yes" 261 - name: POD_NAME 262 valueFrom: 263 fieldRef: 264 apiVersion: v1 265 fieldPath: metadata.name 266 ports: 267 - name: client 268 containerPort: 2181 269 - name: follower 270 containerPort: 2888 271 - name: election 272 containerPort: 3888 273 livenessProbe: 274 exec: 275 command: ['/bin/bash', '-c', 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok'] 276 initialDelaySeconds: 30 277 periodSeconds: 10 278 timeoutSeconds: 5 279 successThreshold: 1 280 failureThreshold: 6 281 readinessProbe: 282 exec: 283 command: ['/bin/bash', '-c', 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok'] 284 initialDelaySeconds: 5 285 periodSeconds: 10 286 timeoutSeconds: 5 287 successThreshold: 1 288 failureThreshold: 6 289 volumeMounts: 290 - name: data 291 mountPath: /bitnami/zookeeper 292 volumeClaimTemplates: 293 - metadata: 294 name: data 295 spec: 296 accessModes: 297 - "ReadWriteOnce" 298 resources: 299 requests: 300 storage: "10Gi" 301 storageClassName: local-hostpath 302 --- 303 # Source: kafka/templates/statefulset.yaml 304 apiVersion: apps/v1 305 kind: StatefulSet 306 metadata: 307 name: my-kafka 308 namespace: kafka-system 309 labels: 310 app.kubernetes.io/name: kafka 311 app.kubernetes.io/instance: my-kafka 312 app.kubernetes.io/component: kafka 313 spec: 314 podManagementPolicy: Parallel 315 replicas: 3 316 selector: 317 matchLabels: 318 app.kubernetes.io/name: kafka 319 app.kubernetes.io/instance: my-kafka 320 app.kubernetes.io/component: kafka 321 serviceName: my-kafka-headless 322 updateStrategy: 323 type: "RollingUpdate" 324 template: 325 metadata: 326 labels: 327 app.kubernetes.io/name: kafka 328 app.kubernetes.io/instance: my-kafka 329 app.kubernetes.io/component: kafka 330 spec: 331 affinity: 332 podAntiAffinity: 333 preferredDuringSchedulingIgnoredDuringExecution: 334 - podAffinityTerm: 335 labelSelector: 336 matchLabels: 337 app.kubernetes.io/name: kafka 338 app.kubernetes.io/instance: my-kafka 339 namespaces: 340 - "kafka-system" 341 topologyKey: kubernetes.io/hostname 342 weight: 1 343 securityContext: 344 fsGroup: 1001 345 runAsUser: 1001 346 serviceAccountName: my-kafka 347 containers: 348 - name: kafka 349 image: docker.io/bitnami/kafka:2.8.0-debian-10-r61 350 imagePullPolicy: "IfNotPresent" 351 command: 352 - /scripts/setup.sh 353 env: 354 - name: BITNAMI_DEBUG 355 value: "false" 356 - name: MY_POD_IP 357 valueFrom: 358 fieldRef: 359 fieldPath: status.podIP 360 - name: MY_POD_NAME 361 valueFrom: 362 fieldRef: 363 fieldPath: metadata.name 364 - name: KAFKA_CFG_ZOOKEEPER_CONNECT 365 value: "my-kafka-zookeeper" 366 - name: KAFKA_INTER_BROKER_LISTENER_NAME 367 value: "INTERNAL" 368 - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP 369 value: "INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT" 370 - name: KAFKA_CFG_LISTENERS 371 value: "INTERNAL://:9093,CLIENT://:9092" 372 - name: KAFKA_CFG_ADVERTISED_LISTENERS 373 value: "INTERNAL://$(MY_POD_NAME).my-kafka-headless.kafka-system.svc.cluster.local:9093,CLIENT://$(MY_POD_NAME).my-kafka-headless.kafka-system.svc.cluster.local:9092" 374 - name: ALLOW_PLAINTEXT_LISTENER 375 value: "yes" 376 - name: KAFKA_VOLUME_DIR 377 value: "/bitnami/kafka" 378 - name: KAFKA_LOG_DIR 379 value: "/opt/bitnami/kafka/logs" 380 - name: KAFKA_CFG_DELETE_TOPIC_ENABLE 381 value: "false" 382 - name: KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE 383 value: "true" 384 - name: KAFKA_HEAP_OPTS 385 value: "-Xmx1024m -Xms1024m" 386 - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MESSAGES 387 value: "10000" 388 - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MS 389 value: "1000" 390 - name: KAFKA_CFG_LOG_RETENTION_BYTES 391 value: "1073741824" 392 - name: KAFKA_CFG_LOG_RETENTION_CHECK_INTERVALS_MS 393 value: "300000" 394 - name: KAFKA_CFG_LOG_RETENTION_HOURS 395 value: "168" 396 - name: KAFKA_CFG_MESSAGE_MAX_BYTES 397 value: "1000012" 398 - name: KAFKA_CFG_LOG_SEGMENT_BYTES 399 value: "1073741824" 400 - name: KAFKA_CFG_LOG_DIRS 401 value: "/bitnami/kafka/data" 402 - name: KAFKA_CFG_DEFAULT_REPLICATION_FACTOR 403 value: "1" 404 - name: KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR 405 value: "1" 406 - name: KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR 407 value: "1" 408 - name: KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR 409 value: "1" 410 - name: KAFKA_CFG_NUM_IO_THREADS 411 value: "8" 412 - name: KAFKA_CFG_NUM_NETWORK_THREADS 413 value: "3" 414 - name: KAFKA_CFG_NUM_PARTITIONS 415 value: "1" 416 - name: KAFKA_CFG_NUM_RECOVERY_THREADS_PER_DATA_DIR 417 value: "1" 418 - name: KAFKA_CFG_SOCKET_RECEIVE_BUFFER_BYTES 419 value: "102400" 420 - name: KAFKA_CFG_SOCKET_REQUEST_MAX_BYTES 421 value: "104857600" 422 - name: KAFKA_CFG_SOCKET_SEND_BUFFER_BYTES 423 value: "102400" 424 - name: KAFKA_CFG_ZOOKEEPER_CONNECTION_TIMEOUT_MS 425 value: "6000" 426 ports: 427 - name: kafka-client 428 containerPort: 9092 429 - name: kafka-internal 430 containerPort: 9093 431 livenessProbe: 432 tcpSocket: 433 port: kafka-client 434 initialDelaySeconds: 10 435 timeoutSeconds: 5 436 failureThreshold: 3 437 periodSeconds: 10 438 successThreshold: 1 439 readinessProbe: 440 tcpSocket: 441 port: kafka-client 442 initialDelaySeconds: 5 443 timeoutSeconds: 5 444 failureThreshold: 6 445 periodSeconds: 10 446 successThreshold: 1 447 resources: 448 limits: {} 449 requests: {} 450 volumeMounts: 451 - name: data 452 mountPath: /bitnami/kafka 453 - name: logs 454 mountPath: /opt/bitnami/kafka/logs 455 - name: scripts 456 mountPath: /scripts/setup.sh 457 subPath: setup.sh 458 volumes: 459 - name: scripts 460 configMap: 461 name: my-kafka-scripts 462 defaultMode: 0755 463 - name: logs 464 emptyDir: {} 465 volumeClaimTemplates: 466 - metadata: 467 name: data 468 spec: 469 accessModes: 470 - "ReadWriteOnce" 471 resources: 472 requests: 473 storage: "10Gi" 474 storageClassName: local-hostpath 475