将当前日期传递给 kubernetes cronjob

ita*_*ied 5 cron kubernetes

我有一个接收 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")
Run Code Online (Sandbox Code Playgroud)

Pjo*_*erS 0

您可以通过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           
Run Code Online (Sandbox Code Playgroud)

笔记:

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

可以在这个堆栈问题中找到非常相似的用例

这个解决方案有什么作用?

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