apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "parent-bff.name" . }} namespace: {{ .Values.namespace }} labels: {{- include "parent-bff.labels" . | nindent 4 }} spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: {{- include "parent-bff.selectorLabels" . | nindent 6 }} strategy: type: {{ .Values.strategy.type }} rollingUpdate: maxSurge: {{ .Values.strategy.maxSurge }} maxUnavailable: {{ .Values.strategy.maxUnavailable }} template: metadata: labels: {{- include "parent-bff.selectorLabels" . | nindent 8 }} app.kubernetes.io/part-of: edu-platform app.kubernetes.io/component: bff {{- if .Values.metrics.enabled }} annotations: prometheus.io/scrape: "true" prometheus.io/port: {{ .Values.metrics.port | quote }} prometheus.io/path: {{ .Values.metrics.path | quote }} {{- end }} spec: {{- if .Values.podAntiAffinity.enabled }} affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchLabels: {{- include "parent-bff.selectorLabels" . | nindent 20 }} topologyKey: {{ .Values.podAntiAffinity.topologyKey }} {{- end }} containers: - name: {{ include "parent-bff.name" . }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http containerPort: {{ .Values.service.targetPort }} protocol: TCP livenessProbe: httpGet: path: {{ .Values.probes.liveness.path }} port: http initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }} periodSeconds: {{ .Values.probes.liveness.periodSeconds }} timeoutSeconds: {{ .Values.probes.liveness.timeoutSeconds }} failureThreshold: {{ .Values.probes.liveness.failureThreshold }} readinessProbe: httpGet: path: {{ .Values.probes.readiness.path }} port: http initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }} periodSeconds: {{ .Values.probes.readiness.periodSeconds }} timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }} failureThreshold: {{ .Values.probes.readiness.failureThreshold }} resources: {{- toYaml .Values.resources | nindent 12 }} env: {{- if .Values.configMap.enabled }} {{- range $k, $v := .Values.configMap.data }} - name: {{ $k }} valueFrom: configMapKeyRef: name: {{ include "parent-bff.name" $ }}-config key: {{ $k }} {{- end }} {{- end }} {{- range $secret := .Values.secretRefs }} {{- range $key := $secret.keys }} - name: {{ $key }} valueFrom: secretKeyRef: name: {{ $secret.name }} key: {{ $key }} {{- end }} {{- end }} {{- if .Values.kafka.enabled }} - name: KAFKA_BROKERS value: {{ .Values.kafka.brokers | quote }} - name: KAFKA_CONSUMER_GROUP_ID value: {{ .Values.kafka.consumerGroupId | quote }} {{- end }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }}