Руль условно установить подшарт

Есть ли способ условно установить вспомогательную подкарту на основе глобальных значений. 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,

Это не красиво, пока эта ошибка не исправлена.

Другие вопросы по тегам