在自定义头盔图表中禁用子图表

时间:2019-03-25 12:46:20

标签: kubernetes elastic-stack kubernetes-helm kubeconfig

我已经创建了一个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:标签,并在其中定义所有其他配置?

这是正常的掌舵行为还是弹性堆叠图中的某些错误配置?

2 个答案:

答案 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.enabledkibana.enabledlogstash.enabled,因此您需要在父图表值中使用它们。

答案 1 :(得分:1)

父值中的那些属性。yaml用作子图表的切换。

您假设在您的requirements.yaml中使用condition来控制相关子图的安装或执行。如果未提供,则掌舵者将继续毫无问题地部署子图。

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