kubernetes - Kubernetes Helm 图表 requirements.yaml 文件依赖项 false 条件
问题描述
我正在使用 Kubernetes Helm requirements.yaml 文件来添加依赖项。根据 values.yaml 条件,它将创建依赖项 pod。
在这里,我想在 apache.enabled == false 时执行所需的依赖项
values.yaml
external_apache:
enabled: false
文件需求.yaml
dependencies:
- name:
version:
repository:
condition: external_apache.enabled
如何添加虚假条件?
我尝试了以下条件,但它不起作用:
condition: external_apache.enabled == false
解决方案
你使用的是什么版本的 Helm?
GitHub 上的 Kubernetes 存储库中也有类似的问题:
无法在“requirements.yaml”中使用条件 #2111
解决方案是将 Helm 升级到 v2.2.0+。在该版本中,添加了条件支持。
Chart apiVersion 因以下规范更改而升级为“v2”:
- 动态链接的图表依赖项移至Chart.yaml(requirements.yaml 已删除,需求 --> 依赖项)
- 现在可以将库图表(帮助/常用图表)添加为动态链接的图表依赖项
- 图表具有类型元数据字段,用于将图表定义为应用程序或库图表。默认情况下它是应用程序,这意味着它是可渲染和可安装的
- Helm 2 图表 (apiVersion=v1) 仍然可以安装
在Helm 文档或存储库中,有一个关于条件如何工作的解释:(我添加了一些注释以使阅读更容易)
条件- 条件字段包含一个或多个 YAML 路径(以逗号分隔)。
标签- 标签字段是与此图表关联的标签的 YAML 列表。
# parentchart/requirements.yaml
dependencies:
- name: subchart1
repository: http://localhost:10191
version: 0.1.0
condition: subchart1.enabled, global.subchart1.enabled
tags:
- front-end #(chart should be disabled because the tags.front-end is “false” in values.yaml file , but ...)
- subchart1 #(subchart1.enabled condition path is present in values.yaml file and it has "true" value...)
#(this condition, so it overrides tag front-end and this chart will be enabled)
- name: subchart2
repository: http://localhost:10191
version: 0.1.0
condition: subchart2.enabled,global.subchart2.enabled
#(as soon as no one from these paths is exists in values.yaml this condition has ho effect)
tags:
- back-end #(chart should be enabled because the tags.back-end is “true” in values.yaml file)
- subchart2 #(and there is no condition path found in values.yaml to override it)
如果此条件路径存在于顶级父级values
并解析为布尔值,则图表将根据该布尔值启用或禁用。仅评估列表中找到的第一个有效路径,如果不存在路径,则条件无效。
在顶级父级的值中,所有带有标签的图表都可以通过指定标签和布尔值来启用或禁用。
# parentchart/values.yaml
subchart1:
enabled: true #(this could be found from requirements as subchart1.enabled and override tags in this case)
tags:
front-end: false #(this disables charts with tag front-end)
back-end: true #(this enables charts with tag back-end)
标签和条件解析中描述了条件和标签的逻辑和顺序:
- 条件(在值中设置时)总是覆盖标签。存在的第一个条件路径获胜,该图表的后续条件路径将被忽略。
- 标签被评估为“如果图表的任何标签为真,则启用图表”。
- 标签和条件值必须设置在最高父级的值中。
- tags: key in values 必须是顶级键。全局变量和嵌套标签:当前不支持表格。
您还可以在命令行中设置标签和条件:
helm install --set tags.front-end=true --set subchart2.enabled=false
推荐阅读
- javascript - 通过 jquery 或 js 更改单选按钮的背景颜色
- android - 按照简单步骤运行 react-native 应用程序后,“无法解析模块 warnOnce”
- java - 在 Android 10 (Q) 中使用 SAF File Picker 将文件从 Downloads 复制到本地应用文件夹
- mysql - 如何使用 Node JS 上的一对多关系表从 mysql 查询 js 创建 json 结果?
- swift - Swift:是否可以键入擦除返回类型以在集合中使用
- javascript - React JS Firebase:调用函数刷新数据时的奇怪行为
- amazon-qldb - 在 QLDB 中查找已删除数据的历史记录
- python - 如何在列操作中找到字符串模式?
- php - 未定义变量:提交表单时的 conn
- r - 在平衡数据框中创建一个变量,该变量是另一列的转置