使用Helm进行无对象部署

4

我正在使用Helm创建一个非常简单的图表。 它只包含一个对象("/templates/pod.yaml"),只有在Values.yaml文件中的一个参数为true时才需要部署它。 以下是我的示例:

/templates/pod.yaml

{{- if eq .Values.shoudBeDeployed true }}
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
{{- end}}

Values.yaml

shoudBeDeployed: true

所以,当我使用 true 值的 shouldBeDeployed 时,helm 可以正确地安装它。

我的问题在于,当 shoudBeDeployed 是 false 时,helm 不会部署任何东西(正如我所预期的那样),但 helm 显示以下消息:

Error: release CHART_NAME failed: no objects visited

如果我执行 helm ls,我将看到 CHART_NAME 的状态为 STATUS FAILED

我的问题是是否有一种方法可以不将其作为失败的 helm 部署。因此,我希望在使用命令 helm ls 时不要看到它。

我知道我可以将 shoudBeDeployed 变量的逻辑移到图表之外,然后根据其值部署或不部署图表,但我想知道是否有一种仅使用 helm 的解决方案。

1个回答

4

@pcampana 我认为如果没有要部署的内容,则无法停止helm部署。但以下是一个技巧,可以在helm图表失败时删除它。

helm install --name temp demo --atomic

其中demo是helm图表目录,temp是发布名称。发布名称对此操作是必需的。

一种情况是当您看到错误:

Error: release temp failed: no objects visited

则可以使用上述命令部署helm图表。

我认为这可能对你有用。


我不知道--atomic的存在。谢谢! - pcampana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接