kubernetes-helm - Helm 根据条件下载依赖项
问题描述
我正在使用 helm 图表来部署大约 15 个微服务。有一个父 helm 图表,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
所有列为依赖项的图表时,都会下载。在某些情况下,很少有服务正在开发中,并且不需要在生产中部署。
我们针对 prod 和 non-prod 环境有不同的 artifactory,并且禁用的服务不在 prod artifactory 中。因此,它给出了一个错误,说 helm chart 丢失。我知道条件标志不会安装依赖项,但我怎样才能阻止它下载依赖项?
解决方案
可能来得有点晚,但我最近整理了一个类似的问题,我认为它可能会帮助其他人分享。在 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 文档
请注意,如果嵌套图表的深度超过 2 层,helm2 可能会出现异常,因此我建议您查看 Helm3。
最后请注意,在我的情况下(因为我在部署 Helm 图表时走了一个小弯路,所以在渲染 helm 图表时会检查条件,而不是在运行 helm 依赖项更新时
推荐阅读
- ruby - Ruby:(如果可能)如何在程序执行以构建菜单方法时在 while 循环中构建 case 语句?
- php - 合并具有相同键名的多维数组
- javascript - AJAX 使用 POST 映射将所有空数据发送到 Spring 控制器?
- ios - `dd of=/dev/rdisk4` 在越狱的 iOS 上给出 `Operation not allowed`
- batch-file - 如果我运行我的 .bat(打开 FF),我可以看到窗口。从任务计划程序,它在 FF 中打开 url,但它不可见。我怎样才能明显地打开它?
- java - Spring Cloud Gateway 不适用于 DiscoveryClientRouteDefinitionLocator
- serialization - Flatbuffer 线尺寸大于预期
- javascript - 日期字段的设置值不粘
- r - 为什么我无法安装 kohonen 包 R
- c++ - 枚举属性未被识别为