基于条件的Helm下载依赖项

时间:2019-02-08 03:03:04

标签: kubernetes-helm

我正在使用Helm Chart部署约15种微服务。有一个带有requirements.yaml的父头盔图表,其中所有必需的微服务都列为依赖项。

示例requirements.yaml文件:

dependencies:
  - name: service1
    repository: "@stable"
    version: <version>
  - name: service2
    repository: "@stable"
    version: <version>
  - name: service3
    repository: "@stable"
    version: <version>
  - name: service4
    repository: "@stable"
    version: <version>
    condition: false

当我运行helm dependency update时,将下载所有列为依赖项的图表。在某些情况下,正在开发的服务很少,不需要在生产中部署。

对于产品和非产品环境,我们具有不同的工件,并且禁用的服务不在产品工件中。因此,它给出了一个错误,称头盔图表丢失。我知道条件标志不会安装依赖项,但是如何阻止它下载依赖项?

1 个答案:

答案 0 :(得分:0)

可能来的有点晚,不过最近整理了一个类似的问题,觉得可以帮到大家分享一下。您可以在 Chart.yaml 中声明依赖项时使用条件键:

dependencies:
- condition: gitea.cache.builtIn.enabled
  name: memcached
  repository: https://charts.bitnami.com/bitnami
  version: 4.2.20

values.yaml 中的位如下:

[...]
gitea:
  cache:
    builtIn:
      enabled: true
[...]

这个例子是从奇妙的 gitea helm chart repo 中提取的,应该是不言自明的。不过,你可以看看Helm documentation

请注意,如果嵌套图表的深度超过 2 级,helm2 可能会出现异常,因此我建议您查看 Helm3。

最后请注意,在我的情况下(因为我在部署 Helm 图表时走了一小段路,所以在渲染 helm 图表时会检查条件,而不是在运行 helm 依赖项更新时发生