github.com/alibaba/sealer@v0.8.6-0.20220430115802-37a2bdaa8173/applications/kafka/manifest.yaml (about)

     1  ---
     2  apiVersion: v1
     3  kind: Namespace
     4  metadata:
     5    name: kafka-system
     6    labels:
     7      app.kubernetes.io/name: kafka
     8      app.kubernetes.io/instance: my-kafka
     9  ---
    10  # Source: kafka/templates/serviceaccount.yaml
    11  apiVersion: v1
    12  kind: ServiceAccount
    13  metadata:
    14    name: my-kafka
    15    namespace: kafka-system
    16    labels:
    17      app.kubernetes.io/name: kafka
    18      app.kubernetes.io/instance: my-kafka
    19      app.kubernetes.io/component: kafka
    20  automountServiceAccountToken: true
    21  ---
    22  # Source: kafka/templates/scripts-configmap.yaml
    23  apiVersion: v1
    24  kind: ConfigMap
    25  metadata:
    26    name: my-kafka-scripts
    27    namespace: kafka-system
    28    labels:
    29      app.kubernetes.io/name: kafka
    30      app.kubernetes.io/instance: my-kafka
    31  
    32  data:
    33    setup.sh: |-
    34      #!/bin/bash
    35  
    36      ID="${MY_POD_NAME#"my-kafka-"}"
    37      if [[ -f "/bitnami/kafka/data/meta.properties" ]]; then
    38          export KAFKA_CFG_BROKER_ID="$(grep "broker.id" /bitnami/kafka/data/meta.properties | awk -F '=' '{print $2}')"
    39      else
    40          export KAFKA_CFG_BROKER_ID="$((ID + 0))"
    41      fi
    42  
    43      exec /entrypoint.sh /run.sh
    44  ---
    45  # Source: kafka/charts/zookeeper/templates/svc-headless.yaml
    46  apiVersion: v1
    47  kind: Service
    48  metadata:
    49    name: my-kafka-zookeeper-headless
    50    namespace: kafka-system
    51    labels:
    52      app.kubernetes.io/name: zookeeper
    53      app.kubernetes.io/instance: my-kafka
    54      app.kubernetes.io/component: zookeeper
    55  spec:
    56    type: ClusterIP
    57    clusterIP: None
    58    publishNotReadyAddresses: true
    59    ports:
    60      - name: tcp-client
    61        port: 2181
    62        targetPort: client
    63      - name: follower
    64        port: 2888
    65        targetPort: follower
    66      - name: tcp-election
    67        port: 3888
    68        targetPort: election
    69    selector:
    70      app.kubernetes.io/name: zookeeper
    71      app.kubernetes.io/instance: my-kafka
    72      app.kubernetes.io/component: zookeeper
    73  ---
    74  # Source: kafka/charts/zookeeper/templates/svc.yaml
    75  apiVersion: v1
    76  kind: Service
    77  metadata:
    78    name: my-kafka-zookeeper
    79    namespace: kafka-system
    80    labels:
    81      app.kubernetes.io/name: zookeeper
    82      app.kubernetes.io/instance: my-kafka
    83      app.kubernetes.io/component: zookeeper
    84  spec:
    85    type: ClusterIP
    86    ports:
    87      - name: tcp-client
    88        port: 2181
    89        targetPort: client
    90      - name: follower
    91        port: 2888
    92        targetPort: follower
    93      - name: tcp-election
    94        port: 3888
    95        targetPort: election
    96    selector:
    97      app.kubernetes.io/name: zookeeper
    98      app.kubernetes.io/instance: my-kafka
    99      app.kubernetes.io/component: zookeeper
   100  ---
   101  # Source: kafka/templates/svc-headless.yaml
   102  apiVersion: v1
   103  kind: Service
   104  metadata:
   105    name: my-kafka-headless
   106    namespace: kafka-system
   107    labels:
   108      app.kubernetes.io/name: kafka
   109      app.kubernetes.io/instance: my-kafka
   110      app.kubernetes.io/component: kafka
   111  spec:
   112    type: ClusterIP
   113    clusterIP: None
   114    ports:
   115      - name: tcp-client
   116        port: 9092
   117        protocol: TCP
   118        targetPort: kafka-client
   119      - name: tcp-internal
   120        port: 9093
   121        protocol: TCP
   122        targetPort: kafka-internal
   123    selector:
   124      app.kubernetes.io/name: kafka
   125      app.kubernetes.io/instance: my-kafka
   126      app.kubernetes.io/component: kafka
   127  ---
   128  # Source: kafka/templates/svc.yaml
   129  apiVersion: v1
   130  kind: Service
   131  metadata:
   132    name: my-kafka
   133    namespace: kafka-system
   134    labels:
   135      app.kubernetes.io/name: kafka
   136      app.kubernetes.io/instance: my-kafka
   137      app.kubernetes.io/component: kafka
   138  spec:
   139    type: ClusterIP
   140    ports:
   141      - name: tcp-client
   142        port: 9092
   143        protocol: TCP
   144        targetPort: kafka-client
   145    selector:
   146      app.kubernetes.io/name: kafka
   147      app.kubernetes.io/instance: my-kafka
   148      app.kubernetes.io/component: kafka
   149  ---
   150  # Source: kafka/charts/zookeeper/templates/statefulset.yaml
   151  apiVersion: apps/v1
   152  kind: StatefulSet
   153  metadata:
   154    name: my-kafka-zookeeper
   155    namespace: kafka-system
   156    labels:
   157      app.kubernetes.io/name: zookeeper
   158      app.kubernetes.io/instance: my-kafka
   159      app.kubernetes.io/component: zookeeper
   160      role: zookeeper
   161  spec:
   162    serviceName: my-kafka-zookeeper-headless
   163    replicas: 1
   164    podManagementPolicy: Parallel
   165    updateStrategy:
   166      type: RollingUpdate
   167    selector:
   168      matchLabels:
   169        app.kubernetes.io/name: zookeeper
   170        app.kubernetes.io/instance: my-kafka
   171        app.kubernetes.io/component: zookeeper
   172    template:
   173      metadata:
   174        name: my-kafka-zookeeper
   175        labels:
   176          app.kubernetes.io/name: zookeeper
   177          app.kubernetes.io/instance: my-kafka
   178          app.kubernetes.io/component: zookeeper
   179      spec:
   180        serviceAccountName: default
   181        securityContext:
   182          fsGroup: 1001
   183        affinity:
   184          podAntiAffinity:
   185            preferredDuringSchedulingIgnoredDuringExecution:
   186              - podAffinityTerm:
   187                  labelSelector:
   188                    matchLabels:
   189                      app.kubernetes.io/name: zookeeper
   190                      app.kubernetes.io/instance: my-kafka
   191                      app.kubernetes.io/component: zookeeper
   192                  namespaces:
   193                    - "kafka-system"
   194                  topologyKey: kubernetes.io/hostname
   195                weight: 1
   196        containers:
   197          - name: zookeeper
   198            image: docker.io/bitnami/zookeeper:3.7.0-debian-10-r97
   199            imagePullPolicy: "IfNotPresent"
   200            securityContext:
   201              runAsUser: 1001
   202            command:
   203              - bash
   204              - -ec
   205              - |
   206                # Execute entrypoint as usual after obtaining ZOO_SERVER_ID
   207                # check ZOO_SERVER_ID in persistent volume via myid
   208                # if not present, set based on POD hostname
   209                if [[ -f "/bitnami/zookeeper/data/myid" ]]; then
   210                  export ZOO_SERVER_ID="$(cat /bitnami/zookeeper/data/myid)"
   211                else
   212                  HOSTNAME=`hostname -s`
   213                  if [[ $HOSTNAME =~ (.*)-([0-9]+)$ ]]; then
   214                    ORD=${BASH_REMATCH[2]}
   215                    export ZOO_SERVER_ID=$((ORD + 1 ))
   216                  else
   217                    echo "Failed to get index from hostname $HOST"
   218                    exit 1
   219                  fi
   220                fi
   221                exec /entrypoint.sh /run.sh
   222            resources:
   223              requests:
   224                cpu: 250m
   225                memory: 256Mi
   226            env:
   227              - name: BITNAMI_DEBUG
   228                value: "false"
   229              - name: ZOO_DATA_LOG_DIR
   230                value: ""
   231              - name: ZOO_PORT_NUMBER
   232                value: "2181"
   233              - name: ZOO_TICK_TIME
   234                value: "2000"
   235              - name: ZOO_INIT_LIMIT
   236                value: "10"
   237              - name: ZOO_SYNC_LIMIT
   238                value: "5"
   239              - name: ZOO_MAX_CLIENT_CNXNS
   240                value: "60"
   241              - name: ZOO_4LW_COMMANDS_WHITELIST
   242                value: "srvr, mntr, ruok"
   243              - name: ZOO_LISTEN_ALLIPS_ENABLED
   244                value: "no"
   245              - name: ZOO_AUTOPURGE_INTERVAL
   246                value: "0"
   247              - name: ZOO_AUTOPURGE_RETAIN_COUNT
   248                value: "3"
   249              - name: ZOO_MAX_SESSION_TIMEOUT
   250                value: "40000"
   251              - name: ZOO_SERVERS
   252                value: my-kafka-zookeeper-0.my-kafka-zookeeper-headless.kafka-system.svc.cluster.local:2888:3888::1
   253              - name: ZOO_ENABLE_AUTH
   254                value: "no"
   255              - name: ZOO_HEAP_SIZE
   256                value: "1024"
   257              - name: ZOO_LOG_LEVEL
   258                value: "ERROR"
   259              - name: ALLOW_ANONYMOUS_LOGIN
   260                value: "yes"
   261              - name: POD_NAME
   262                valueFrom:
   263                  fieldRef:
   264                    apiVersion: v1
   265                    fieldPath: metadata.name
   266            ports:
   267              - name: client
   268                containerPort: 2181
   269              - name: follower
   270                containerPort: 2888
   271              - name: election
   272                containerPort: 3888
   273            livenessProbe:
   274              exec:
   275                command: ['/bin/bash', '-c', 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok']
   276              initialDelaySeconds: 30
   277              periodSeconds: 10
   278              timeoutSeconds: 5
   279              successThreshold: 1
   280              failureThreshold: 6
   281            readinessProbe:
   282              exec:
   283                command: ['/bin/bash', '-c', 'echo "ruok" | timeout 2 nc -w 2 localhost 2181 | grep imok']
   284              initialDelaySeconds: 5
   285              periodSeconds: 10
   286              timeoutSeconds: 5
   287              successThreshold: 1
   288              failureThreshold: 6
   289            volumeMounts:
   290              - name: data
   291                mountPath: /bitnami/zookeeper
   292    volumeClaimTemplates:
   293      - metadata:
   294          name: data
   295        spec:
   296          accessModes:
   297            - "ReadWriteOnce"
   298          resources:
   299            requests:
   300              storage: "10Gi"
   301          storageClassName: local-hostpath
   302  ---
   303  # Source: kafka/templates/statefulset.yaml
   304  apiVersion: apps/v1
   305  kind: StatefulSet
   306  metadata:
   307    name: my-kafka
   308    namespace: kafka-system
   309    labels:
   310      app.kubernetes.io/name: kafka
   311      app.kubernetes.io/instance: my-kafka
   312      app.kubernetes.io/component: kafka
   313  spec:
   314    podManagementPolicy: Parallel
   315    replicas: 3
   316    selector:
   317      matchLabels:
   318        app.kubernetes.io/name: kafka
   319        app.kubernetes.io/instance: my-kafka
   320        app.kubernetes.io/component: kafka
   321    serviceName: my-kafka-headless
   322    updateStrategy:
   323      type: "RollingUpdate"
   324    template:
   325      metadata:
   326        labels:
   327          app.kubernetes.io/name: kafka
   328          app.kubernetes.io/instance: my-kafka
   329          app.kubernetes.io/component: kafka
   330      spec:
   331        affinity:
   332          podAntiAffinity:
   333            preferredDuringSchedulingIgnoredDuringExecution:
   334              - podAffinityTerm:
   335                  labelSelector:
   336                    matchLabels:
   337                      app.kubernetes.io/name: kafka
   338                      app.kubernetes.io/instance: my-kafka
   339                  namespaces:
   340                    - "kafka-system"
   341                  topologyKey: kubernetes.io/hostname
   342                weight: 1
   343        securityContext:
   344          fsGroup: 1001
   345          runAsUser: 1001
   346        serviceAccountName: my-kafka
   347        containers:
   348          - name: kafka
   349            image: docker.io/bitnami/kafka:2.8.0-debian-10-r61
   350            imagePullPolicy: "IfNotPresent"
   351            command:
   352              - /scripts/setup.sh
   353            env:
   354              - name: BITNAMI_DEBUG
   355                value: "false"
   356              - name: MY_POD_IP
   357                valueFrom:
   358                  fieldRef:
   359                    fieldPath: status.podIP
   360              - name: MY_POD_NAME
   361                valueFrom:
   362                  fieldRef:
   363                    fieldPath: metadata.name
   364              - name: KAFKA_CFG_ZOOKEEPER_CONNECT
   365                value: "my-kafka-zookeeper"
   366              - name: KAFKA_INTER_BROKER_LISTENER_NAME
   367                value: "INTERNAL"
   368              - name: KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP
   369                value: "INTERNAL:PLAINTEXT,CLIENT:PLAINTEXT"
   370              - name: KAFKA_CFG_LISTENERS
   371                value: "INTERNAL://:9093,CLIENT://:9092"
   372              - name: KAFKA_CFG_ADVERTISED_LISTENERS
   373                value: "INTERNAL://$(MY_POD_NAME).my-kafka-headless.kafka-system.svc.cluster.local:9093,CLIENT://$(MY_POD_NAME).my-kafka-headless.kafka-system.svc.cluster.local:9092"
   374              - name: ALLOW_PLAINTEXT_LISTENER
   375                value: "yes"
   376              - name: KAFKA_VOLUME_DIR
   377                value: "/bitnami/kafka"
   378              - name: KAFKA_LOG_DIR
   379                value: "/opt/bitnami/kafka/logs"
   380              - name: KAFKA_CFG_DELETE_TOPIC_ENABLE
   381                value: "false"
   382              - name: KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE
   383                value: "true"
   384              - name: KAFKA_HEAP_OPTS
   385                value: "-Xmx1024m -Xms1024m"
   386              - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MESSAGES
   387                value: "10000"
   388              - name: KAFKA_CFG_LOG_FLUSH_INTERVAL_MS
   389                value: "1000"
   390              - name: KAFKA_CFG_LOG_RETENTION_BYTES
   391                value: "1073741824"
   392              - name: KAFKA_CFG_LOG_RETENTION_CHECK_INTERVALS_MS
   393                value: "300000"
   394              - name: KAFKA_CFG_LOG_RETENTION_HOURS
   395                value: "168"
   396              - name: KAFKA_CFG_MESSAGE_MAX_BYTES
   397                value: "1000012"
   398              - name: KAFKA_CFG_LOG_SEGMENT_BYTES
   399                value: "1073741824"
   400              - name: KAFKA_CFG_LOG_DIRS
   401                value: "/bitnami/kafka/data"
   402              - name: KAFKA_CFG_DEFAULT_REPLICATION_FACTOR
   403                value: "1"
   404              - name: KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR
   405                value: "1"
   406              - name: KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR
   407                value: "1"
   408              - name: KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR
   409                value: "1"
   410              - name: KAFKA_CFG_NUM_IO_THREADS
   411                value: "8"
   412              - name: KAFKA_CFG_NUM_NETWORK_THREADS
   413                value: "3"
   414              - name: KAFKA_CFG_NUM_PARTITIONS
   415                value: "1"
   416              - name: KAFKA_CFG_NUM_RECOVERY_THREADS_PER_DATA_DIR
   417                value: "1"
   418              - name: KAFKA_CFG_SOCKET_RECEIVE_BUFFER_BYTES
   419                value: "102400"
   420              - name: KAFKA_CFG_SOCKET_REQUEST_MAX_BYTES
   421                value: "104857600"
   422              - name: KAFKA_CFG_SOCKET_SEND_BUFFER_BYTES
   423                value: "102400"
   424              - name: KAFKA_CFG_ZOOKEEPER_CONNECTION_TIMEOUT_MS
   425                value: "6000"
   426            ports:
   427              - name: kafka-client
   428                containerPort: 9092
   429              - name: kafka-internal
   430                containerPort: 9093
   431            livenessProbe:
   432              tcpSocket:
   433                port: kafka-client
   434              initialDelaySeconds: 10
   435              timeoutSeconds: 5
   436              failureThreshold: 3
   437              periodSeconds: 10
   438              successThreshold: 1
   439            readinessProbe:
   440              tcpSocket:
   441                port: kafka-client
   442              initialDelaySeconds: 5
   443              timeoutSeconds: 5
   444              failureThreshold: 6
   445              periodSeconds: 10
   446              successThreshold: 1
   447            resources:
   448              limits: {}
   449              requests: {}
   450            volumeMounts:
   451              - name: data
   452                mountPath: /bitnami/kafka
   453              - name: logs
   454                mountPath: /opt/bitnami/kafka/logs
   455              - name: scripts
   456                mountPath: /scripts/setup.sh
   457                subPath: setup.sh
   458        volumes:
   459          - name: scripts
   460            configMap:
   461              name: my-kafka-scripts
   462              defaultMode: 0755
   463          - name: logs
   464            emptyDir: {}
   465    volumeClaimTemplates:
   466      - metadata:
   467          name: data
   468        spec:
   469          accessModes:
   470            - "ReadWriteOnce"
   471          resources:
   472            requests:
   473              storage: "10Gi"
   474          storageClassName: local-hostpath
   475