代码之家  ›  专栏  ›  技术社区  ›  Narayana

舵有条件地安装副舵

  •  0
  • Narayana  · 技术社区  · 6 年前

    是否有一种方法可以基于全局值有条件地安装helm subchart.yaml?我将所有的内部服务和组件都作为子图表,其中一个是messagequeue图表。在我的开发和测试环境(本地k8s)中,我使用RabbitMQ,在staging和Prod(AKS)中,我使用Azure服务总线。基于namespace/values.yaml,我想安装或不安装rabbitmq。

    另外,我已经将所有组件创建为子组件,以便它们都是单个版本的一部分。

    1 回复  |  直到 6 年前
        1
  •  34
  •   Narayana    3 年前

    更新: helm v2->v3 changes . 这将是:

    apiVersion: v2
    name: myapplication
    description: A Helm chart for Kubernetes
    type: application
    version: 0.1.0
    appVersion: 1.0
    
    dependencies:
      - name: apidocs
        condition: apidocs.enabled
    

    我找到了答案:

    在requirements.yaml中,添加:

    dependencies:
    - name: api
      condition: api.enabled
    - name: messagequeue
      condition: messagequeue.enabled
    

    在values.yaml中,添加

    api:
      enabled: true    
    messagequeue:
      enabled: false
    

    现在,在安装过程中,将值传递给enabled或disable messagequeue,如下所示:

    helm install --dry-run --debug website\ --set messagequeue.enabled=true
    

    helm install --dry-run --debug website\ --set messagequeue.enabled=false
    
        2
  •  2
  •   Raposo    4 年前

    使用Helm v3.4.1版。

    helm chart with requirements.yaml, did not find local charts

    "helm dep build" fails if requirements.yaml contains local dependencies and remote one #3742 .

    我的解决办法是:

    • charts/ (目录)至 subcharts/
    • chmod 755 subcharts/*

    Heml3不喜欢我将本地依赖项放在 图表/
    此外,Helm dep up需要权限将本地依赖项从subcharts目录移动到 tmpcharts/ 等等

    **

    这不是我的发现。

    **

    我从@sgandon那里读到:

    #3742 .
    comment .

    os.Stat()找不到文件夹的原因。这是 因为调用函数 downloadAll 正在更新期间将图表文件夹重命名为tmpcharts 因此,在这段时间内,我们的未打包图表无法找到。

    注:

    !! 在舵手3上。yaml已被弃用!!

    您可以在Parent/Main Charts.yaml中添加依赖项。

    dependencies:
      - name: chart-you-want-to-deploy-1
        repository: file://subcharts/chart-you-want-to-deploy-1
        version: 0.0.1
        condition: chart-you-want-to-deploy-1.enabled
    
      - name: chart-you-want-to-deploy-2
        repository: file://subcharts/chart-you-want-to-deploy-2
        version: 0.0.1
        condition: chart-you-want-to-deploy-2e.enabled
    

    在Parent/Main Values.yaml中将我的变量添加到我的全局变量

    globals:
      chart-you-want-to-deploy-1:
        enabled: true
      chart-you-want-to-deploy-2:
        enabled: false
    

    不要忘记将标志添加到命令中。
    在我的例子中,我使用的是CI/CD工具(Gitlab)

    script:
        - >
          helm dep up Main-Chart-Name && \
           helm upgrade --install \
           --set chart-you-want-to-deploy-1.enabled=false \
           --set chart-you-want-to-deploy-2.enabled=true \
           RELEASE_NAME Main-Chart-Name
    

    我的树

    Main-Chart-Name
    ├── Chart.yaml
    ├── subcharts
    │   ├── chart-you-want-to-deploy-1
    │   │   ├── Chart.yaml
    │   │   ├── charts
    │   │   ├── templates
    │   │   │   └── chart-you-want-to-deploy-1.yaml
    │   │   └── values.yaml
    │   └── chart-you-want-to-deploy-2
    │       ├── Chart.yaml
    │       ├── charts
    │       ├── templates
    │       │   └── chart-you-want-to-deploy-2.yaml
    │       └── values.yaml
    ├── templates
    │   ├── helpers.tpl
    │   ├── my.yaml
    │   ├── main.yaml
    │   └── templates.yaml
    └── values.yaml
    

    附言-谢谢你@Narayana和@sgandon。谢谢你们,我很高兴!

        3
  •  0
  •   shawnzhu    5 年前

    我会提出这个(难看的)解决办法,作为借用的答案 @sgandon : https://github.com/helm/helm/issues/3742#issuecomment-383095917

    dependencies: - name: mobi-postgresql version: 1.0.1 repository: "@mobi" alias: postgresql - name: oraclepdb version: 0.0.1 repository: "file://subcharts/oraclepdb" condition: oraclepdb.enabled

    然后你就可以练习了 Chart dependencies 通过将子图表作为依赖项进行管理 helm dep update helm dep build

    它没有你想象的那么美 this bug 这是不固定的。