blob: a808b844418f58ecfaae71c76253266673c528e3 [file] [log] [blame]
{{/*
# 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
{{- if .Values.affinity.podAntiAffinity.enabled }}
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: strimzi.io/name
operator: In
values:
- {{ include "common.fullname" . }}-kafka
topologyKey: "kubernetes.io/hostname"
{{- end }}
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
{{- if .Values.affinity.podAntiAffinity.enabled }}
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: strimzi.io/name
operator: In
values:
- {{ include "common.fullname" . }}-zookeeper
topologyKey: "kubernetes.io/hostname"
{{- end }}
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 }}