images:
  preload:
    refs:
      - apache/kafka:latest
kind:
  name: kafka-standalone
  nodes:
    - role: control-plane
      extraPortMappings:
        - containerPort: 30092
          hostPort: 9092
components:
  - name: kafka
    type: k8s
    k8s:
      manifests:
        - apiVersion: apps/v1
          kind: Deployment
          metadata:
            name: kafka
            labels:
              app: kafka
          spec:
            replicas: 1
            selector:
              matchLabels:
                app: kafka
            template:
              metadata:
                labels:
                  app: kafka
              spec:
                containers:
                  - name: kafka
                    image: apache/kafka:latest
                    ports:
                      - containerPort: 9092
                        name: internal
                      - containerPort: 9093
                        name: controller
                      - containerPort: 9094
                        name: external
                    env:
                      - name: KAFKA_NODE_ID
                        value: "1"
                      - name: KAFKA_PROCESS_ROLES
                        value: broker,controller
                      - name: KAFKA_LISTENERS
                        value: PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
                      - name: KAFKA_ADVERTISED_LISTENERS
                        value: PLAINTEXT://kafka:9092,EXTERNAL://localhost:9092
                      - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
                        value: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
                      - name: KAFKA_CONTROLLER_QUORUM_VOTERS
                        value: 1@localhost:9093
                      - name: KAFKA_CONTROLLER_LISTENER_NAMES
                        value: CONTROLLER
                      - name: KAFKA_INTER_BROKER_LISTENER_NAME
                        value: PLAINTEXT
                      - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
                        value: "1"
                      - name: KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR
                        value: "1"
                      - name: KAFKA_TRANSACTION_STATE_LOG_MIN_ISR
                        value: "1"
                      - name: KAFKA_HEAP_OPTS
                        value: -Xmx256m -Xms256m
                      - name: CLUSTER_ID
                        value: sew-kafka-standalone-01
                    resources:
                      requests:
                        cpu: 250m
                        memory: 512Mi
                      limits:
                        cpu: "1"
                        memory: 1Gi
        - apiVersion: v1
          kind: Service
          metadata:
            name: kafka
            labels:
              app: kafka
          spec:
            type: NodePort
            ports:
              - port: 9092
                targetPort: 9092
                name: internal
              - port: 9094
                targetPort: 9094
                nodePort: 30092
                name: external
            selector:
              app: kafka
