Руль условно установить подшарт
Есть ли способ условно установить вспомогательную подкарту на основе глобальных значений. Yaml? Все мои внутренние сервисы и компоненты представлены в виде подкарт, и одним из них является диаграмма очереди сообщений. В моей среде разработки и тестирования (local k8s) я использую RabbitMQ, а в промежуточной и Prod (AKS) я использую служебную шину Azure. Основываясь на пространстве имен /values.yaml, я хочу установить rabbitmq или нет.
PS - Я создал все компоненты в виде подчарта, чтобы они были частью одного релиза.
4 ответа
Я узнал ответ:
В требованиях. 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
Я попробовал это сейчас, в 2022 году, и сделал следующее:
в диаграмме.yaml:
dependencies:
- name: db
version: 0.1.0
condition: db.enabled
- name: mailer
version: 0.1.0
condition: mailer.enabled
Затем я добавил в values.yaml основной диаграммы:
db:
enabled: true
...
mailer:
enabled: true
....
и добавил мои поддиаграммы db и mailer в каталог диаграмм. Работает как положено.
Используется Helm версии v3.4.1.
У меня была эта ошибка.
диаграмма руля с помощью requirements.yaml, не нашел локальных диаграмм
.
Мое решение было:
- Переименовать (каталог) в
subcharts/
- А также
chmod 755 subcharts/*
Heml 3 не понравилось, когда я поместил свои локальные зависимости в
charts/
Также Helm dep up нуждается в разрешениях для перемещения локальных зависимостей из каталога ваших подграфов в
tmpcharts/
и так далее.
**
Это не моя находка.
**
Я прочитал это из @sgandon:
Задокументированная ошибка "helm dep build" завершается ошибкой, если файл requirements.yaml содержит локальные зависимости и удаленный #3742№ 3742 .
комментарий .
причина, по которой os.Stat() не может найти папку. Это связано с тем, что вызывающая функция downloadAll переименовывает папку диаграмм в tmpcharts во время обновления, что делает нашу распакованную диаграмму недоступной для этого времени.
Примечание:
!! В Helm 3 требования.yaml устарели. !!
Вы добавляете зависимости в родительский / основной 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
PS - Спасибо @Narayana и @sgandon. Спасибо вам, ребята, я рад развертыванию!
Я бы предложил этот (уродливый) обходной путь в качестве ответа, заимствованного у @sgandon: https://github.com/helm/helm/issues/3742
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
Затем вы можете использовать практические зависимости диаграмм для управления подкартами в качестве зависимостей с помощью helm dep update
а также helm dep build
,
Это не красиво, пока эта ошибка не исправлена.