问题描述
在使用 ArgoCD + Argo Workflows 时,遇到了一个问题。在他的 manifests 文件中,他尝试转义双括号,因为他使用了一些 Helm 应用。如果他手动编辑 Argo workflow 文件并使用下面的表达式,它可以正常工作。但是,如果他推送任何更改,他的应用程序就会降级,并出现以下错误:cannot validate Workflow: templates.main.steps failed to resolve {{steps.scheduler.outputs.result}}
。以下是他的配置示例:
templates:
- name: main
steps:
- - name: scheduler
template: scheduler
- name: step-1
templateRef:
name: step-1
template: my-templates
when: '"{{`{{steps.scheduler.outputs.result}}`}}" =~ example'
用户想知道是否有什么办法可以解决这个问题。他认为这可能与 Argocd 相关,因为错误只出现在那里,而且他可以手动从 Argo 运行工作流。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
尝试使用以下方式转义括号:
{{ "'{{steps.scheduler.outputs.result}} =~ example'" }}
这种方式可以告诉 Go 模板将其视为字面量。单引号用于在 YAML 中将其保持为字符串值,但这是可选的。
方案2
如果方案1无效,可以尝试使用其他方式来转义括号。例如,使用反斜杠 \
来转义括号:
when: '{{steps.scheduler.outputs.result}} \=\~ example'
这将告诉模板引擎将 =~
视为字符串而不是操作符。
请注意,不同的版本和工具可能对括号的转义方式有所不同。如果以上解决方案不起作用,请查阅相关文档或社区支持以获取更多帮助。
以上是解决这个问题的两种可能方案。请根据您的具体情况选择适合您的方法。
正文完