{{/*
# 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 }}
