[AAI] Fix Istio compatibility and add Job ServiceAccount
[oom.git] / kubernetes / aai / templates / deployment.yaml
1 {{/*
2 # Copyright (c) 2018 Amdocs, Bell Canada, AT&T
3 # Modifications Copyright (c) 2020 Nokia, Orange
4 # Modifications Copyright © 2023 Nordix Foundation
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 apiVersion: apps/v1
20 kind: Deployment
21 metadata:
22   name: {{ include "common.fullname" . }}
23   namespace: {{ include "common.namespace" . }}
24   labels:
25     app: {{ include "common.name" . }}
26     app.kubernetes.io/name: {{ include "common.name" . }}
27     {{- if .Chart.AppVersion }}
28     version: {{ .Chart.AppVersion | replace "+" "_" }}
29     {{- else }}
30     version: {{ .Chart.Version | replace "+" "_" }}
31     {{- end }}
32     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
33     release: {{ include "common.release" . }}
34     heritage: {{ .Release.Service }}
35 spec:
36   selector:
37     matchLabels:
38       app: {{ include "common.name" . }}
39   replicas: {{ .Values.replicaCount }}
40   strategy:
41     type: {{ .Values.updateStrategy.type }}
42     {{- if (eq "RollingUpdate" .Values.updateStrategy.type) }}
43     rollingUpdate:
44       maxUnavailable: {{ .Values.updateStrategy.maxUnavailable }}
45       maxSurge: {{ .Values.updateStrategy.maxSurge }}
46     {{- end }}
47   template:
48     metadata:
49       labels:
50         app: {{ include "common.name" . }}
51         release: {{ include "common.release" . }}
52         app.kubernetes.io/name: {{ include "common.name" . }}
53         {{- if .Chart.AppVersion }}
54         version: {{ .Chart.AppVersion | replace "+" "_" }}
55         {{- else }}
56         version: {{ .Chart.Version | replace "+" "_" }}
57         {{- end }}
58       name: {{ include "common.release" . }}
59       annotations:
60         checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
61     spec:
62       terminationGracePeriodSeconds: {{ .Values.service.terminationGracePeriodSeconds }}
63       initContainers:
64       - command:
65         - /app/ready.py
66         args:
67         - --container-name
68         - aai-resources
69         - --container-name
70         - aai-traversal
71         - --container-name
72         - aai-graphadmin
73         env:
74         - name: NAMESPACE
75           valueFrom:
76             fieldRef:
77               apiVersion: v1
78               fieldPath: metadata.namespace
79         image: {{ include "repositoryGenerator.image.readiness" . }}
80         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
81         name: {{ include "common.name" . }}-readiness
82         resources:
83           requests:
84             memory: {{ .Values.haproxy.initContainers.resources.memory }}
85             cpu: {{ .Values.haproxy.initContainers.resources.cpu }}
86           limits:
87             memory: {{ .Values.haproxy.initContainers.resources.memory }}
88             cpu: {{ .Values.haproxy.initContainers.resources.cpu }}
89       containers:
90       - name: {{ include "common.name" . }}
91         image: "{{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.image }}"
92         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
93         volumeMounts:
94         - mountPath: /etc/localtime
95           name: localtime
96           readOnly: true
97         - mountPath: /dev/log
98           name: aai-service-log
99         - mountPath: /usr/local/etc/haproxy/haproxy.cfg
100         {{ if .Values.global.installSidecarSecurity }}
101           subPath: haproxy-pluggable-security.cfg
102         {{ else }}
103           subPath: haproxy.cfg
104         {{ end }}
105           name: haproxy-cfg
106         ports:
107         - containerPort: {{ .Values.service.internalPort }}
108           name: {{ .Values.service.portName }}
109         - containerPort: {{ .Values.metricsService.internalPort }}
110           name: {{ .Values.metricsService.portName }}
111         # disable liveness probe when breakpoints set in debugger
112         # so K8s doesn't restart unresponsive container
113         {{- if eq .Values.liveness.enabled true }}
114         livenessProbe:
115           tcpSocket:
116             port: {{ .Values.service.internalPort }}
117           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
118           periodSeconds: {{ .Values.liveness.periodSeconds }}
119         {{ end -}}
120         readinessProbe:
121           httpGet:
122             path: /aai/util/echo
123             port: {{ .Values.service.internalPort }}
124             scheme: HTTP
125             httpHeaders:
126             - name: X-FromAppId
127               value: OOM_ReadinessCheck
128       {{ if .Values.global.installSidecarSecurity }}
129             - name: Authorization
130               value: Basic YWFpQGFhaS5vbmFwLm9yZzpkZW1vMTIzNDU2IQ==
131       {{ end }}
132             - name: X-TransactionId
133               value: OOM_ReadinessCheck_TID
134             - name: Accept
135               value: application/json
136           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
137           periodSeconds: {{ .Values.readiness.periodSeconds }}
138         resources: {{ include "common.resources" . | nindent 10 }}
139       {{- if .Values.nodeSelector }}
140       nodeSelector:
141 {{ toYaml .Values.nodeSelector | indent 8 }}
142       {{- end -}}
143       {{- if .Values.affinity }}
144       affinity:
145 {{ toYaml .Values.affinity | indent 8 }}
146       {{- end }}
147       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
148       volumes:
149         - name: localtime
150           hostPath:
151             path: /etc/localtime
152         - name: aai-service-log
153           hostPath:
154             path: "/dev/log"
155         - name: haproxy-cfg
156           configMap:
157             name: aai-deployment-configmap
158       imagePullSecrets:
159       - name: "{{ include "common.namespace" . }}-docker-registry-key"