【问题标题】:Is it possible to disable chart located in charts folder in kubernetes?是否可以禁用位于 kubernetes 的图表文件夹中的图表?
【发布时间】:2018-05-19 03:58:06
【问题描述】:

我在charts/ 目录中有一个子图表。我想在某些部署中禁用它。

有可能吗?目前我看到了向所有模板添加条件的唯一方法,如下所示:

deployment.yaml

{{- if .Values.isDev }}
deployment code
{{- end }}

service.yaml

{{- if .Values.isDev }}
service code
{{- end }}

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    另外,对于当前版本的 Helm(此时为 2.12),还可以编写一个requirements.yaml,其中不仅可以指定 Helm 下载的远程图表,还可以指定 charts 文件夹中的图表.在这个requirements.yaml 中,可以为每个依赖项指定一个condition 字段。此字段是父值的路径。

    例如,给定这个requirements.yaml:

    dependencies:
      - name: one-dep
        version: 0.1.0
        condition: one-dep.enabled
      - name: another-dep
        version: 0.1.0
        condition: another-dep.enabled
    

    您的values.yaml 可能有:

    one-dep:
      enabled: true
    
    another-dep:
      enabled: false
    

    这将导致 Helm 仅包含 one-dep 图表。 值得注意的是,如果condition中指定的路径不存在,则默认为true。

    Here's the link to the doc

    【讨论】:

    • 但请注意,如果您的 requirements.yaml 也指远程图表,则本地依赖项中缺少字段 repository 将导致您在执行 helm dependency update 时出现问题,请参阅 this issue。解决方法here。
    • 无论如何,这条评论在恕我直言,比公认的答案更具侵略性。因此,如果您使用当前版本,我推荐这个
    • 完全同意,我很高兴阅读了更多的 cmets。不要做批准的答案,这不好。
    【解决方案2】:

    作为一般经验法则,我总是有

    {{- if .Values.enabled }}
    ...
    {{- end }}
    

    在每个子图中的每个文件中。根据情况,默认值将是true 用于常规组件或false 用于开发相关,或者如果我想以完全选择性的方式启用这些,则简单地false 用于所有内容。这种方法的典型部署值如下所示:

    api:
      enabled: true
      database:
        host: mysql-dev
    
    mysql:
      enabled: false
    
    mysql-dev:
      enabled: true
    

    【讨论】:

      【解决方案3】:

      在 Helm 3 之前,无法在 requirements.yaml 中禁用“本地”解压缩图表,存储库字段始终是必需的,因此无法一直禁用解压缩图表。这条评论中也提到了这一点Is it possible to disable chart located in charts folder in kubernetes?

      在 Helm 3 中,这个问题得到了解决,感谢 https://github.com/helm/helm/issues/3742#issuecomment-574056164
      我的 Chart.yaml 看起来像这样:

      dependencies:
        - name: mongodb-replicaset
          version: ^3.15.1
          repository: https://kubernetes-charts.storage.googleapis.com
          condition: mongodb.enabled
        - name: elasticmq
          version: 0.1.0
          condition: elasticmq.enabled
        - name: jhipster-registry
          version: 0.1.0
          condition: jhipster-registry.enabled
      

      我的掌舵版本是 3.2.1
      现在它只显示这样的警告,但条件仍然有效:

      Update Complete. ⎈Happy Helming!⎈
      Saving 3 charts
      Downloading mongodb-replicaset from repo https://kubernetes-charts.storage.googleapis.com
      Dependency elasticmq did not declare a repository. Assuming it exists in the charts directory
      Dependency jhipster-registry did not declare a repository. Assuming it exists in the charts directory
      Deleting outdated charts
      

      所以内置图表禁用不会再破坏任何东西并且可以使用。

      【讨论】:

        猜你喜欢
        • 2018-07-19
        • 1970-01-01
        • 2020-07-20
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多