Helm переустановите ресурсы, которые уже существуют - PullRequest
0 голосов
/ 13 июля 2020

Как я могу выполнить команду «helm install» и переустановить ресурсы, которые я определил в «шаблонах»? У меня уже есть некоторые настраиваемые ресурсы, поэтому я хочу их переустановить. Это можно сделать с помощью параметра в команде helm?

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Думаю, ваш главный вопрос:

У меня уже есть некоторые настраиваемые ресурсы, поэтому я хочу их переустановить.

Что означает УДАЛИТЬ затем СОЗДАТЬ снова.

Короткий ответ

Нет .. но это можно сделать с помощью обходного пути

Подробный ответ

Helm управляет ВЫПУСКОМ манифестов Kubernetes:

  • создание helm install
  • обновление helm upgrade
  • удаление helm delete

Однако вы можете воссоздать ресурсы одним из следующих способов:

1. Дважды последовательное обновление

Если ваша диаграмма предназначена для включения / отключения установки ресурсов с значениями (. Например: .Values.customResources.enabled), вы можете сделать следующее:

helm -n namespace upgrade <helm-release> <chart> --set customResources.enabled=false

# Then another Run
helm -n namespace upgrade <helm-release> <chart> --set customResources.enabled=true

Итак, если вы строите диаграмму, ваша задача - сделать дизайн функциональным.

2. Использование перехватчиков helmfile

Helmfile - это Helm of Helm.

Он управляет выпусками вашего руля в одном файле с именем helmfile.yaml.

Не только это, но он также может вызывать некоторые ЛОКАЛЬНЫЕ команды до / или / после установки / или / обновления выпуска Helm. Этот вызов, который происходит до или после, называется hook .

В вашем случае вам понадобится presyn c hook.

If мы организуем ваш выпуск Helm как определение Helmfile, это должно быть:

releases:
- name: <helm-release>
  chart: <chart>
  namespace: <namespace>
  hooks:
  - events: ["presync"]
    showlogs: true
    command: kubectl
    args: [ "-n", "{{`{{ .Release.Namespace }}`}}", "delete", "crd", "my-custom-resources" ]

Теперь вам просто нужно запустить helmfile apply

Я знаю, что CRD не имеет пространства имен, но я помещаю пространство имен в ловушке, чтобы продемонстрировать, что Helmfile может предоставить вам пространство имен выпуска как переменную, и вам не нужно повторять себя.

1 голос
/ 13 июля 2020

Вы можете использовать helm upgrade для обновления любой существующей развернутой диаграммы с изменениями.

Аргументами обновления должны быть версия и диаграмма. Аргументом диаграммы может быть ссылка на диаграмму (example/mariadb), path на каталог диаграмм, упакованный chart или полный URL-адрес. Для ссылок на диаграммы будет указана последняя версия, если не установлен флаг --version.

Чтобы переопределить значения в диаграмме, используйте либо флаг --values и передайте файл, либо используйте --set отметьте и передайте конфигурацию из командной строки, для принудительного ввода строковых значений используйте --set-string. Если значение велико и поэтому вы не хотите использовать ни --values, ни --set, используйте --set-file для чтения одного большого значения из файла.

Вы можете указать множественный флаг --values'/'-f раз. Приоритет будет отдан последнему (крайнему справа) указанному файлу. Например, если и myvalues.yaml, и override.yaml содержат ключ с именем Test, значение, установленное в override.yaml, будет иметь приоритет

Например

helm upgrade -f myvalues.yaml -f override.yaml redis ./redis
...