ArgoCD中如何正确转义括号

82次阅读
没有评论

问题描述

在使用 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'

这将告诉模板引擎将 =~ 视为字符串而不是操作符。

请注意,不同的版本和工具可能对括号的转义方式有所不同。如果以上解决方案不起作用,请查阅相关文档或社区支持以获取更多帮助。

以上是解决这个问题的两种可能方案。请根据您的具体情况选择适合您的方法。

正文完