b1d04074f7238c147f2d83a7a6df0e9ca0b73450
[oom.git] / kubernetes / a1policymanagement / templates / statefulset.yaml
1 {{/*
2 ################################################################################
3 #   Copyright (c) 2020 Nordix Foundation.                                      #
4 #   Copyright © 2020 Samsung Electronics, Modifications                        #
5 #                                                                              #
6 #   Licensed under the Apache License, Version 2.0 (the "License");            #
7 #   you may not use this file except in compliance with the License.           #
8 #   You may obtain a copy of the License at                                    #
9 #                                                                              #
10 #       http://www.apache.org/licenses/LICENSE-2.0                             #
11 #                                                                              #
12 #   Unless required by applicable law or agreed to in writing, software        #
13 #   distributed under the License is distributed on an "AS IS" BASIS,          #
14 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
15 #   See the License for the specific language governing permissions and        #
16 #   limitations under the License.                                             #
17 ################################################################################
18 */}}
19
20 kind: StatefulSet
21 apiVersion: apps/v1
22 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
23 spec:
24   serviceName: {{ include "common.servicename" . }}
25   replicas: {{ index .Values.replicaCount }}
26   selector: {{- include "common.selectors" . | nindent 4 }}
27   template:
28     metadata:
29       labels: {{- include "common.labels" . | nindent 8 }}
30     spec:
31       imagePullSecrets:
32       - name: "{{ include "common.namespace" . }}-docker-registry-key"
33       initContainers:
34       - name: {{ include "common.name" . }}-bootstrap-config
35         image: {{ include "repositoryGenerator.image.envsubst" . }}
36         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
37         command:
38         - sh
39         args:
40         - -c
41         - |
42           cd /config-input
43           for PFILE in `ls -1`
44           do
45             envsubst <${PFILE} >/config/${PFILE}
46             chmod o+w /config/${PFILE}
47           done
48           cat /config/application.yaml
49         env:
50         - name: A1CONTROLLER_USER
51           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "controller-secret" "key" "login") | indent 10 }}
52         - name: A1CONTROLLER_PASSWORD
53           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "controller-secret" "key" "password") | indent 10 }}
54         volumeMounts:
55         - mountPath: /config-input
56           name: {{ include "common.fullname" . }}-policy-conf-input
57         - mountPath: /config
58           name: config
59       containers:
60       - name: {{ include "common.name" . }}-update-config
61         image: {{ include "repositoryGenerator.image.envsubst" . }}
62         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
63         securityContext:
64           runAsGroup: {{ .Values.groupID }}
65           runAsUser: {{ .Values.userID }}
66           runAsNonRoot: true
67         command:
68         - sh
69         args:
70         - /tmp/scripts/daemon.sh
71         env:
72         - name: A1CONTROLLER_USER
73           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "controller-secret" "key" "login") | indent 10 }}
74         - name: A1CONTROLLER_PASSWORD
75           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "controller-secret" "key" "password") | indent 10 }}
76         volumeMounts:
77         - mountPath: /tmp/scripts
78           name: {{ include "common.fullname" . }}-envsubst-scripts
79         - mountPath: /config-input
80           name: {{ include "common.fullname" . }}-policy-conf-input
81         - mountPath: /config
82           name: config
83       - name: {{ include "common.name" . }}
84         image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
85         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
86         ports: {{ include "common.containerPorts" . | nindent 10  }}
87         readinessProbe:
88           tcpSocket:
89             port: {{ .Values.readiness.port }}
90           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
91           periodSeconds: {{ .Values.liveness.periodSeconds }}
92         livenessProbe:
93           httpGet:
94             path: /status
95             port: {{ .Values.liveness.port }}
96             scheme: HTTP
97           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
98           periodSeconds: {{ .Values.liveness.periodSeconds }}
99         volumeMounts:
100         - name: config
101           mountPath: /opt/app/policy-agent/data/application_configuration.json
102           subPath: application_configuration.json
103         - name: config
104           mountPath: /opt/app/policy-agent/config/application.yaml
105           subPath: application.yaml
106         - name: {{ include "common.fullname" . }}
107           mountPath: "/var/policy-management-service/database"
108         resources: {{ include "common.resources" . | nindent 10 }}
109       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
110       volumes:
111         - name: {{ include "common.fullname" . }}-policy-conf-input
112           configMap:
113             name: {{ include "common.fullname" . }}-policy-conf
114         - name: {{ include "common.fullname" . }}-envsubst-scripts
115           configMap:
116             name: {{ include "common.fullname" . }}-envsubst-scripts
117             defaultMode: 0555
118         - name: config
119           emptyDir:
120             medium: Memory
121 {{- if not .Values.persistence.enabled }}
122         - name: {{ include "common.fullname" . }}
123           emptyDir: {}
124 {{- else }}
125   volumeClaimTemplates:
126     - {{include "common.PVCTemplate" . | indent 6 | trim }}
127 {{- end }}