Хотите параметризовать расписание cronjob в Kubernetes - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть ямл. Я хочу параметризировать график этого kubernetes cronjob. В файле среды я объявил JobFrequencyInMinutes: "10"

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: scheduled-mongo-cronjob
spec:
  schedule: "*/$(JobFrequencyInMinutes) * * * *"
concurrencyPolicy: "Forbid"
jobTemplate:
spec:
   template:
     spec:
          containers:
          - name: scheduled-mongo-cronjob
            image: xxxx
          env:
          - name: JobFrequencyInMinutes
            valueFrom:
              configMapKeyRef:
                key: JobFrequencyInMinutes
                name: env-conf

Когда я применяю вышеуказанный yaml, я получаю сообщение об ошибке. Недопустимый CronJob «запланированный-понедельник go -cronjob»: spe c .schedule: недопустимое значение: «* / $ (JobFrequencyInMinutes) * * * *»: не удалось проанализировать int из $ (JobFrequencyInMinutes): strconv. Atoi: синтаксический анализ "$ (JobFrequencyInMinutes)": неверный синтаксис

Пожалуйста, сообщите мне, если есть какой-нибудь альтернативный способ добиться этого.

1 Ответ

1 голос
/ 06 апреля 2020

Проблема здесь в том, что переменная среды будет доступна только при создании CronJob и внутри самого задания, но ее не удается создать, поскольку переменная $ JobFrequencyInMinutes не существует на уровне узла.

Я бы сказал, что для достижения того, что вы пытаетесь сделать, вам нужно иметь переменную среды на уровне кластера. Всякий раз, когда вы хотите обновить свое расписание, вам нужно будет установить для него новое значение и затем заново создать свой CronJob.

Кажется, что декларативный способ не работает (через ваш YAML), поэтому вы нужно будет создать используя императивный способ:

kubectl run scheduled-mongo-cronjob --schedule="*/$JobFrequencyInMinutes * * * *" --restart=OnFailure --image=xxxx

...