{{/*
# 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:
  name: {{ include "common.fullname" . }}
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ include "common.release" . }}
    heritage: {{ .Release.Service }}
spec:
  kafka:
    version: {{ .Values.version }}
    replicas: {{ .Values.replicaCount }}
    listeners:
      - name: plain
        port: {{ .Values.kafkaInternalPort }}
        type: internal
        tls: false
        authentication:
          type: {{ .Values.saslMechanism }}
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
      - name: external
        port: 9094
        type: nodeport
        tls: true
        authentication:
          type: tls
        configuration:
          bootstrap:
            nodePort: {{ .Values.global.nodePortPrefixExt }}91
          brokers:
            - broker: 0
              nodePort: {{ .Values.global.nodePortPrefixExt }}92
            - broker: 1
              nodePort: {{ .Values.global.nodePortPrefixExt }}93
    authorization:
      type: simple
      superUsers:
        - {{ .Values.kafkaStrimziAdminUser }}
    template:
      pod:
        securityContext:
          runAsUser: 0
          fsGroup: 0
    config:
      default.replication.factor: {{ .Values.replicaCount }}
      min.insync.replicas: {{ .Values.replicaCount }}
      offsets.topic.replication.factor: {{ .Values.replicaCount }}
      transaction.state.log.replication.factor: {{ .Values.replicaCount }}
      transaction.state.log.min.isr: {{ .Values.replicaCount }}
      log.message.format.version: "3.0"
      inter.broker.protocol.version: "3.0"
    storage:
      type: jbod
      class: {{ include "common.storageClass" (dict "dot" . "suffix" "kafka" "persistenceInfos" .Values.persistenceKafka) }}
      volumes:
      - id: 0
        type: persistent-claim
        size: {{ .Values.persistenceKafka.size }}
        deleteClaim: true
        class: {{ include "common.storageClass" (dict "dot" . "suffix" "kafka" "persistenceInfos" .Values.persistenceKafka) }}
  zookeeper:
    template:
      pod:
        securityContext:
          runAsUser: 0
          fsGroup: 0
    replicas: {{ .Values.replicaCount }}
    config:
      ssl.hostnameVerification: false
    storage:
      type: persistent-claim
      size: {{ .Values.persistenceZk.size }}
      deleteClaim: true
      class: {{ include "common.storageClass" (dict "dot" . "suffix" "zk" "persistenceInfos" .Values.persistenceZk) }}
  entityOperator:
    topicOperator: {}
    userOperator: {}

