禁用自定义helm图表中的子图表

问题描述 投票:2回答:2

我创建了一个自定义的头盔图表,其中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:标签?

这是弹性叠加图表中的正常舵行为还是一些错误配置?

kubernetes elastic-stack kubernetes-helm kubeconfig
2个回答
2
投票

Helm conditions在最高父母的价值观中评估:

条件 - 条件字段包含一个或多个YAML路径(以逗号分隔)。如果此路径存在于顶级父级的值中并解析为布尔值,则将根据该布尔值启用或禁用该图表

从stable / elastic-stack看一下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.enabledkibana.enabledlogstash.enabled,因此您需要在父图表值中使用它们。


1
投票

父值中的那些属性.yaml用作子图的开关。

您可以在requirements.yaml中使用condition来控制从属子图表的安装或执行。如果没有提供,那么helm只是继续部署没有和问题的子图。

而且,这些值在父级的values.yaml中,因为它们在父图表本身中使用,而且除非作为全局或在子图的名称属性键(在您的情况下是弹性堆栈)中提供,否则不能在子图中使用。

© www.soinside.com 2019 - 2024. All rights reserved.