我已经创建了一个elastic-stack
作为具有以下配置的子图表的自定义头盔图表。
# requirements.yaml
dependencies:
- name: elastic-stack
version: 1.5.0
repository: '@stable'
# values.yaml
elastic-stack:
kibana:
# at this level enabled is not recognized (does not work)
# enabled: true
# configs like env, only work at this level
env:
ELASTICSEARCH_URL: http://foo-elasticsearch-client.default.svc.cluster.local:9200
service:
externalPort: 80
# enabled only works at root level
elasticsearch:
enabled: true
kibana:
enabled: true
logstash:
enabled: false
我不明白为什么我必须在enabled
之外定义elasatic-stack:
标签,并在其中定义所有其他配置?
这是正常的掌舵行为还是弹性堆叠图中的某些错误配置?
答案 0 :(得分:2)
Helm conditions在最高父级的值中评估:
条件-条件字段包含一个或多个YAML路径 (以逗号分隔)。如果此路径存在于顶级父项的值中 并解析为布尔值,图表将被启用或禁用 基于该布尔值
从稳定/弹性堆栈中查看requirements.yaml中的条件:
- name: elasticsearch
version: ^1.17.0
repository: https://kubernetes-charts.storage.googleapis.com/
condition: elasticsearch.enabled
- name: kibana
version: ^1.1.0
repository: https://kubernetes-charts.storage.googleapis.com/
condition: kibana.enabled
- name: logstash
version: ^1.2.1
repository: https://kubernetes-charts.storage.googleapis.com/
condition: logstash.enabled
条件路径为elasticsearch.enabled
,kibana.enabled
和logstash.enabled
,因此您需要在父图表值中使用它们。
答案 1 :(得分:1)
父值中的那些属性。yaml用作子图表的切换。
您假设在您的requirements.yaml中使用condition
来控制相关子图的安装或执行。如果未提供,则掌舵者将继续毫无问题地部署子图。
而且,这些值在父级的values.yaml中,因为它们已在父级图表本身中使用,而且除非在全局或子图的name属性键中提供,否则不能在子图中使用(在您的情况下为弹性) -堆栈)。