【问题标题】:helm deploy with no objects没有对象的掌舵部署
【发布时间】:2020-03-16 04:02:03
【问题描述】:

我正在用 helm 做一个非常简单的图表。 它包括部署一个只有一个对象(“/templates/pod.yaml”)的图表,如果文件 Values.yaml 的参数为真,则必须部署该对象。 举一个我的例子,这就是我所拥有的:

/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 值的 shoudBeDeployed 时,helm 会正确安装它。

我的问题是当 shoudBeDeployed 是 false 时,helm 没有部署任何东西(如我所料),但 helm 显示以下消息:

Error: release CHART_NAME failed: no objects visited

如果我执行 helm ls,我会发现 CHART_NAME 与 STATUS FAILED 一起部署。

我的问题是,是否有办法不将其作为失败的 helm 部署。所以我希望在使用命令helm ls时看不到它

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

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    @pcampana 我认为如果没有要部署的东西,就没有办法停止 helm 部署。但这里有一个技巧,你可以用它来删除掌舵图,如果它是 失败。

    helm install --name temp demo --atomic

    其中 demo 是 helm chart 目录, temp 是 release name 。 发布名称是必需的。

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

    错误:释放临时失败:没有访问对象

    你可以使用上面的命令来部署helm chart。

    我认为这可能对您有用。

    【讨论】:

    • 我不知道 --atomic 的存在。谢谢!
    猜你喜欢
    • 2020-04-02
    • 2019-03-15
    • 1970-01-01
    • 2017-04-08
    • 2018-12-11
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2021-03-11
    相关资源
    最近更新 更多