Allow dr-node containers to run as non-root
[oom.git] / kubernetes / dmaap / components / dmaap-dr-node / templates / statefulset.yaml
1 # Copyright © 2017 Amdocs, Bell Canada
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #       http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 apiVersion: apps/v1beta1
15 kind: StatefulSet
16 metadata:
17   name: {{ include "common.fullname" . }}
18   namespace: {{ include "common.namespace" . }}
19   labels:
20     app: {{ include "common.name" . }}
21     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
22     release: {{ .Release.Name }}
23     heritage: {{ .Release.Service }}
24 spec:
25   replicas: {{ .Values.replicaCount }}
26   serviceName: {{ .Values.config.dmaapDrNode.name }}
27   template:
28     metadata:
29       labels:
30         app: {{ include "common.name" . }}
31         release: {{ .Release.Name }}
32     spec:
33       initContainers:
34         - name: {{ include "common.name" . }}-readiness
35           image: "{{ .Values.global.readinessRepository }}/{{ .Values.global.readinessImage }}"
36           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
37           command:
38           - /root/ready.py
39           args:
40           - --container-name
41           - dmaap-dr-prov
42           env:
43           - name: NAMESPACE
44             valueFrom:
45               fieldRef:
46                 apiVersion: v1
47                 fieldPath: metadata.namespace
48         - name: {{ include "common.name" . }}-permission-fixer
49           image: "{{ .Values.global.busyBoxRepository }}/{{ .Values.global.busyBoxImage }}"
50           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
51           volumeMounts:
52           - mountPath: {{ .Values.persistence.spoolPath }}
53             name: {{ include "common.fullname" . }}-spool-data-pvc
54           - mountPath: {{ .Values.persistence.eventLogsPath }}
55             name: {{ include "common.fullname" . }}-event-logs-pvc
56           command: ["chown","-Rf","1000:1001", "/opt/app/datartr"]
57       containers:
58         - name: {{ include "common.name" . }}
59           image: "{{ include "common.repository" . }}/{{ .Values.image }}"
60           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
61           ports:
62           - containerPort: {{.Values.config.dmaapDrNode.externalPort}}
63           - containerPort: {{.Values.config.dmaapDrNode.externalPort2}}
64           {{- if eq .Values.liveness.enabled true }}
65           livenessProbe:
66             tcpSocket:
67               port: {{.Values.config.dmaapDrNode.internalPort}}
68             initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
69             periodSeconds: {{ .Values.liveness.periodSeconds }}
70           {{ end -}}
71           readinessProbe:
72             tcpSocket:
73               port: {{.Values.config.dmaapDrNode.internalPort}}
74             initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
75             periodSeconds: {{ .Values.readiness.periodSeconds }}
76           volumeMounts:
77           - mountPath: {{ .Values.persistence.spoolPath }}
78             name: {{ include "common.fullname" . }}-spool-data-pvc
79           - mountPath: {{ .Values.persistence.eventLogsPath }}
80             name: {{ include "common.fullname" . }}-event-logs-pvc
81           - mountPath: /etc/localtime
82             name: localtime
83             readOnly: false
84           - mountPath: /opt/app/datartr/etc/dedicatedFeed.json
85             name: {{ include "common.fullname" . }}-create-feed-config
86             subPath: dedicatedFeed.json
87           - mountPath: /opt/app/datartr/etc/createFeed.sh
88             name: {{ include "common.fullname" . }}-create-feed-config
89             subPath: createFeed.sh
90           - mountPath: /opt/app/datartr/etc/node.properties
91             name: {{ include "common.fullname" . }}-config
92             subPath: node.properties
93           - mountPath: /opt/app/datartr/etc/drNodeCadi.properties
94             name: {{ include "common.fullname" . }}-config
95             subPath: drNodeCadi.properties
96           lifecycle:
97             postStart:
98               exec:
99                 command:
100                   - /opt/app/datartr/etc/createFeed.sh
101           resources:
102 {{ include "common.resources" . | indent 12 }}
103         {{- if .Values.nodeSelector }}
104         nodeSelector:
105 {{ toYaml .Values.nodeSelector | indent 10 }}
106         {{- end -}}
107         {{- if .Values.affinity }}
108         affinity:
109 {{ toYaml .Values.affinity | indent 10 }}
110         {{- end }}
111         # Filebeat sidecar container
112         - name: {{ include "common.fullname" . }}-filebeat-onap
113           image: "{{ .Values.global.loggingRepository }}/{{ .Values.global.loggingImage }}"
114           imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
115           volumeMounts:
116           - name: {{ include "common.fullname" . }}-filebeat-conf
117             mountPath: /usr/share/filebeat/filebeat.yml
118             subPath: filebeat.yml
119           - name: {{ include "common.fullname" . }}-data-filebeat
120             mountPath: /usr/share/filebeat/data
121           - name: {{ include "common.fullname" . }}-event-logs-pvc
122             mountPath: /var/log/onap/datarouter-node
123       imagePullSecrets:
124       - name: "{{ include "common.namespace" . }}-docker-registry-key"
125       volumes:
126         - name: localtime
127           hostPath:
128             path: /etc/localtime
129         - name: {{ include "common.fullname" . }}-create-feed-config
130           configMap:
131             name: {{ include "common.fullname" . }}-create-feed-configmap
132             defaultMode: 0755
133             items:
134             - key: createFeed.sh
135               path: createFeed.sh
136             - key: dedicatedFeed.json
137               path: dedicatedFeed.json
138         - name: {{ include "common.fullname" . }}-config
139           configMap:
140             name: {{ include "common.fullname" . }}-configmap
141             items:
142             - key: node.properties
143               path: node.properties
144             - key: drNodeCadi.properties
145               path: drNodeCadi.properties
146         - name: {{ include "common.fullname" . }}-log-conf
147           configMap:
148             name: {{ include "common.fullname" . }}-log
149         - name: {{ include "common.fullname" . }}-filebeat-conf
150           configMap:
151             name: {{ include "common.fullname" . }}-dmaap-filebeat-configmap
152         - name: {{ include "common.fullname" . }}-data-filebeat
153           emptyDir: {}
154         - name:  {{ include "common.fullname" . }}-event-logs-pvc
155           emptyDir: {}
156   volumeClaimTemplates:
157   - metadata:
158       name: {{ include "common.fullname" . }}-spool-data-pvc
159       labels:
160         name: {{ include "common.fullname" . }}
161     spec:
162       accessModes: [ {{ .Values.persistence.accessMode }} ]
163       storageClassName: {{ include "common.fullname" . }}-spool-data-stcl
164       resources:
165         requests:
166           storage: {{ .Values.persistence.spoolSize }}
167       selector:
168         matchLabels:
169           name: {{ include "common.fullname" . }}-spool-data-pv
170   - metadata:
171       name: {{ include "common.fullname" . }}-event-logs-pvc
172       labels:
173         name: {{ include "common.fullname" . }}
174     spec:
175       accessModes: [ {{ .Values.persistence.accessMode }} ]
176       storageClassName: {{ include "common.fullname" . }}-event-logs-stcl
177       resources:
178         requests:
179           storage: {{ .Values.persistence.eventLogSize }}
180       selector:
181         matchLabels:
182           name: {{ include "common.fullname" . }}-event-logs-pv