Helm cron - работа с несколькими контейнерами

Мне нужно запустить несколько контейнеров за одно выполнение cronjob. В настоящее время у меня есть следующий шаблон cronjob.yaml:

      jobTemplate:
 spec:
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}
        cron: {{ .Values.filesjob.jobName }}
    spec:
      containers:
      - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        env:
          - name: FILE_MASK
            value: "{{ .Values.filesjob.fileMask }}"
          - name: ID
            value: "{{ .Values.filesjob.id }}"
        imagePullPolicy: {{ .Values.image.pullPolicy }}
        name: {{ .Values.filesjob.jobName }}
        volumeMounts:
        - mountPath: /data
          name: path-to-clean
        - name: path-logfiles
          mountPath: /log
      - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        env:
          - name: FILE_MASK
            value: "{{ .Values.filesjob.fileMask }}"
          - name: ID
            value: "{{ .Values.filesjob.id }}"
        imagePullPolicy: {{ .Values.image.pullPolicy }}
        name: {{ .Values.filesjob.jobName2 }}
        volumeMounts:
        - mountPath: /data
          name: path2-to-clean
        - name: path2-logfiles
          mountPath: /log

Вышеупомянутое генерирует cronjob, который выполняет два контейнера с передачей разных переменных env. Могу ли я сгенерировать то же самое, используя values.yaml, перебирая переменную?

1 ответ

Мне удалось решить эту проблему на примере из этой статьи - https://nikhils-devops.medium.com/helm-chart-for-kubernetes-cronjob-a694b47479a

Вот мой шаблон:

      {{- if .Values.cleanup.enabled -}}
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: registry-cleanup-job
  namespace: service
  labels:
    {{- include "some.labels" . | nindent 4 }}
spec:
  schedule: {{ .Values.cleanup.schedule }}
  concurrencyPolicy: Forbid
  successfulJobsHistoryLimit: 2
  failedJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          {{- range .Values.cleanup.crons }}
          - name: {{ .name | quote }}
            image: {{ $.Values.cleanup.imageName }}
            imagePullPolicy: {{ $.Values.cleanup.pullPolicy }}
            args:
            - {{ .command }}
          {{- end}}
          restartPolicy: Never
{{- end }}

И связанные значения:

      cleanup:
  enabled: true
  schedule: "0 8 * * 5"
  imageName: digitalocean/doctl:1.60.0
  pullPolicy: IfNotPresent
  crons:
    - command0:
      name: "cleanup0"
      command: command0
    - command1:
      name: "cleanup1"
      command: command1
    - command2:
      name: "cleanup2"
      command: command2
    - command3:
      name: "cleanup3"
      command: command3
    - command4:
      name: "cleanup4"
      command: command4
Другие вопросы по тегам