Argo Workflow中creationTimestamp参数为空的原因排查
问题原因与解决方案
你的stage参数为空是因为时间戳格式化的语法错误,Argo Workflow遵循Go语言的时间格式化规则,不能直接用<%Y-%m-%d %H.%M.%S>这类格式,且你当前的变量引用语法也不符合Argo的要求。
错误点解析
- 你写的
{{workflow.creationTimestamp.<%Y-%m-%d %H.%M.%S>}}不是Argo支持的语法,Argo需要用format函数处理时间格式化,且格式字符串必须对应Go的时间参考模板(2006-01-02 15.04.05,这个模板对应年-月-日 时.分.秒的结构)。 - 因为参数值的语法错误,
stage参数没有被正确赋值,所以模板里引用{{workflow.parameters.stage}}时自然为空。
修正后的Workflow代码
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: cdr-extraction- spec: arguments: parameters: - name: stage # 使用format函数,基于Go时间参考模板格式化创建时间 value: {{format "2006-01-02 15.04.05" workflow.creationTimestamp}} entrypoint: main parallelism: 2500 templates: - name: main steps: - - name: get-messy-output template: get-messy-output-template - - name: get-messy-output2 template: get-messy-output-template - name: get-messy-output-template script: image: alpine command: - sh source: | echo 1234 echo abc{{workflow.parameters.stage}} echo 5678 sleep 3
关键说明
- Go的时间格式化逻辑是用**固定参考时间
Mon Jan 2 15:04:05 MST 2006**作为模板,所以要得到你想要的年-月-日 时.分.秒格式,必须用2006-01-02 15.04.05作为格式字符串。 - 修正参数值的语法后,
stage参数会被正确赋值为Workflow创建时的时间戳,模板里的引用就能正常显示预期内容了。
内容的提问来源于stack exchange,提问作者olli
相关产品推荐
相关产品推荐

