gpt4 book ai didi

kubernetes-helm - 如何在 Helm 中使用 Argo Workflows 模板?

转载 作者:行者123 更新时间:2023-12-05 00:45:10 38 4
gpt4 key购买 nike

是否可以使用 Helm 部署 Argo 工作流程?当我执行 helm install

时出现如下错误

Error: UPGRADE FAILED: parse error at(workflows/templates/my_dag.yaml:47): function "workflow" not defined

yaml 本身具有带有 {{..}} 的 Argo 和 Helm 插值。我明白为什么会失败。有没有办法解决这个问题?

我看过 this但它看起来不像我想做的事情,因为它会改变语法。

最佳答案

这是可能的。我一直在一个定期部署 Helm 模板化工作流模板的团队中。

有两种方法可以解决 Helm/Argo 模板标签冲突。 (如您所知,问题在于 Helm 的 Go 模板语言和 Argo 的模板语言都使用 {{}} 来表示模板区域。)

选项 1:

第一种方法是小心地嵌套标签。例如,如果我想使用 {{steps.hello-world.result}} 作为 Argo-template,我可以将其写为 {{`{{steps.hello-world .result}}`}}。外部 {{ 告诉 Helm 开始解释模板化代码。反引号告诉 Helm 从字面上解释反引号分隔的内容。最后,内部的 {{ 作为工作流的纯文本部分安装在集群中,并最终被 Argo 解释为模板。

这里是 arguments-parameters example 的修改版本修改为与 Helm 一起部署。

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: arguments-parameters-
spec:
entrypoint: whalesay
arguments:
parameters:
- name: message
value: hello world
templates:
- name: whalesay
inputs:
parameters:
- name: message
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["{{`{{inputs.parameters.message}}`}}"]

选项 2:

您链接的博客文章中描述了第二种解决方法。这种方法确实改变了语法。第一种方法使用看起来很有趣的语法,但从技术上讲,它仍然只是 Helm 和 Argo 的默认语法。

如果 {{`{{yikes}}`}} 解决方法不能解决您的错误消息,请发布整个工作流程(或编辑/简化版本),我很乐意看看。

相关:

以上内容适用于 Argo-in-Helm (Jinja2-in-Go) 模板。如果您需要 somethingelse-in-Argo (somethingelse-in-Jinja2) 模板,其中 somethingelse 也使用 {{,请查看此答案:How to escape "{{" and "}}" in argo workflow

关于kubernetes-helm - 如何在 Helm 中使用 Argo Workflows 模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64802290/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com