[CCSDK-SDNC] Bump versions for Honolulu
[oom.git] / kubernetes / dmaap / components / message-router / components / message-router-kafka / templates / statefulset.yaml
1 {{/*
2 # Modifications Copyright © 2018 AT&T
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #       http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 */}}
16
17 apiVersion: apps/v1
18 kind: StatefulSet
19 metadata:
20   name: {{ include "common.fullname" . }}
21   namespace: {{ include "common.namespace" . }}
22   labels:
23     app: {{ include "common.name" . }}
24     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
25     release: {{ include "common.release" . }}
26     heritage: {{ .Release.Service }}
27 spec:
28   selector:
29     matchLabels:
30       app: {{ include "common.name" . }}
31   serviceName: {{ .Values.service.name }}
32   replicas: {{ .Values.replicaCount }}
33   podManagementPolicy: Parallel
34   template:
35     metadata:
36       labels:
37         app:  {{ include "common.name" . }}
38         release: {{ include "common.release" . }}
39       {{- if .Values.prometheus.jmx.enabled }}
40       annotations:
41         prometheus.io/scrape: "true"
42         prometheus.io/port: {{ .Values.prometheus.jmx.port | quote }}
43       {{- end }}
44     spec:
45       {{- if .Values.nodeAffinity }}
46       nodeAffinity:
47       {{ toYaml .Values.nodeAffinity | indent 10 }}
48       {{- end }}
49       imagePullSecrets:
50       - name: "{{ include "common.namespace" . }}-docker-registry-key"
51       initContainers:
52       - command:
53         - /app/ready.py
54         args:
55         - --container-name
56         - {{ .Values.zookeeper.name }}
57         env:
58         - name: NAMESPACE
59           valueFrom:
60             fieldRef:
61               apiVersion: v1
62               fieldPath: metadata.namespace
63         image: {{ include "repositoryGenerator.image.readiness" . }}
64         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
65         name: {{ include "common.name" . }}-readiness
66       - command:
67         -  sh
68         - -exec
69         - |
70           rm -rf '/var/lib/kafka/data/lost+found';
71           chown -R 1000:0 /var/lib/kafka/data;
72         image: {{ include "repositoryGenerator.image.busybox" . }}
73         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
74         volumeMounts:
75         - mountPath: /var/lib/kafka/data
76           name: kafka-data
77         name: {{ include "common.name" . }}-permission-fixer
78       - command:
79         - sh
80         args:
81         - -c
82         - "cd /config-input  && for PFILE in `ls -1 .`; do envsubst <${PFILE} >/etc/kafka/secrets/jaas/${PFILE}; done"
83         env:
84         - name: ZK_ADMIN
85           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "zk-client" "key" "login") | indent 10 }}
86         - name: ZK_PSWD
87           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "zk-client" "key" "password") | indent 10 }}
88         - name: KAFKA_ADMIN
89           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "kafka-admin" "key" "login") | indent 10 }}
90         - name: KAFKA_PSWD
91           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "kafka-admin" "key" "password") | indent 10 }}
92         volumeMounts:
93         - mountPath: /etc/kafka/secrets/jaas
94           name: jaas-config
95         - mountPath: /config-input
96           name: jaas
97         image: {{ include "repositoryGenerator.image.envsubst" . }}
98         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
99         name: {{ include "common.name" . }}-update-config
100       {{ include "common.certInitializer.initContainer" . | indent 6 | trim }}
101       containers:
102       {{- if .Values.prometheus.jmx.enabled }}
103       - name: prometheus-jmx-exporter
104         image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.prometheus.jmx.image }}:{{ .Values.prometheus.jmx.imageTag }}
105         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
106         command:
107         - java
108         - -XX:+UnlockExperimentalVMOptions
109         - -XX:+UseCGroupMemoryLimitForHeap
110         - -XX:MaxRAMFraction=1
111         - -XshowSettings:vm
112         - -jar
113         - jmx_prometheus_httpserver.jar
114         - {{ .Values.prometheus.jmx.port | quote }}
115         - /etc/jmx-kafka/jmx-kafka-prometheus.yml
116         ports:
117         - containerPort: {{ .Values.prometheus.jmx.port }}
118         resources:
119 {{ toYaml .Values.prometheus.jmx.resources | indent 10 }}
120         volumeMounts:
121         - name: jmx-config
122           mountPath: /etc/jmx-kafka
123       {{- end }}
124       - name: {{ include "common.name" .  }}
125         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
126         imagePullPolicy:  {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
127         command:
128         - sh
129         - -exc
130         - |
131           export KAFKA_BROKER_ID=${HOSTNAME##*-} && \
132           {{- if  .Values.global.aafEnabled }}
133           cp {{ .Values.certInitializer.credsPath }}/{{ .Values.certInitializer.final_cadi_files }} /etc/kafka/data/{{ .Values.certInitializer.final_cadi_files }} && \
134           export KAFKA_ADVERTISED_LISTENERS=EXTERNAL_SASL_PLAINTEXT://$(HOST_IP):$(( $KAFKA_BROKER_ID + {{ .Values.service.baseNodePort }} )),INTERNAL_SASL_PLAINTEXT://:{{ .Values.service.internalPort }} && \
135           {{ else }}
136           export KAFKA_ADVERTISED_LISTENERS=EXTERNAL_PLAINTEXT://$(HOST_IP):$(( $KAFKA_BROKER_ID + {{ .Values.service.baseNodePort }} )),INTERNAL_PLAINTEXT://:{{ .Values.service.internalPort }} && \
137           {{- end }}
138           exec /etc/confluent/docker/run
139         resources:
140 {{ include "common.resources" . | indent 12 }}
141         ports:
142         - containerPort: {{ .Values.service.internalPort }}
143         - containerPort: {{ .Values.service.externalPort }}
144         {{- if .Values.prometheus.jmx.enabled }}
145         - containerPort: {{ .Values.jmx.port }}
146           name: jmx
147         {{- end }}
148         {{ if eq .Values.liveness.enabled true }}
149         livenessProbe:
150           tcpSocket:
151             port: {{ .Values.service.internalPort }}
152           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
153           periodSeconds: {{ .Values.liveness.periodSeconds }}
154           timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
155         {{ end }}
156         readinessProbe:
157           tcpSocket:
158             port: {{ .Values.service.internalPort }}
159           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
160           periodSeconds: {{ .Values.readiness.periodSeconds }}
161           timeoutSeconds: {{ .Values.readiness.timeoutSeconds }}
162         env:
163         - name: HOST_IP
164           valueFrom:
165             fieldRef:
166               apiVersion: v1
167               fieldPath: status.hostIP
168         - name: KAFKA_ZOOKEEPER_CONNECT
169           value: {{ include "common.release" . }}-{{.Values.zookeeper.name}}-0.{{.Values.zookeeper.name}}.{{.Release.Namespace}}.svc.cluster.local:{{.Values.zookeeper.port}},{{ include "common.release" . }}-{{.Values.zookeeper.name}}-1.{{.Values.zookeeper.name}}.{{.Release.Namespace}}.svc.cluster.local:{{.Values.zookeeper.port}},{{ include "common.release" . }}-{{.Values.zookeeper.name}}-2.{{.Values.zookeeper.name}}.{{.Release.Namespace}}.svc.cluster.local:{{.Values.zookeeper.port}}
170         - name: KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE
171           value: "{{ .Values.kafka.enableSupport }}"
172         {{- if  .Values.global.aafEnabled }}
173         - name: KAFKA_OPTS
174           value: "{{ .Values.kafka.jaasOptionsAaf }}"
175         - name: aaf_locate_url
176           value: https://aaf-locate.{{ include "common.namespace" . }}:8095
177         - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
178           value: "{{ .Values.kafka.protocolMapAaf }}"
179         - name: KAFKA_LISTENERS
180           value: "{{ .Values.kafka.listenersAaf }}"
181         - name: KAFKA_SASL_ENABLED_MECHANISMS
182           value: "{{ .Values.kafka.saslMech }}"
183         - name: KAFKA_INTER_BROKER_LISTENER_NAME
184           value: "{{ .Values.kafka.interBrokerListernerAaf }}"
185         - name: KAFKA_SASL_MECHANISM_INTER_BROKER_PROTOCOL
186           value: "{{ .Values.kafka.saslInterBrokerProtocol }}"
187         - name: KAFKA_AUTHORIZER_CLASS_NAME
188           value: "{{ .Values.kafka.authorizer }}"
189         {{ else }}
190         - name: KAFKA_OPTS
191           value: "{{ .Values.kafka.jaasOptions }}"
192         - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
193           value: "{{ .Values.kafka.protocolMap }}"
194         - name: KAFKA_LISTENERS
195           value: "{{ .Values.kafka.listeners }}"
196         - name: KAFKA_INTER_BROKER_LISTENER_NAME
197           value: "{{ .Values.kafka.interBrokerListerner }}"
198         {{- end }}
199         {{- range $key, $value := .Values.configurationOverrides }}
200         - name: {{ printf "KAFKA_%s" $key | replace "." "_" | upper | quote }}
201           value: {{ $value | quote }}
202         {{- end }}
203         {{- if .Values.jmx.port }}
204         - name: KAFKA_JMX_PORT
205           value: "{{ .Values.jmx.port }}"
206         {{- end }}
207         - name: enableCadi
208           value: "{{ .Values.global.aafEnabled }}"
209         volumeMounts: {{ include "common.certInitializer.volumeMount" . | nindent 8 }}
210         - mountPath: /etc/localtime
211           name: localtime
212           readOnly: true
213         - mountPath: /var/run/docker.sock
214           name: docker-socket
215         - name: jaas-config
216           mountPath: /etc/kafka/secrets/jaas
217         - mountPath: /var/lib/kafka/data
218           name: kafka-data
219       {{- if .Values.tolerations }}
220       tolerations:
221         {{ toYaml .Values.tolerations | indent 10 }}
222       {{- end }}
223       volumes:  {{ include "common.certInitializer.volumes" . | nindent 6 }}
224       - name: localtime
225         hostPath:
226           path: /etc/localtime
227       - name: jaas-config
228         emptyDir:
229           medium: Memory
230       - name: docker-socket
231         hostPath:
232           path: /var/run/docker.sock
233       {{- if .Values.global.aafEnabled }}
234       - name: cadi
235         configMap:
236           name: {{ include "common.fullname" . }}-cadi-prop-configmap
237       {{ end }}
238       - name: jaas
239         configMap:
240           name: {{ include "common.fullname" . }}-jaas-configmap
241       {{- if .Values.prometheus.jmx.enabled }}
242       - name: jmx-config
243         configMap:
244           name: {{ include "common.fullname" . }}-prometheus-configmap
245       {{- end }}
246 {{ if not .Values.persistence.enabled }}
247       - name: kafka-data
248         emptyDir: {}
249 {{ else }}
250   volumeClaimTemplates:
251     - metadata:
252         name: kafka-data
253         labels:
254           app: {{ include "common.fullname" . }}
255           chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
256           release: "{{ include "common.release" . }}"
257           heritage: "{{ .Release.Service }}"
258       spec:
259         accessModes:
260           - {{ .Values.persistence.accessMode | quote }}
261         storageClassName: {{ include "common.storageClass" . }}
262         resources:
263           requests:
264             storage: {{ .Values.persistence.size | quote }}
265 {{ end }}