Merge "[AAI] Add model-loader tracing config"
[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           resources:
30             limits:
31               cpu: "100m"
32               memory: "500Mi"
33             requests:
34               cpu: "3m"
35               memory: "20Mi"
36         - command:
37           - sh
38           args:
39           - -c
40           - "cd /config-input && for PFILE in `ls -1`; do envsubst <${PFILE} >/config/${PFILE}; done"
41           env:
42           - name: SQL_USER
43             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-creds" "key" "login") | indent 12 }}
44           - name: SQL_PASSWORD
45             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-creds" "key" "password") | indent 12 }}
46           - name: RESTSERVER_USER
47             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "login") | indent 12 }}
48           - name: RESTSERVER_PASSWORD
49             {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "restserver-creds" "key" "password") | indent 12 }}
50           volumeMounts:
51           - mountPath: /config-input
52             name: apiconfig
53           - mountPath: /config
54             name: apiconfig-processed
55           image: {{ include "repositoryGenerator.image.envsubst" . }}
56           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
57           name: {{ include "common.name" . }}-update-config
58       containers:
59         - name: {{ include "common.name" . }}
60           image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
61           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
62           command: ["/opt/app/policy/api/bin/policy-api.sh"]
63           args: ["/opt/app/policy/api/etc/mounted/apiParameters.yaml"]
64           ports: {{ include "common.containerPorts" . | nindent 12  }}
65           # disable liveness probe when breakpoints set in debugger
66           # so K8s doesn't restart unresponsive container
67           {{- if eq .Values.liveness.enabled true }}
68           livenessProbe:
69             tcpSocket:
70               port: {{ .Values.service.internalPort }}
71             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
72             periodSeconds: {{ .Values.liveness.periodSeconds }}
73           {{ end -}}
74           readinessProbe:
75             httpGet:
76               path: {{ .Values.readiness.api }}
77               port: {{ .Values.service.internalPort }}
78               httpHeaders:
79                 - name: Authorization
80                   value: Basic {{ printf "%s:%s" .Values.restServer.user .Values.restServer.password | b64enc }}
81               scheme: HTTP
82             successThreshold: {{ .Values.readiness.successThreshold }}
83             failureThreshold: {{ .Values.readiness.failureThreshold }}
84             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
85             periodSeconds: {{ .Values.readiness.periodSeconds }}
86             timeoutSeconds: {{ .Values.readiness.timeout }}
87           volumeMounts:
88           - mountPath: /opt/app/policy/api/etc/mounted
89             name: apiconfig-processed
90           resources: {{ include "common.resources" . | nindent 12 }}
91         {{- if .Values.nodeSelector }}
92         nodeSelector:
93 {{ toYaml .Values.nodeSelector | indent 10 }}
94         {{- end -}}
95         {{- if .Values.affinity }}
96         affinity:
97 {{ toYaml .Values.affinity | indent 10 }}
98         {{- end }}
99       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
100       volumes:
101         - name: apiconfig
102           configMap:
103             name: {{ include "common.fullname" . }}-configmap
104             defaultMode: 0755
105         - name: apiconfig-processed
106           emptyDir:
107             medium: Memory
108       {{- include "common.imagePullSecrets" . | nindent 6 }}