从 ConfigMap 读取 Kubernetes CronJob 的调度表达式

Read schedule expression of Kubernetes CronJob from ConfigMap

我在 Kubernetes 中配置了超过 10 个 CronJobs,并且都按预期正常工作。

现在我计划再添加 20 个 CronJobs。所有作业都从外部资源获取数据,对其进行处理并生成某种报告。

我想将CronJobs的调度表达式配置到ConfigMap中。例如,

kind: ConfigMap
apiVersion: v1
metadata:
  name: scheduler-config
  namespace: test
data:
  job1.schedule.expression: */1 * * * *
  job2.schedule.expression: */5 * * * *
  job3.schedule.expression: */30 * * * *
  job4.schedule.expression: 0 1 * * *
  job5.schedule.expression: 0 0 * * THU

如果可能,我想让它更灵活,例如,如果我用新表达式更新 ConfigMap,那么 CronJob 应该用新的计划表达式更新,下次它应该 运行 根据新的表达式值ConfigMap.

正如我在评论中提到的

据我所知ConfigMap用于在容器内设置环境变量或挂载为卷。我不认为你可以使用 configmap 在 cronjob 中设置计划。


作为替代方案,您可以使用 helm cronjobs for that and specify the schedules in values.yaml

看看下面用上面的 helm cronjobs 创建的 cronjobs。

kubectl get cronjob
NAME                     SCHEDULE      SUSPEND   ACTIVE    LAST SCHEDULE   AGE
cold-fly-hello-env-var   * * * * *     False     0         23s             1m
cold-fly-hello-ubuntu    */5 * * * *   False     0         23s             1m
cold-fly-hello-world     * * * * *     False     0         23s             1m

他们的日程安排值 there, there and there