[AAI] OOM AAI Rolling Update fixes
[oom.git] / kubernetes / aai / components / aai-sparky-be / templates / deployment.yaml
1 {{/*
2 # Copyright (c) 2017 Amdocs, Bell Canada
3 # Modifications Copyright (c) 2018 AT&T
4 # Modifications Copyright (c) 2020 Nokia
5 #
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
9 #
10 #       http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 */}}
18
19 apiVersion: apps/v1
20 kind: Deployment
21 metadata:
22   name: {{ include "common.fullname" . }}
23   namespace: {{ include "common.namespace" . }}
24   labels:
25     app: {{ include "common.name" . }}
26     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
27     release: {{ include "common.release" . }}
28     heritage: {{ .Release.Service }}
29 spec:
30   replicas: {{ .Values.replicaCount }}
31   strategy:
32     type: {{ .Values.updateStrategy.type }}
33     {{- if (eq "RollingUpdate" .Values.updateStrategy.type) }}
34     rollingUpdate:
35       maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
36       maxSurge: {{ .Values.updateStrategy.maxSurge }}
37     {{- end }}
38   selector:
39     matchLabels:
40       app: {{ include "common.name" . }}
41   template:
42     metadata:
43       annotations:
44         sidecar.istio.io/rewriteAppHTTPProbers: "false"
45       labels:
46         app: {{ include "common.name" . }}
47         release: {{ include "common.release" . }}
48       name: {{ include "common.name" . }}
49     spec:
50       initContainers: {{ include "common.certInitializer.initContainer" . | nindent 6 }}
51       {{- if ( include "common.needTLS" .) }}
52       - command:
53         - sh
54         args:
55         - -c
56         - |
57           echo "*** retrieve Truststore and Keystore password"
58           export $(cat {{ .Values.certInitializer.credsPath }}/mycreds.prop \
59             | xargs -0)
60           if [ -z "$KEYSTORE_PASSWORD" ]
61           then
62             echo " /!\ certificates retrieval failed"
63             exit 1
64           fi
65           echo "*** write them in portal part"
66           cd /config-input
67           for PFILE in `ls -1 .`
68             do
69               envsubst <${PFILE} >/config/${PFILE}
70           done
71         volumeMounts: {{ include "common.certInitializer.volumeMount" . | nindent 8 }}
72         - mountPath: /config-input
73           name: portal-config-input
74         - mountPath: /config
75           name: portal-config
76         image: {{ include "repositoryGenerator.image.envsubst" . }}
77         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
78         name: {{ include "common.name" . }}-update-config
79       {{- end }}
80       - command:
81         - /app/ready.py
82         args:
83         - --container-name
84         - aai
85         env:
86         - name: NAMESPACE
87           valueFrom:
88             fieldRef:
89               apiVersion: v1
90               fieldPath: metadata.namespace
91         image: {{ include "repositoryGenerator.image.readiness" . }}
92         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
93         name: {{ include "common.name" . }}-readiness
94       containers:
95       - name: {{ include "common.name" . }}
96         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
97         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
98         command:
99         - sh
100         args:
101         - -c
102         - |
103           echo "*** retrieve Truststore and Keystore password"
104           export $(cat {{ .Values.certInitializer.credsPath }}/mycreds.prop \
105             | xargs -0)
106           echo "*** actual launch of AAI Sparky BE"
107           /opt/app/sparky/bin/start.sh
108         volumeMounts: {{ include "common.certInitializer.volumeMount" . | nindent 8 }}
109         - mountPath: /etc/localtime
110           name: localtime
111           readOnly: true
112         - mountPath: /opt/app/sparky/config/auth/csp-cookie-filter.properties
113           name: auth-config
114           subPath: csp-cookie-filter.properties
115         - mountPath: /opt/app/sparky/config/portal/
116           name: portal-config
117         - mountPath: /opt/app/sparky/config/portal/BOOT-INF/classes/
118           name: portal-config-props
119         - mountPath: {{ .Values.log.path }}
120           name: logs
121         - mountPath:  /opt/app/sparky/config/application.properties
122           name: config
123           subPath: application.properties
124         - mountPath:  /opt/app/sparky/config/application-resources.properties
125           name: config
126           subPath: application-resources.properties
127         - mountPath:  /opt/app/sparky/config/application-ssl.properties
128           name: config
129           subPath: application-ssl.properties
130         - mountPath:  /opt/app/sparky/config/application-oxm-default.properties
131           name: config
132           subPath: application-oxm-default.properties
133         - mountPath:  /opt/app/sparky/config/application-oxm-override.properties
134           name: config
135           subPath: application-oxm-override.properties
136         - mountPath:  /opt/app/sparky/config/application-oxm-schema-prod.properties
137           name: config
138           subPath: application-oxm-schema-prod.properties
139         - mountPath:  /opt/app/sparky/config/roles.config
140           name: config
141           subPath: roles.config
142         - mountPath:  /opt/app/sparky/config/users.config
143           name: config
144           subPath: users.config
145         - mountPath:  /opt/app/sparky/config/logging/logback.xml
146           name: config
147           subPath: logback.xml
148         ports:
149         - containerPort: {{ .Values.service.internalPort }}
150         # disable liveness probe when breakpoints set in debugger
151         # so K8s doesn't restart unresponsive container
152         {{- if eq .Values.liveness.enabled true }}
153         livenessProbe:
154           tcpSocket:
155             port: {{ .Values.service.internalPort }}
156           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
157           periodSeconds: {{ .Values.liveness.periodSeconds }}
158         {{ end -}}
159         readinessProbe:
160           tcpSocket:
161             port: {{ .Values.service.internalPort }}
162           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
163           periodSeconds: {{ .Values.readiness.periodSeconds }}
164         resources:
165 {{ include "common.resources" . }}
166       {{- if .Values.nodeSelector }}
167       nodeSelector:
168 {{ toYaml .Values.nodeSelector | indent 8 }}
169       {{- end -}}
170       {{- if .Values.affinity }}
171       affinity:
172 {{ toYaml .Values.affinity | indent 8 }}
173       {{- end }}
174
175       # side car containers
176       {{ include "common.log.sidecar" . | nindent 6 }}
177       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
178       volumes: {{ include "common.certInitializer.volumes" . | nindent 6 }}
179       - name: localtime
180         hostPath:
181           path: /etc/localtime
182       - name: config
183         configMap:
184           name: {{ include "common.fullname" . }}
185       - name: portal-config
186       {{- if .Values.global.aafEnabled }}
187         emptyDir:
188           medium: Memory
189       - name: portal-config-input
190       {{- end }}
191         configMap:
192           name: {{ include "common.fullname" . }}-portal
193       - name: portal-config-props
194         configMap:
195           name: {{ include "common.fullname" . }}-portal-props
196       - name: auth-config
197         secret:
198           secretName: {{ include "common.fullname" . }}
199       - name: logs
200         emptyDir: {}
201         {{ include "common.log.volumes" (dict "dot" . "configMapNamePrefix" (tpl .Values.logConfigMapNamePrefix .)) | nindent 6 }}
202       - name: modeldir
203         emptyDir: {}
204       restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }}
205       imagePullSecrets:
206       - name: "{{ include "common.namespace" . }}-docker-registry-key"