vvp -- VNF Validation Platform
[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/etc/auth/realm.properties
308           name: {{ include "common.fullname" . }}-realm-conf
309           subPath: realm.properties
310         - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.keyfile
311           name: {{ include "common.fullname" . }}-aaf-certs
312           subPath: org.onap.aai.keyfile
313         - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.props
314           name: {{ include "common.fullname" . }}-aaf-properties
315           subPath: org.onap.aai.props
316         - mountPath: /opt/app/aai-traversal/resources/aaf/org.osaaf.location.props
317           name: {{ include "common.fullname" . }}-aaf-properties
318           subPath: org.osaaf.location.props
319         - mountPath: /opt/app/aai-traversal/resources/aaf/permissions.properties
320           name: {{ include "common.fullname" . }}-aaf-properties
321           subPath: permissions.properties
322         - mountPath: /opt/app/aai-traversal/resources/cadi.properties
323           name: {{ include "common.fullname" . }}-aaf-properties
324           subPath: cadi.properties
325         - mountPath: /opt/app/aai-traversal/resources/aaf/org.onap.aai.p12
326           name: {{ include "common.fullname" . }}-aaf-certs
327           subPath: org.onap.aai.p12
328         - mountPath: /opt/app/aai-traversal/resources/aaf/truststoreONAPall.jks
329           name: {{ include "common.fullname" . }}-aaf-certs
330           subPath: truststoreONAPall.jks
331         - mountPath: /opt/app/aai-traversal/resources/application.properties
332           name: {{ include "common.fullname" . }}-springapp-conf
333           subPath: application.properties
334           {{ $global := . }}
335           {{ range $job := .Values.global.config.auth.files }}
336         - mountPath: /opt/app/aai-traversal/resources/etc/auth/{{ . }}
337           name: {{ include "common.fullname" $global }}-auth-truststore-sec
338           subPath: {{ . }}
339           {{ end }}
340         ports:
341         - containerPort: {{ .Values.service.internalPort }}
342         - containerPort: {{ .Values.service.internalPort2 }}
343         # disable liveness probe when breakpoints set in debugger
344         # so K8s doesn't restart unresponsive container
345         {{ if .Values.liveness.enabled }}
346         livenessProbe:
347           tcpSocket:
348             port: {{ .Values.service.internalPort }}
349           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
350           periodSeconds: {{ .Values.liveness.periodSeconds }}
351         {{ end }}
352         readinessProbe:
353           tcpSocket:
354             port: {{ .Values.service.internalPort }}
355           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
356           periodSeconds: {{ .Values.readiness.periodSeconds }}
357         resources:
358 {{ include "common.resources" . | indent 12 }}
359       {{- if .Values.nodeSelector }}
360       nodeSelector:
361 {{ toYaml .Values.nodeSelector | indent 8 }}
362       {{- end -}}
363       {{- if .Values.affinity }}
364       affinity:
365 {{ toYaml .Values.affinity | indent 8 }}
366       {{- end }}
367
368       # side car containers
369       - name: filebeat-onap
370         image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}"
371         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
372         volumeMounts:
373         - mountPath: /usr/share/filebeat/filebeat.yml
374           subPath: filebeat.yml
375           name: filebeat-conf
376         - mountPath: /var/log/onap
377           name: {{ include "common.fullname" . }}-logs
378         - mountPath: /usr/share/filebeat/data
379           name: {{ include "common.fullname" . }}-filebeat
380       volumes:
381       - name: localtime
382         hostPath:
383           path: /etc/localtime
384       - name: filebeat-conf
385         configMap:
386           name: aai-filebeat
387       - name: {{ include "common.fullname" . }}-logs
388         emptyDir: {}
389       - name: {{ include "common.fullname" . }}-filebeat
390         emptyDir: {}
391       - name: {{ include "common.fullname" . }}-log-conf
392         configMap:
393          name: {{ include "common.fullname" . }}-log
394       - name: {{ include "common.fullname" . }}-localhost-access-log-conf
395         configMap:
396          name: {{ include "common.fullname" . }}-localhost-access-log-configmap
397       - name: {{ include "common.fullname" . }}-db-real-conf
398         configMap:
399          name: {{ include "common.fullname" . }}-db-real-configmap
400       - name: {{ include "common.fullname" . }}-db-cached-conf
401         configMap:
402          name: {{ include "common.fullname" . }}-db-cached-configmap
403       - name: {{ include "common.fullname" . }}-aaiconfig-conf
404         configMap:
405          name: {{ include "common.fullname" . }}-aaiconfig-configmap
406       - name: {{ include "common.fullname" . }}-aaf-properties
407         configMap:
408          name: {{ include "common.fullname" . }}-aaf-props
409       - name: {{ include "common.fullname" . }}-aaf-certs
410         secret:
411          secretName: {{ include "common.fullname" . }}-aaf-keys
412       - name: {{ include "common.fullname" . }}-springapp-conf
413         configMap:
414          name: {{ include "common.fullname" . }}-springapp-configmap
415       - name: {{ include "common.fullname" . }}-realm-conf
416         configMap:
417          name: {{ include "common.fullname" . }}-realm-configmap
418       - name: {{ include "common.fullname" . }}-auth-truststore-sec
419         secret:
420          secretName: aai-auth-truststore-secret
421          items:
422           {{ range $job := .Values.global.config.auth.files }}
423            - key: {{ . }}
424              path: {{ . }}
425           {{ end }}
426       restartPolicy: {{ .Values.global.restartPolicy | default .Values.restartPolicy }}
427       imagePullSecrets:
428       - name: "{{ include "common.namespace" . }}-docker-registry-key"