fb07427fd19c81e7ebfc5e1ef4e3274c5b059e67
[oom.git] / kubernetes / aai / charts / aai-traversal / templates / deployment.yaml
1 # Copyright © 2017 Amdocs, Bell Canada
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 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: {{ .Release.Name }}
25     heritage: {{ .Release.Service }}
26 spec:
27   replicas: {{ .Values.replicaCount }}
28   selector:
29     matchLabels:
30       app: {{ include "common.name" . }}
31   template:
32     metadata:
33       labels:
34         app: {{ include "common.name" . }}
35         release: {{ .Release.Name }}
36       name: {{ include "common.name" . }}
37       annotations:
38         checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
39         msb.onap.org/service-info: '[
40           {
41               "serviceName": "_aai-generic-query",
42               "version": "v11",
43               "url": "/aai/v11/search/generic-query",
44               "protocol": "REST",
45               "port": "8446",
46               "enable_ssl": true,
47               "lb_policy":"ip_hash",
48               "visualRange": "1",
49               "path": "/aai/v11/search/generic-query"
50           },
51           {
52               "serviceName": "_aai-generic-query",
53               "version": "v12",
54               "url": "/aai/v12/search/generic-query",
55               "protocol": "REST",
56               "port": "8446",
57               "enable_ssl": true,
58               "lb_policy":"ip_hash",
59               "visualRange": "1",
60               "path": "/aai/v12/search/generic-query"
61           },
62           {
63               "serviceName": "_aai-generic-query",
64               "version": "v13",
65               "url": "/aai/v13/search/generic-query",
66               "protocol": "REST",
67               "port": "8446",
68               "enable_ssl": true,
69               "lb_policy":"ip_hash",
70               "visualRange": "1",
71               "path": "/aai/v13/search/generic-query"
72           },
73           {
74               "serviceName": "_aai-nodes-query",
75               "version": "v11",
76               "url": "/aai/v11/search/nodes-query",
77               "protocol": "REST",
78               "port": "8446",
79               "enable_ssl": true,
80               "lb_policy":"ip_hash",
81               "visualRange": "1",
82               "path": "/aai/v11/search/nodes-query"
83           },
84           {
85               "serviceName": "_aai-nodes-query",
86               "version": "v12",
87               "url": "/aai/v12/search/nodes-query",
88               "protocol": "REST",
89               "port": "8446",
90               "enable_ssl": true,
91               "lb_policy":"ip_hash",
92               "visualRange": "1",
93               "path": "/aai/v12/search/nodes-query"
94           },
95           {
96               "serviceName": "_aai-nodes-query",
97               "version": "v13",
98               "url": "/aai/v13/search/nodes-query",
99               "protocol": "REST",
100               "port": "8446",
101               "enable_ssl": true,
102               "lb_policy":"ip_hash",
103               "visualRange": "1",
104               "path": "/aai/v13/search/nodes-query"
105           },
106           {
107               "serviceName": "_aai-query",
108               "version": "v11",
109               "url": "/aai/v11/query",
110               "protocol": "REST",
111               "port": "8446",
112               "enable_ssl": true,
113               "lb_policy":"ip_hash",
114               "visualRange": "1",
115               "path": "/aai/v11/query"
116           },
117           {
118               "serviceName": "_aai-query",
119               "version": "v12",
120               "url": "/aai/v12/query",
121               "protocol": "REST",
122               "port": "8446",
123               "enable_ssl": true,
124               "lb_policy":"ip_hash",
125               "visualRange": "1",
126               "path": "/aai/v12/query"
127           },
128           {
129               "serviceName": "_aai-query",
130               "version": "v13",
131               "url": "/aai/v13/query",
132               "protocol": "REST",
133               "port": "8446",
134               "enable_ssl": true,
135               "lb_policy":"ip_hash",
136               "visualRange": "1",
137               "path": "/aai/v13/query"
138           },
139           {
140               "serviceName": "_aai-named-query",
141               "url": "/aai/search",
142               "protocol": "REST",
143               "port": "8446",
144               "enable_ssl": true,
145               "lb_policy":"ip_hash",
146               "visualRange": "1",
147               "path": "/aai/search"
148           },
149           {
150               "serviceName": "aai-generic-query",
151               "version": "v11",
152               "url": "/aai/v11/search/generic-query",
153               "protocol": "REST",
154               "port": "8446",
155               "enable_ssl": true,
156               "lb_policy":"ip_hash",
157               "visualRange": "1"
158           },
159           {
160               "serviceName": "aai-generic-query",
161               "version": "v12",
162               "url": "/aai/v12/search/generic-query",
163               "protocol": "REST",
164               "port": "8446",
165               "enable_ssl": true,
166               "lb_policy":"ip_hash",
167               "visualRange": "1"
168           },
169           {
170               "serviceName": "aai-generic-query",
171               "version": "v13",
172               "url": "/aai/v13/search/generic-query",
173               "protocol": "REST",
174               "port": "8446",
175               "enable_ssl": true,
176               "lb_policy":"ip_hash",
177               "visualRange": "1"
178           },
179           {
180               "serviceName": "aai-nodes-query",
181               "version": "v11",
182               "url": "/aai/v11/search/nodes-query",
183               "protocol": "REST",
184               "port": "8446",
185               "enable_ssl": true,
186               "lb_policy":"ip_hash",
187               "visualRange": "1"
188           },
189           {
190               "serviceName": "aai-nodes-query",
191               "version": "v12",
192               "url": "/aai/v12/search/nodes-query",
193               "protocol": "REST",
194               "port": "8446",
195               "enable_ssl": true,
196               "lb_policy":"ip_hash",
197               "visualRange": "1"
198           },
199           {
200               "serviceName": "aai-nodes-query",
201               "version": "v13",
202               "url": "/aai/v13/search/nodes-query",
203               "protocol": "REST",
204               "port": "8446",
205               "enable_ssl": true,
206               "lb_policy":"ip_hash",
207               "visualRange": "1"
208           },
209           {
210               "serviceName": "aai-query",
211               "version": "v11",
212               "url": "/aai/v11/query",
213               "protocol": "REST",
214               "port": "8446",
215               "enable_ssl": true,
216               "lb_policy":"ip_hash",
217               "visualRange": "1"
218           },
219           {
220               "serviceName": "aai-query",
221               "version": "v12",
222               "url": "/aai/v12/query",
223               "protocol": "REST",
224               "port": "8446",
225               "enable_ssl": true,
226               "lb_policy":"ip_hash",
227               "visualRange": "1"
228           },
229           {
230               "serviceName": "aai-query",
231               "version": "v13",
232               "url": "/aai/v13/query",
233               "protocol": "REST",
234               "port": "8446",
235               "enable_ssl": true,
236               "lb_policy":"ip_hash",
237               "visualRange": "1"
238           },
239           {
240               "serviceName": "aai-named-query",
241               "url": "/aai/search",
242               "protocol": "REST",
243               "port": "8446",
244               "enable_ssl": true,
245               "lb_policy":"ip_hash",
246               "visualRange": "1"
247           }
248           ]'
249     spec:
250       hostname: aai-traversal
251     {{ if .Values.global.initContainers.enabled }}
252       initContainers:
253       - command:
254       {{  if .Values.global.jobs.createSchema.enabled  }}
255         - /root/job_complete.py
256         args:
257         - --job-name
258         - {{ .Release.Name }}-aai-graphadmin-create-db-schema
259       {{  else }}
260         - /root/ready.py
261         args:
262         - --container-name
263         - aai-cassandra
264       {{  end  }}
265         env:
266         - name: NAMESPACE
267           valueFrom:
268             fieldRef:
269               apiVersion: v1
270               fieldPath: metadata.namespace
271         image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
272         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
273         name: {{ include "common.name" . }}-readiness
274     {{ end }}
275       containers:
276       - name: {{ include "common.name" . }}
277         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
278         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
279         env:
280         - name: DISABLE_UPDATE_QUERY
281           value: {{ .Values.config.disableUpdateQuery | quote }}
282         - name: LOCAL_USER_ID
283           value: {{ .Values.global.config.userId | quote }}
284         - name: LOCAL_GROUP_ID
285           value: {{ .Values.global.config.groupId | quote }}
286         volumeMounts:
287         - mountPath: /etc/localtime
288           name: localtime
289           readOnly: true
290         - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-realtime.properties
291           name: {{ include "common.fullname" . }}-db-real-conf
292           subPath: janusgraph-realtime.properties
293         - mountPath: /opt/app/aai-traversal/resources/etc/appprops/janusgraph-cached.properties
294           name: {{ include "common.fullname" . }}-db-cached-conf
295           subPath: janusgraph-cached.properties
296         - mountPath: /opt/app/aai-traversal/resources/etc/appprops/aaiconfig.properties
297           name: {{ include "common.fullname" . }}-aaiconfig-conf
298           subPath: aaiconfig.properties
299         - mountPath: /opt/aai/logroot/AAI-GQ
300           name: {{ include "common.fullname" . }}-logs
301         - mountPath: /opt/app/aai-traversal/resources/logback.xml
302           name: {{ include "common.fullname" . }}-log-conf
303           subPath: logback.xml
304         - mountPath: /opt/app/aai-traversal/resources/localhost-access-logback.xml
305           name: {{ include "common.fullname" . }}-localhost-access-log-conf
306           subPath: localhost-access-logback.xml
307         - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.keyfile
308           name: {{ include "common.fullname" . }}-aaf-certs
309           subPath: org.onap.aai.keyfile
310         - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.props
311           name: {{ include "common.fullname" . }}-aaf-properties
312           subPath: org.onap.aai.props
313         - mountPath: /opt/app/aai-traversal/resources/aaf/org.osaaf.location.props
314           name: {{ include "common.fullname" . }}-aaf-properties
315           subPath: org.osaaf.location.props
316         - mountPath: /opt/app/aai-traversal/resources/aaf/permissions.properties
317           name: {{ include "common.fullname" . }}-aaf-properties
318           subPath: permissions.properties
319         - mountPath: /opt/app/aai-traversal/resources/cadi.properties
320           name: {{ include "common.fullname" . }}-aaf-properties
321           subPath: cadi.properties
322         - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.p12
323           name: {{ include "common.fullname" . }}-aaf-certs
324           subPath: org.onap.aai.p12
325         - mountPath: /opt/app/aai-traversal/resources/aaf/truststoreONAPall.jks
326           name: {{ include "common.fullname" . }}-aaf-certs
327           subPath: truststoreONAPall.jks
328         - mountPath: /opt/app/aai-traversal/resources/application.properties
329           name: {{ include "common.fullname" . }}-springapp-conf
330           subPath: application.properties
331           {{ $global := . }}
332           {{ range $job := .Values.global.config.auth.files }}
333         - mountPath: /opt/app/aai-traversal/resources/etc/auth/{{ . }}
334           name: {{ include "common.fullname" $global }}-auth-truststore-sec
335           subPath: {{ . }}
336           {{ end }}
337         ports:
338         - containerPort: {{ .Values.service.internalPort }}
339         - containerPort: {{ .Values.service.internalPort2 }}
340         # disable liveness probe when breakpoints set in debugger
341         # so K8s doesn't restart unresponsive container
342         {{ if .Values.liveness.enabled }}
343         livenessProbe:
344           tcpSocket:
345             port: {{ .Values.service.internalPort }}
346           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
347           periodSeconds: {{ .Values.liveness.periodSeconds }}
348         {{ end }}
349         readinessProbe:
350           tcpSocket:
351             port: {{ .Values.service.internalPort }}
352           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
353           periodSeconds: {{ .Values.readiness.periodSeconds }}
354         resources:
355 {{ toYaml (pluck .Values.flavor .Values.resources| first) | indent 12 }}
356       {{- if .Values.nodeSelector }}
357       nodeSelector:
358 {{ toYaml .Values.nodeSelector | indent 8 }}
359       {{- end -}}
360       {{- if .Values.affinity }}
361       affinity:
362 {{ toYaml .Values.affinity | indent 8 }}
363       {{- end }}
364
365       # side car containers
366       - name: filebeat-onap
367         image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}"
368         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
369         volumeMounts:
370         - mountPath: /usr/share/filebeat/filebeat.yml
371           subPath: filebeat.yml
372           name: filebeat-conf
373         - mountPath: /var/log/onap
374           name: {{ include "common.fullname" . }}-logs
375         - mountPath: /usr/share/filebeat/data
376           name: {{ include "common.fullname" . }}-filebeat
377       volumes:
378       - name: localtime
379         hostPath:
380           path: /etc/localtime
381       - name: filebeat-conf
382         configMap:
383           name: aai-filebeat
384       - name: {{ include "common.fullname" . }}-logs
385         emptyDir: {}
386       - name: {{ include "common.fullname" . }}-filebeat
387         emptyDir: {}
388       - name: {{ include "common.fullname" . }}-log-conf
389         configMap:
390          name: {{ include "common.fullname" . }}-log
391       - name: {{ include "common.fullname" . }}-localhost-access-log-conf
392         configMap:
393          name: {{ include "common.fullname" . }}-localhost-access-log-configmap
394       - name: {{ include "common.fullname" . }}-db-real-conf
395         configMap:
396          name: {{ include "common.fullname" . }}-db-real-configmap
397       - name: {{ include "common.fullname" . }}-db-cached-conf
398         configMap:
399          name: {{ include "common.fullname" . }}-db-cached-configmap
400       - name: {{ include "common.fullname" . }}-aaiconfig-conf
401         configMap:
402          name: {{ include "common.fullname" . }}-aaiconfig-configmap
403       - name: {{ include "common.fullname" . }}-aaf-properties
404         configMap:
405          name: {{ include "common.fullname" . }}-aaf-props
406       - name: {{ include "common.fullname" . }}-aaf-certs
407         secret:
408          secretName: {{ include "common.fullname" . }}-aaf-keys
409       - name: {{ include "common.fullname" . }}-springapp-conf
410         configMap:
411          name: {{ include "common.fullname" . }}-springapp-configmap
412       - name: {{ include "common.fullname" . }}-realm-conf
413         configMap:
414          name: {{ include "common.fullname" . }}-realm-configmap
415       - name: {{ include "common.fullname" . }}-auth-truststore-sec
416         secret:
417          secretName: aai-auth-truststore-secret
418          items:
419           {{ range $job := .Values.global.config.auth.files }}
420            - key: {{ . }}
421              path: {{ . }}
422           {{ end }}
423       restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }}
424       imagePullSecrets:
425       - name: "{{ include "common.namespace" . }}-docker-registry-key"