a0b09294e4394c0198a7f670851228e044f8c990
[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         - --service-name
68         - aai-resources
69         - --service-name
70         - aai-traversal
71         - --service-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: /dev/log
95           name: aai-service-log
96         - mountPath: /usr/local/etc/haproxy/haproxy.cfg
97         {{ if .Values.global.installSidecarSecurity }}
98           subPath: haproxy-pluggable-security.cfg
99         {{ else }}
100           subPath: haproxy.cfg
101         {{ end }}
102           name: haproxy-cfg
103         ports:
104         - containerPort: {{ .Values.service.internalPort }}
105           name: {{ .Values.service.portName }}
106         - containerPort: {{ .Values.metricsService.internalPort }}
107           name: {{ .Values.metricsService.portName }}
108         # disable liveness probe when breakpoints set in debugger
109         # so K8s doesn't restart unresponsive container
110         {{- if eq .Values.liveness.enabled true }}
111         livenessProbe:
112           tcpSocket:
113             port: {{ .Values.service.internalPort }}
114           initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
115           periodSeconds: {{ .Values.liveness.periodSeconds }}
116         {{ end -}}
117         readinessProbe:
118           httpGet:
119             path: /aai/util/echo
120             port: {{ .Values.service.internalPort }}
121             scheme: HTTP
122             httpHeaders:
123             - name: X-FromAppId
124               value: OOM_ReadinessCheck
125       {{ if .Values.global.installSidecarSecurity }}
126             - name: Authorization
127               value: Basic YWFpQGFhaS5vbmFwLm9yZzpkZW1vMTIzNDU2IQ==
128       {{ end }}
129             - name: X-TransactionId
130               value: OOM_ReadinessCheck_TID
131             - name: Accept
132               value: application/json
133           initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
134           periodSeconds: {{ .Values.readiness.periodSeconds }}
135         resources: {{ include "common.resources" . | nindent 10 }}
136       {{- if .Values.nodeSelector }}
137       nodeSelector:
138 {{ toYaml .Values.nodeSelector | indent 8 }}
139       {{- end -}}
140       {{- if .Values.affinity }}
141       affinity:
142 {{ toYaml .Values.affinity | indent 8 }}
143       {{- end }}
144       serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
145       volumes:
146         - name: aai-service-log
147           hostPath:
148             path: "/dev/log"
149         - name: haproxy-cfg
150           configMap:
151             name: aai-deployment-configmap
152       {{- include "common.imagePullSecrets" . | nindent 6 }}