Fix: make all - returns multiple warnings
[oom.git] / kubernetes / cds / charts / cds-blueprints-processor / templates / deployment.yaml
1 # Copyright (c) 2019 IBM, Bell Canada
2 # Copyright (c) 2020 Samsung Electronics
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 apiVersion: extensions/v1beta1
17 kind: Deployment
18 metadata:
19   name: {{ include "common.fullname" . }}
20   namespace: {{ include "common.namespace" . }}
21   labels:
22     app: {{ include "common.name" . }}
23     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
24     release: {{ include "common.release" . }}
25     heritage: {{ .Release.Service }}
26 spec:
27   replicas: {{ .Values.replicaCount }}
28   strategy:
29     type: RollingUpdate
30     rollingUpdate:
31       # This allow a new pod to be ready before terminating the old one
32       # causing no downtime when replicas is set to 1
33       maxUnavailable: 0
34
35       # maxSurge to 1 is very important for the hazelcast integration
36       # we only want one pod at a time to restart not multiple
37       # and break the hazelcast cluster. We should not use % maxSurge value
38       # ref : https://hazelcast.com/blog/rolling-upgrade-hazelcast-imdg-on-kubernetes/
39       maxSurge: 1
40   template:
41     metadata:
42       labels:
43         app: {{ include "common.name" . }}
44         release: {{ include "common.release" . }}
45     spec:
46       initContainers:
47       - command:
48         - sh
49         args:
50         - -c
51         - "cd /config-input && for PFILE in `ls -1 .`; do envsubst '${CDS_DB_USERNAME},${CDS_DB_PASSWORD},${CDS_DB_ROOT_PASSWORD}' <${PFILE} >/config/${PFILE}; done"
52         env:
53         - name: CDS_DB_USERNAME
54           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "cds-db-user-creds" "key" "login") | indent 10}}
55         - name: CDS_DB_PASSWORD
56           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "cds-db-user-creds" "key" "password") | indent 10}}
57         - name: CDS_DB_ROOT_PASSWORD
58           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "cds-db-root-pass" "key" "password") | indent 10}}
59
60         volumeMounts:
61         - mountPath: /config-input/application.properties
62           name: {{ include "common.fullname" . }}-config
63           subPath: application.properties
64         - mountPath: /config
65           name: processed-config
66         image: "{{ .Values.global.envsubstImage }}"
67         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
68         name: {{ include "common.name" . }}-update-config
69
70       - command:
71         - /root/ready.py
72         args:
73         - --container-name
74         - cds-db
75         {{- if .Values.dmaapEnabled  }}
76         - --container-name
77         - message-router
78         {{ end }}
79         env:
80         - name: NAMESPACE
81           valueFrom:
82             fieldRef:
83               apiVersion: v1
84               fieldPath: metadata.namespace
85         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
86         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
87         name: {{ include "common.name" . }}-readiness
88       - name: fix-permission
89         command:
90         - chown
91         - -R
92         - 100:101
93         - /opt/app/onap/blueprints/deploy
94         image: busybox:latest
95         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
96         volumeMounts:
97         - mountPath: {{ .Values.persistence.deployedBlueprint }}
98           name: {{ include "common.fullname" . }}-blueprints
99       containers:
100         - name: {{ include "common.name" . }}
101           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
102           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
103           env:
104           - name: APP_CONFIG_HOME
105             value: {{ .Values.config.appConfigDir }}
106           - name: USE_SCRIPT_COMPILE_CACHE
107             value: {{ .Values.config.useScriptCompileCache | quote }}
108           # Cluster should only be enabled when replicaCount is more than 2 and useScriptCompileCache is set to false otherwise it won't work properly
109           - name: CLUSTER_ENABLED
110             value: {{ if and (gt (int (.Values.replicaCount)) 2) (not .Values.config.useScriptCompileCache) }} {{ .Values.cluster.enabled | quote }} {{ else }} "false" {{ end }}
111           - name: CLUSTER_ID
112             value: {{ .Values.cluster.clusterName }}
113           - name: CLUSTER_NODE_ID
114             valueFrom:
115               fieldRef:
116                 fieldPath: metadata.name
117           - name: CLUSTER_CONFIG_FILE
118             value: {{ .Values.config.appConfigDir }}/hazelcast.yaml
119           ports:
120           - containerPort: {{ .Values.service.http.internalPort }}
121           - containerPort: {{ .Values.service.grpc.internalPort }}
122           - containerPort: {{ .Values.service.cluster.internalPort }}
123           # disable liveness probe when breakpoints set in debugger
124           # so K8s doesn't restart unresponsive container
125           {{ if .Values.liveness.enabled }}
126           livenessProbe:
127             httpGet:
128               path: /api/v1/execution-service/health-check
129               port: {{ .Values.service.http.internalPort }}
130               httpHeaders:
131               - name: Authorization
132                 value: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==
133             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
134             periodSeconds: {{ .Values.liveness.periodSeconds }}
135             timeoutSeconds: {{ .Values.liveness.timeoutSeconds }}
136           {{ end }}
137           readinessProbe:
138             httpGet:
139               path: /api/v1/execution-service/health-check
140               port: {{ .Values.service.http.internalPort }}
141               httpHeaders:
142               - name: Authorization
143                 value: Basic Y2NzZGthcHBzOmNjc2RrYXBwcw==
144             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
145             periodSeconds: {{ .Values.readiness.periodSeconds }}
146             timeoutSeconds: {{ .Values.readiness.timeoutSeconds }}
147           volumeMounts:
148           - mountPath: /etc/localtime
149             name: localtime
150             readOnly: true
151           - mountPath: {{ .Values.config.appConfigDir }}/application.properties
152             name: processed-config
153             subPath: application.properties
154           - mountPath: {{ .Values.config.appConfigDir }}/error-messages_en.properties
155             name: {{ include "common.fullname" . }}-config
156             subPath: error-messages_en.properties
157           - mountPath: {{ .Values.config.appConfigDir }}/logback.xml
158             name: {{ include "common.fullname" . }}-config
159             subPath: logback.xml
160           - mountPath: {{ .Values.config.appConfigDir }}/hazelcast.yaml
161             name: {{ include "common.fullname" . }}-config
162             subPath: hazelcast.yaml
163
164           - mountPath: {{ .Values.config.appConfigDir }}/ONAP_RootCA.cer
165             name: {{ include "common.fullname" . }}-config
166             subPath: ONAP_RootCA.cer
167
168           - mountPath: {{ .Values.persistence.deployedBlueprint }}
169             name: {{ include "common.fullname" . }}-blueprints
170           resources:
171 {{ include "common.resources" . | indent 12 }}
172         {{- if .Values.nodeSelector }}
173         nodeSelector:
174 {{ toYaml .Values.nodeSelector | indent 10 }}
175         {{- end -}}
176         {{- if .Values.affinity }}
177         affinity:
178 {{ toYaml .Values.affinity | indent 10 }}
179         {{- end }}
180       volumes:
181         - name: localtime
182           hostPath:
183             path: /etc/localtime
184         - name: {{ include "common.fullname" . }}-config
185           configMap:
186             name: {{ include "common.fullname" . }}-configmap
187             items:
188             - key: application.properties
189               path: application.properties
190             - key: error-messages_en.properties
191               path: error-messages_en.properties
192             - key: logback.xml
193               path: logback.xml
194             - key: hazelcast.yaml
195               path: hazelcast.yaml
196             - key: ONAP_RootCA.cer
197               path: ONAP_RootCA.cer
198         - name: {{ include "common.fullname" . }}-blueprints
199           persistentVolumeClaim:
200             claimName: {{ include "common.release" . }}-cds-blueprints
201         - name: processed-config
202           emptyDir:
203             medium: Memory
204       imagePullSecrets:
205       - name: "{{ include "common.namespace" . }}-docker-registry-key"