1d7e0498af18616b9777210406d7910429648cab
[oom.git] / kubernetes / policy / components / policy-api / templates / deployment.yaml
1 apiVersion: apps/v1
2 kind: Deployment
3 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
4 spec:
5   selector: {{- include "common.selectors" . | nindent 4 }}
6   replicas: {{ .Values.replicaCount }}
7   template:
8     metadata: {{- include "common.templateMetadata" . | nindent 6 }}
9     spec:
10       initContainers:
11         - command:
12           - /app/ready.py
13           args:
14           - --job-name
15 {{ if not .Values.global.postgres.localCluster }}
16           - {{ include "common.release" . }}-policy-galera-config
17 {{ else }}
18           - {{ include "common.release" . }}-policy-pg-config
19 {{ end }}
20           env:
21           - name: NAMESPACE
22             valueFrom:
23               fieldRef:
24                 apiVersion: v1
25                 fieldPath: metadata.namespace
26           image: {{ include "repositoryGenerator.image.readiness" . }}
27           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
28           name: {{ include "common.name" . }}-readiness
29         - command:
30           - sh
31           args:
32           - -c
33           - "cd /config-input && for PFILE in `ls -1`; do envsubst <${PFILE} >/config/${PFILE}; done"
34           env:
35           - name: SQL_USER
36             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-creds" "key" "login") | indent 12 }}
37           - name: SQL_PASSWORD
38             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-creds" "key" "password") | indent 12 }}
39           - name: RESTSERVER_USER
40             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "login") | indent 12 }}
41           - name: RESTSERVER_PASSWORD
42             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "password") | indent 12 }}
43           volumeMounts:
44           - mountPath: /config-input
45             name: apiconfig
46           - mountPath: /config
47             name: apiconfig-processed
48           image: {{ include "repositoryGenerator.image.envsubst" . }}
49           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
50           name: {{ include "common.name" . }}-update-config
51       containers:
52         - name: {{ include "common.name" . }}
53           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
54           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
55           command: ["/opt/app/policy/api/bin/policy-api.sh"]
56           args: ["/opt/app/policy/api/etc/mounted/apiParameters.yaml"]
57           ports: {{ include "common.containerPorts" . | nindent 12  }}
58           # disable liveness probe when breakpoints set in debugger
59           # so K8s doesn't restart unresponsive container
60           {{- if eq .Values.liveness.enabled true }}
61           livenessProbe:
62             tcpSocket:
63               port: {{ .Values.service.internalPort }}
64             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
65             periodSeconds: {{ .Values.liveness.periodSeconds }}
66           {{ end -}}
67           readinessProbe:
68             httpGet:
69               path: {{ .Values.readiness.api }}
70               port: {{ .Values.service.internalPort }}
71               httpHeaders:
72                 - name: Authorization
73                   value: Basic {{ printf "%s:%s" .Values.restServer.user .Values.restServer.password | b64enc }}
74               scheme: HTTP
75             successThreshold: {{ .Values.readiness.successThreshold }}
76             failureThreshold: {{ .Values.readiness.failureThreshold }}
77             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
78             periodSeconds: {{ .Values.readiness.periodSeconds }}
79             timeoutSeconds: {{ .Values.readiness.timeout }}
80           volumeMounts:
81           - mountPath: /etc/localtime
82             name: localtime
83             readOnly: true
84           - mountPath: /opt/app/policy/api/etc/mounted
85             name: apiconfig-processed
86           resources: {{ include "common.resources" . | nindent 12 }}
87         {{- if .Values.nodeSelector }}
88         nodeSelector:
89 {{ toYaml .Values.nodeSelector | indent 10 }}
90         {{- end -}}
91         {{- if .Values.affinity }}
92         affinity:
93 {{ toYaml .Values.affinity | indent 10 }}
94         {{- end }}
95       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
96       volumes:
97         - name: localtime
98           hostPath:
99              path: /etc/localtime
100         - name: apiconfig
101           configMap:
102             name: {{ include "common.fullname" . }}-configmap
103             defaultMode: 0755
104         - name: apiconfig-processed
105           emptyDir:
106             medium: Memory
107       imagePullSecrets:
108       - name: "{{ include "common.namespace" . }}-docker-registry-key"