我正在使用Kubernetes Helm requirements.yaml文件来添加依赖项。基于values.yaml条件,它将创建依赖项pod。
这里我想在apache.enabled == false
时执行所需的依赖项values.yaml
external_apache:
enabled: false
dependencies:
- name:
version:
repository:
condition: external_apache.enabled
如何添加错误条件?
我已经尝试过以下条件,但它无效:
condition: external_apache.enabled == false
答案 0 :(得分:1)
您使用的是什么版本的Helm?
GitHub上的Kubernetes存储库中存在类似的问题:
Unable to use condition in 'requirements.yaml' #2111
解决方案是将Helm升级到v2.2.0 +。在该版本中,添加了条件支持。
在Helm documentation或repository中,可以解释条件的工作原理: (我添加了一些评论以使阅读更容易)
条件 - 条件字段包含一个或多个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 and Condition Resolution:
中描述您还可以在命令行中设置标记和条件:
helm install --set tags.front-end=true --set subchart2.enabled=false
答案 1 :(得分:0)
根据documentation和@VAS的回答,您的问题的答案是无法在Requirements.yaml中使用否定条件。
答案 2 :(得分:0)
头盔版本v2.2.2
有效,而v2.10.0
无效。
答案 3 :(得分:0)
虽然有点晚,但用户可能会发现它有帮助。我没有从命令行为父图表运行 helm install,但是,我有一个用于运行它的 shell 脚本和另一个用于环境属性的 shell 脚本。
我已在环境脚本中将条件布尔值设置为 true 或 false,并使用其他脚本中的值为父 helm 图表运行 helm,我已在父值中设置了单个子图表 enabled 属性.yaml。
<块引用>此外,在 3.0.0+ 版本中,之前完成的配置 requirements.yaml 现在在父的 chart.yaml 本身中完成。