kubernetes - 将当前日期传递给 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")
解决方案
您可以通过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
但预先设置动态环境变量。
推荐阅读
- asp.net-core - 自定义授权属性不允许在 asp.net core 3 中授权
- tarantool - 如果我有两个,如何转移特定的辅助密钥?
- macos - 如何在 macOS 上停止\关闭\杀死 tcp 连接
- python - Pandas 结合了两种不同长度的时间序列数据框
- nopcommerce - 我想允许正斜杠进入 SENAME
- ios - firebase 检索用户 ID 以在 url API 调用中传递它
- r - Bookdown 演示文稿中类似 Beamer 的叠加层
- ubuntu-20.04 - 在内核 5.4.0-48-generic 上启动 ubuntu 20.04 时出现问题
- c - char *str 声明后不定义,它分配多少内存?
- flutter - FAILURE:构建失败并出现异常。颤振.gradle'行:904