diff --git a/CHANGELOG.md b/CHANGELOG.md index f8134581..bd280491 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to - 🔧(backend) backport logging configuration from docs - 🧑‍💻(backend) add management command to merge duplicate users +- 👷(helm) add Kubernetes job for duplicate user merge command ### Fixed diff --git a/src/helm/meet/templates/backend_job_merge_duplicate_users.yaml b/src/helm/meet/templates/backend_job_merge_duplicate_users.yaml new file mode 100644 index 00000000..b3880022 --- /dev/null +++ b/src/helm/meet/templates/backend_job_merge_duplicate_users.yaml @@ -0,0 +1,126 @@ +{{- if .Values.backend.mergeDuplicateUsers.enabled }} +{{- $envVars := include "meet.common.env" (list . .Values.backend) -}} +{{- $fullName := include "meet.backend.fullname" . -}} +{{- $component := "backend-merge-duplicate-users" -}} +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ $fullName }}-merge-duplicate-users + namespace: {{ .Release.Namespace | quote }} + annotations: + argocd.argoproj.io/sync-options: Replace=true,Force=true + {{- with .Values.backend.mergeDuplicateUsers.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "meet.common.labels" (list . $component) | nindent 4 }} +spec: + ttlSecondsAfterFinished: {{ .Values.backend.jobs.ttlSecondsAfterFinished }} + backoffLimit: {{ .Values.backend.jobs.backoffLimit }} + template: + metadata: + annotations: + {{- with .Values.backend.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "meet.common.selectorLabels" (list . $component) | nindent 8 }} + spec: + {{- if $.Values.image.credentials }} + imagePullSecrets: + - name: {{ include "meet.secret.dockerconfigjson.name" (dict "fullname" (include "meet.fullname" .) "imageCredentials" $.Values.image.credentials) }} + {{- end }} + shareProcessNamespace: {{ .Values.backend.shareProcessNamespace }} + {{- with .Values.backend.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + {{- with .Values.backend.sidecars }} + {{- toYaml . | nindent 8 }} + {{- end }} + - name: {{ .Chart.Name }} + image: "{{ (.Values.backend.image | default dict).repository | default .Values.image.repository }}:{{ (.Values.backend.image | default dict).tag | default .Values.image.tag }}" + imagePullPolicy: {{ (.Values.backend.image | default dict).pullPolicy | default .Values.image.pullPolicy }} + {{- with .Values.backend.mergeDuplicateUsers.command }} + command: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.backend.args }} + args: + {{- toYaml . | nindent 12 }} + {{- end }} + env: + {{- if $envVars }} + {{- $envVars | indent 12 }} + {{- end }} + {{- with .Values.backend.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.backend.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + volumeMounts: + {{- range $index, $value := .Values.mountFiles }} + - name: "files-{{ $index }}" + mountPath: {{ $value.path }} + subPath: content + {{- end }} + {{- range $name, $volume := .Values.backend.persistence }} + - name: "{{ $name }}" + mountPath: "{{ $volume.mountPath }}" + {{- end }} + {{- range .Values.backend.extraVolumeMounts }} + - name: {{ .name }} + mountPath: {{ .mountPath }} + subPath: {{ .subPath | default "" }} + readOnly: {{ .readOnly }} + {{- end }} + {{- with .Values.backend.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.backend.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} + restartPolicy: {{ .Values.backend.mergeDuplicateUsers.restartPolicy }} + volumes: + {{- range $index, $value := .Values.mountFiles }} + - name: "files-{{ $index }}" + configMap: + name: "{{ include "meet.fullname" $ }}-files-{{ $index }}" + {{- end }} + {{- range $name, $volume := .Values.backend.persistence }} + - name: "{{ $name }}" + {{- if eq $volume.type "emptyDir" }} + emptyDir: {} + {{- else }} + persistentVolumeClaim: + claimName: "{{ $fullName }}-{{ $name }}" + {{- end }} + {{- end }} + {{- range .Values.backend.extraVolumes }} + - name: {{ .name }} + {{- if .existingClaim }} + persistentVolumeClaim: + claimName: {{ .existingClaim }} + {{- else if .hostPath }} + hostPath: + {{ toYaml .hostPath | nindent 12 }} + {{- else if .csi }} + csi: + {{- toYaml .csi | nindent 12 }} + {{- else if .configMap }} + configMap: + {{- toYaml .configMap | nindent 12 }} + {{- else if .emptyDir }} + emptyDir: + {{- toYaml .emptyDir | nindent 12 }} + {{- else }} + emptyDir: {} + {{- end }} + {{- end }} +{{- end }} diff --git a/src/helm/meet/values.yaml b/src/helm/meet/values.yaml index c11ea2a7..a4c4592c 100644 --- a/src/helm/meet/values.yaml +++ b/src/helm/meet/values.yaml @@ -279,6 +279,17 @@ backend: python manage.py createsuperuser --email $DJANGO_SUPERUSER_EMAIL --password $DJANGO_SUPERUSER_PASSWORD restartPolicy: Never + ## @param backend.mergeDuplicateUsers.command backend merge_duplicate_users command + ## @param backend.mergeDuplicateUsers.restartPolicy backend merge_duplicate_users job restart policy + mergeDuplicateUsers: + annotations: {} + enabled: false + command: + - python + - manage.py + - merge_duplicate_users + restartPolicy: Never + ## @param backend.probes.liveness.path [nullable] Configure path for backend HTTP liveness probe ## @param backend.probes.liveness.targetPort [nullable] Configure port for backend HTTP liveness probe ## @param backend.probes.liveness.initialDelaySeconds [nullable] Configure initial delay for backend liveness probe