是否有一种方法可以基于全局values.yaml有条件地安装头盔子图?我将所有内部服务和组件都作为子图表,其中之一是消息队列图表。在开发和测试环境(本地k8s)中,我使用RabbitMQ,而在过渡和产品(AKS)中,我使用Azure Service Bus。基于名称空间/values.yaml,我是否要安装rabbitmq。
P.S-我已经将所有组件创建为子图表,以便它们都成为单个发行版的一部分。
答案 0 :(得分:2)
我遇到了这个错误。
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/*
Heml 3 不喜欢我将本地依赖项放在 charts/
此外,Helm dep up 需要权限才能将本地依赖项从您的子图表目录移动到 tmpcharts/
等。
**
**
我是从@sgandon 那里读到的:
<块引用>os.Stat() 找不到文件夹的原因。这是 因为调用函数 downloadAll 正在更新期间将图表文件夹重命名为 tmpcharts 从而使我们的解压图表在这段时间内无法找到。
注意:
!!在 Helm 3 上,requirements.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。感谢你们,我很高兴部署!
答案 1 :(得分:1)
我找到了答案:
在requirements.yaml中,添加:
dependencies:
- name: api
condition: api.enabled
- name: messagequeue
condition: messagequeue.enabled
并在values.yaml中添加
api:
enabled: true
messagequeue:
enabled: false
现在在安装过程中,将值传递给启用或禁用消息队列,如下所示:
helm install --dry-run --debug website\ --set messagequeue.enabled=true
或
helm install --dry-run --debug website\ --set messagequeue.enabled=false
答案 2 :(得分:0)
我建议将此(丑陋的)解决方法作为从@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不固定,它就不会很漂亮。