Merge "[CLAMP,COMMON] Escape special chars in mysql passwords"
[oom.git] / kubernetes / dcaegen2 / components / dcae-inventory-api / templates / deployment.yaml
1 #============LICENSE_START========================================================
2 # ================================================================================
3 # Copyright (c) 2019 AT&T Intellectual Property. All rights reserved.
4 # ================================================================================
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 # ============LICENSE_END=========================================================
17
18 apiVersion: apps/v1
19 kind: Deployment
20 metadata:
21   name: {{ include "common.fullname" . }}
22   namespace: {{ include "common.namespace" . }}
23   labels:
24     app: {{ include "common.name" . }}
25     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
26     release: {{ include "common.release" . }}
27     heritage: {{ .Release.Service }}
28 spec:
29   replicas: 1
30   selector:
31     matchLabels:
32       app: {{ include "common.name" . }}
33   template:
34     metadata:
35       labels:
36         app: {{ include "common.name" . }}
37         release: {{ include "common.release" . }}
38     spec:
39       initContainers:
40         - command:
41           - sh
42           args:
43           - -c
44           - "cd /config-input && for PFILE in `find . -not -type d | grep -v -F ..`; do envsubst <${PFILE} >/config/${PFILE}; done"
45           env:
46           - name: PG_USER
47             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "login") | indent 12 }}
48           - name: PG_PASSWORD
49             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "password") | indent 12 }}
50           volumeMounts:
51           - mountPath: /config-input
52             name: {{ include "common.fullname" . }}-inv-config-input
53           - mountPath: /config
54             name: {{ include "common.fullname" . }}-inv-config
55           image: "{{ .Values.global.envsubstImage }}"
56           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
57           name: {{ include "common.name" . }}-update-config
58
59         - name: {{ include "common.name" . }}-readiness
60           image: {{ include "common.repository" . }}/{{ .Values.global.readinessImage }}
61           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
62           command:
63             - /app/ready.py
64           args:
65             - --container-name
66             - {{ .Values.postgres.nameOverride }}
67             - --container-name
68             - aaf-cm
69             - "-t"
70             - "15"
71           env:
72           - name: NAMESPACE
73             valueFrom:
74               fieldRef:
75                 apiVersion: v1
76                 fieldPath: metadata.namespace
77         - name: init-tls
78           env:
79           - name: aaf_locator_fqdn
80             value: dcae
81           - name: POD_IP
82             valueFrom:
83               fieldRef:
84                 apiVersion: v1
85                 fieldPath: status.podIP
86           image: {{ .Values.global.tlsRepository }}/{{ .Values.global.tlsImage }}
87           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
88           resources: {}
89           volumeMounts:
90             - mountPath: /opt/app/osaaf
91               name: tls-info
92       containers:
93         - name: {{ include "common.name" . }}
94           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
95           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
96           # Assumes that the Docker image is built with ENTRYPOINT set to
97           # ["java", "-jar", "/opt/inventory-api-x.y.z.jar", "server"]
98           # where "x.y.z" is the version number (matches the Docker image version number)
99           # The arg below adds a parameter, the path to a config file.
100           # This tells the inventory-api app to get its configuration from the file
101           # rather than querying Consul.
102           args:
103             - "/opt/config.json"
104           resources:
105 {{ include "common.resources" . | indent 12 }}
106           ports:
107           - containerPort: {{ .Values.service.internalPort }}
108           # disable liveness probe when breakpoints set in debugger
109           # so K8s doesn't restart unresponsive container
110           {{- if eq .Values.liveness.enabled true }}
111           livenessProbe:
112             tcpSocket:
113               port: {{ .Values.service.internalPort }}
114             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
115             periodSeconds: {{ .Values.liveness.periodSeconds }}
116           {{ end }}
117           readinessProbe:
118             httpGet:
119               path: {{ .Values.readiness.path }}
120               port: {{ .Values.service.internalPort }}
121               scheme: {{ .Values.readiness.scheme }}
122             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
123             periodSeconds: {{ .Values.readiness.periodSeconds }}
124           volumeMounts:
125             - name: {{  include "common.fullname" . }}-inv-config
126               mountPath: /opt/config.json
127               subPath: config.json
128             - mountPath: /opt/cert/
129               name: tls-info
130             - mountPath: /opt/logs/
131               name: component-log
132           env:
133             - name: CONSUL_HOST
134               value: consul.{{ include "common.namespace" . }}
135         - name: {{ include "common.name" . }}-filebeat
136           env:
137             - name: POD_IP
138               valueFrom:
139                 fieldRef:
140                   apiVersion: v1
141                   fieldPath: status.podIP
142           image: {{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}
143           imagePullPolicy: IfNotPresent
144           resources: {}
145           volumeMounts:
146           - mountPath: /var/log/onap/inventory
147             name: component-log
148           - mountPath: /usr/share/filebeat/data
149             name: filebeat-data
150           - mountPath: /usr/share/filebeat/filebeat.yml
151             name: filebeat-conf
152             subPath: filebeat.yml
153       volumes:
154         - emptyDir: {}
155           name: component-log
156         - emptyDir: {}
157           name: filebeat-data
158         - configMap:
159             defaultMode: 420
160             name: {{ include "common.fullname" . }}-filebeat-configmap
161           name: filebeat-conf
162         - name: {{ include "common.fullname" . }}-inv-config-input
163           configMap:
164             name: {{ include "common.fullname" . }}-configmap
165         - name: {{ include "common.fullname" . }}-inv-config
166           emptyDir:
167             medium: Memory
168         - emptyDir: {}
169           name: tls-info
170       imagePullSecrets:
171       - name: "{{ include "common.namespace" . }}-docker-registry-key"