我无法定期将Shell脚本的结果值设置为Kubernetes Cronjob的参数。
有什么好方法可以设置每天刷新的值?
我使用Kubernetes cronjob来执行一些日常任务。
使用cronjob,将启动Rust应用程序并执行批处理。
作为Rust应用程序的参数之一,我将目标日期(yyyy-MM-dd格式的字符串)作为命令行参数传递。
因此,我尝试按如下方式将日期值传递到cronjob的定义yaml文件中。
然后尝试使用以下脚本设置$ {TARGET_DATE}的值。 在sample.sh中,将导出TARGET_DATE的值。
cat sample.yml | envsubst | kubectl apply -f sample.sh
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: some-batch
namespace: some-namespace
spec:
schedule: "00 1 * * 1-5"
jobTemplate:
spec:
template:
spec:
containers:
- name: some-container
image: sample/some-image
command: ["./run"]
args: ["${TARGET_DATE}"]
restartPolicy: Never
我希望这会每天创建TARGET_DATE值,但是它与我第一次设置的日期相比不会改变。
是否有什么好方法可以将shell脚本的结果定期设置为cronjob yaml的args?
谢谢。
答案 0 :(得分:1)
您可以将初始化容器用于该exit code
想法如下:运行脚本,以在init容器中设置此值,然后将此值写入共享的emptyDir卷中。然后从主容器中读取该值。这是示例:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: some-batch
namespace: some-namespace
spec:
schedule: "00 1 * * 1-5"
jobTemplate:
spec:
template:
spec:
initContainers:
- name: init-script
image: my-init-image
volumeMounts:
- name: date
mountPath: /date
command:
- sh
- -c
- "/my-script > /date/target-date.txt"
containers:
- name: some-container
image: sample/some-image
command: ["./run"]
args: ["${TARGET_DATE}"] # adjust this part to read from file
volumeMounts:
- name: date
mountPath: /date
restartPolicy: Never
volumes:
- name: date
emptyDir: {}