4

我创建了一个自定义舵图,其中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:和所有其他配置?

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

4

2 回答 2

4

Helm 条件在最高父级的值中进行评估:

条件 - 条件字段包含一个或多个 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.enabled,因此您需要在父图表值中使用它们。kibana.enabledlogstash.enabled

于 2019-03-25T15:30:11.657 回答
1

父 values.yaml 中的这些属性用作子图表的开关。

您应该condition在您的 requirements.yaml 中使用来控制您的依赖子图表的安装或执行。如果没有提供,那么 helm 只会继续部署子图而不会出现问题。

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

于 2019-03-25T17:51:25.710 回答