{{/* # Copyright © 2022 Nordix Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. */}} apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: {{- include "common.resourceMetadata" . | nindent 2 }} spec: kafka: version: {{ .Values.config.kafkaVersion }} replicas: {{ .Values.replicaCount }} listeners: - name: plain port: {{ .Values.config.kafkaInternalPort }} type: internal tls: false authentication: type: {{ .Values.config.saslMechanism }} - name: tls port: 9093 type: internal tls: true authentication: type: tls - name: external port: 9094 type: {{ if (include "common.ingressEnabled" .) }}cluster-ip{{ else }}nodeport{{ end }} tls: {{ if (include "common.ingressEnabled" .) }}false{{ else }}true{{ end }} authentication: type: {{ if (include "common.ingressEnabled" .) }}{{ .Values.config.saslMechanism }}{{ else }}tls{{ end }} configuration: {{- if not (include "common.ingressEnabled" .) }} bootstrap: nodePort: {{ .Values.global.nodePortPrefixExt }}93 {{- end }} brokers: - broker: 0 advertisedHost: {{ .Values.config.advertisedHost }} advertisedPort: {{ .Values.config.advertizedPortBroker0 }} {{- if not (include "common.ingressEnabled" .) }} nodePort: {{ .Values.global.nodePortPrefixExt }}90 {{- end }} - broker: 1 advertisedHost: {{ .Values.config.advertisedHost }} advertisedPort: {{ .Values.config.advertizedPortBroker1 }} {{- if not (include "common.ingressEnabled" .) }} nodePort: {{ .Values.global.nodePortPrefixExt }}91 {{- end }} - broker: 2 advertisedHost: {{ .Values.config.advertisedHost }} advertisedPort: {{ .Values.config.advertizedPortBroker2 }} {{- if not (include "common.ingressEnabled" .) }} nodePort: {{ .Values.global.nodePortPrefixExt }}92 {{- end }} authorization: type: {{ .Values.config.authType }} superUsers: - {{ .Values.config.strimziKafkaAdminUser }} template: pod: securityContext: runAsUser: 0 fsGroup: 0 config: default.replication.factor: {{ .Values.replicaCount }} min.insync.replicas: {{ (eq 1.0 (.Values.replicaCount)) | ternary 1 (sub .Values.replicaCount 1) }} offsets.topic.replication.factor: {{ .Values.replicaCount }} num.partitions: {{ mul .Values.replicaCount 2 }} transaction.state.log.replication.factor: {{ .Values.replicaCount }} transaction.state.log.min.isr: {{ (eq 1.0 (.Values.replicaCount)) | ternary 1 (sub .Values.replicaCount 1) }} log.message.format.version: {{ .Values.config.kafkaVersion }} inter.broker.protocol.version: {{ .Values.config.kafkaVersion }} auto.create.topics.enable: {{ .Values.config.autoCreateTopics }} storage: type: jbod volumes: - id: 0 type: persistent-claim size: {{ .Values.persistence.kafka.size }} deleteClaim: true class: {{ include "common.storageClass" (dict "dot" . "suffix" "kafka" "persistenceInfos" .Values.persistence.kafka) }} {{- if .Values.metrics.kafkaExporter.enabled }} metricsConfig: type: {{ .Values.metrics.kafkaExporter.metricsConfig.type }} valueFrom: configMapKeyRef: name: {{ include "common.fullname" . }} key: kafka-metrics-config.yml {{- end }} zookeeper: template: pod: securityContext: runAsUser: 0 fsGroup: 0 replicas: {{ .Values.replicaCount }} config: ssl.hostnameVerification: false ssl.quorum.hostnameVerification: false {{- if (include "common.onServiceMesh" .) }} sslQuorum: false {{- end }} storage: type: persistent-claim size: {{ .Values.persistence.zookeeper.size }} deleteClaim: true class: {{ include "common.storageClass" (dict "dot" . "suffix" "zk" "persistenceInfos" .Values.persistence.zookeeper) }} {{- if .Values.metrics.kafkaExporter.enabled }} metricsConfig: type: {{ .Values.metrics.kafkaExporter.metricsConfig.type }} valueFrom: configMapKeyRef: name: {{ include "common.fullname" . }} key: zookeeper-metrics-config.yml {{- end }} entityOperator: topicOperator: {} userOperator: {} {{- if .Values.cruiseControl.enabled }} cruiseControl: metricsConfig: type: {{ .Values.cruiseControl.metricsConfig.type }} valueFrom: configMapKeyRef: name: {{ include "common.fullname" . }} key: cruisecontrol-metrics-config.yml {{- end }} {{- if .Values.metrics.kafkaExporter.enabled }} kafkaExporter: topicRegex: {{ .Values.metrics.kafkaExporter.topicRegex }} groupRegex: {{ .Values.metrics.kafkaExporter.groupRegex }} resources: requests: cpu: {{ .Values.metrics.kafkaExporter.resources.requests.cpu }} memory: {{ .Values.metrics.kafkaExporter.resources.requests.memory }} limits: cpu: {{ .Values.metrics.kafkaExporter.resources.limits.cpu }} memory: {{ .Values.metrics.kafkaExporter.resources.limits.memory }} logging: {{ .Values.metrics.kafkaExporter.logging }} enableSaramaLogging: {{ .Values.metrics.kafkaExporter.enableSaramaLogging }} readinessProbe: initialDelaySeconds: {{ .Values.metrics.kafkaExporter.readinessProbe.initialDelaySeconds }} timeoutSeconds: {{ .Values.metrics.kafkaExporter.readinessProbe.timeoutSeconds }} livenessProbe: initialDelaySeconds: {{ .Values.metrics.kafkaExporter.livenessProbe.initialDelaySeconds }} timeoutSeconds: {{ .Values.metrics.kafkaExporter.livenessProbe.timeoutSeconds }} {{- end }}