【问题标题】:Disabling subcharts in custom helm chart在自定义 helm 图表中禁用子图表
【发布时间】:2019-03-25 12:46:19
【问题描述】:

我创建了一个自定义 helm 图表,其中 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

我不明白为什么我必须在elasatic-stack: 之外定义enabled 标记以及内部的所有其他配置?

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

【问题讨论】:

    标签: kubernetes elastic-stack kubernetes-helm kubeconfig


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-16
        • 2019-11-23
        • 2020-03-28
        • 1970-01-01
        • 2021-03-26
        • 2018-05-25
        相关资源
        最近更新 更多