首页 > 解决方案 > 将当前日期传递给 Kubernetes cronjob

问题描述

我有一个接收 env var name 的 docker 映像SINCE_DATE
我创建了一个 cronjob 来运行该容器,并且我想将当前日期传递给它。

我该怎么做?

试试这个,我得到了文字字符串date -d "yesterday 23:59"

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: my-cron
spec:
  schedule: "* * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: Never
          containers:
          - name: my-cron
            image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
            imagePullPolicy: {{ .Values.image.pullPolicy }}
            env:
            - name: SINCE_DATE
              value: $(date -d "yesterday 23:59")

标签: kubernetescron

解决方案


您可以通过overwriting container Entrypoint命令和 set来实现它environment variable。在您的情况下,它看起来像:

          containers:
          - name: my-cron
            image: nginx
            #imagePullPolicy: {{ .Values.image.pullPolicy }}
            command:
            - bash
            - -c
            - |
                  export SINCE_DATE=`date -d "yesterday 23:59"`
                  exec /docker-entrypoint.sh           

笔记:

Nginxdocker-entrypoint.sh位于/如果你的图片有不同的路径,你应该使用它,例如exec /usr/local/bin/docker-entrypoint.sh

在这个 Stack question中可以找到非常相似的用例

这个解决方案是什么?

它将overwrite在容器中使用相同的脚本设置默认脚本,ENTRYPOINT但预先设置动态环境变量。


推荐阅读