Міграція з Helm v2 на Helm v3
Цей посібник показує, як мігрувати з Helm v2 на Helm v3. Для цього необхідно мати встановлений Helm v2, який управляє релізами в одному або кількох кластерах.
Огляд змін у Helm 3
Повний список змін між Helm 2 і 3 задокументований у розділі FAQ. Ось деякі з основних змін, про які слід знати перед і під час міграції:
Видалення Tiller:
- Заміна архітектури клієнт/сервер на клієнт/бібліотека (тільки бінарний файл
helm) - Безпека тепер залежить від користувача (делеговано безпеці кластера Kubernetes)
- Релізи тепер зберігаються як секрети в кластері, а метадані обʼєкта релізу змінилися
- Релізи зберігаються на основі простору імен релізу, а не в просторі імен Tiller
- Заміна архітектури клієнт/сервер на клієнт/бібліотека (тільки бінарний файл
Оновлено репозиторій чартів:
helm searchтепер підтримує як локальні запити в репозиторії, так і запити до Artifact Hub
Зміни у
apiVersionчарту:- Динамічно підключені залежності чартів переміщені до
Chart.yaml(requirements.yamlвидалено і requirements --> dependencies) - Тепер можна додавати бібліотечні чарти (helper/common charts) як динамічно підключені залежності
- Чарти мають поле метаданих
type, яке визначає, чи є чартapplicationчиlibrary. Стандартно цеapplication, що означає, що його можна рендерити та інсталювати - Чарти Helm 2 (apiVersion=v1) все ще можна встановлювати
- Динамічно підключені залежності чартів переміщені до
Додано специфікацію теки XDG:
- Домівка Helm видалена і замінена специфікацією теки XDG для зберігання конфігураційних файлів
- Більше не потрібно ініціалізувати Helm
helm initіhelm homeвидалені
Додаткові зміни:
- Установка/налаштування Helm спрощено:
- Тільки клієнт Helm (бінарний файл helm) (без Tiller)
- Парадигма "run-as-is"
localабоstableрепозиторії стандартно не налаштовані- Хук
crd-installвидалено і замінено на текуcrdsу чарті, де всі CRD, визначені в ній, будуть встановлені перед будь-яким рендерингом чарту - Значення анотації хука
test-failureвидалене, аtest-successзастаріле. Використовуйтеtestзамість - Команди видалені/замінені/додані:
- delete --> uninstall : стандартно видаляє всю історію релізів за (раніше потрібно було
--purge) - fetch --> pull
- home (видалено)
- init (видалено)
- install: вимагає імʼя релізу або аргумент
--generate-name - inspect --> show
- reset (видалено)
- serve (видалено)
- template: аргумент
-x/--executeперейменовано на-s/--show-only - upgrade: Додано аргумент
--history-max, який обмежує максимальну кількість збережених ревізій на реліз (0 - без обмежень)
- delete --> uninstall : стандартно видаляє всю історію релізів за (раніше потрібно було
- Бібліотека Helm 3 на Go зазнала значних змін і несумісна з бібліотекою Helm 2
- Бінарники Helm тепер розміщені на
get.helm.sh
- Установка/налаштування Helm спрощено:
Сценарії міграції
Сценарії міграції такі:
Helm v2 і v3 управляють одним кластером:
- Цей сценарій рекомендується тільки якщо ви плануєте поступове видалення Helm v2 і не потребуєте v3 для управління жодними релізами, розгорнутими v2. Усі нові релізи, що розгортаються, повинні виконуватися v3, а наявні релізи, розгорнуті v2, оновлюються/видаляються тільки v2
- Helm v2 і v3 можуть без проблем управляти одним кластером. Версії Helm можуть бути встановлені на одній або окремих системах
- Якщо ви встановлюєте Helm v3 на тій же системі, вам потрібно виконати додатковий крок, щоб обидві версії клієнтів могли співіснувати до того часу, поки ви не будете готові видалити клієнта Helm v2. Перейменуйте або помістіть бінарний файл Helm v3 в іншу теку, щоб уникнути конфліктів
- Інакше немає конфліктів між обома версіями через наступні відмінності:
- зберігання релізів (історії) v2 і v3 є незалежним один від одного. Зміни включають ресурс Kubernetes для зберігання та метадані обʼєкта релізу, що містяться в ресурсі. Релізи також будуть в просторі імен користувача, а не в просторі імен Tiller (наприклад, простір імен Tiller стандартно kube-system v2). v2 використовує "ConfigMaps" або "Secrets" у просторі імен Tiller і
TILLERownership. v3 використовує "Secrets" у просторі імен користувача іhelmownership. Релізи є інкрементальними в обох версіях v2 і v3 - Єдина проблема може бути, якщо ресурси кластера Kubernetes (наприклад,
clusterroles.rbac) визначені в чарті. Розгортання v3 тоді буде невдалим, навіть якщо унікальне в просторі імен, оскільки ресурси будуть конфліктувати - Конфігурація v3 більше не використовує
$HELM_HOMEі використовує специфікацію теки XDG замість цього. Вона також створюється на льоту за необхідності. Тому вона є незалежною від конфігурації v2. Це стосується тільки випадків, коли обидві версії встановлені на одній системі
- зберігання релізів (історії) v2 і v3 є незалежним один від одного. Зміни включають ресурс Kubernetes для зберігання та метадані обʼєкта релізу, що містяться в ресурсі. Релізи також будуть в просторі імен користувача, а не в просторі імен Tiller (наприклад, простір імен Tiller стандартно kube-system v2). v2 використовує "ConfigMaps" або "Secrets" у просторі імен Tiller і
Міграція з Helm v2 на Helm v3:
- Цей сценарій застосовується, коли ви хочете, щоб Helm v3 управляв наявними релізами Helm v2
- Слід зазначити, що клієнт Helm v2:
- може управляти одним або кількома кластерами Kubernetes
- може підключатися до одного або кількох екземплярів Tiller для кластера
- Це означає, що ви повинні бути обізнані про це під час міграції, оскільки релізи розгортаються в кластери Tiller і його простір імен. Тому ви повинні бути обізнані про міграцію для кожного кластера та кожного екземпляра Tiller, який управляється екземпляром клієнта Helm v2
- Рекомендований шлях міграції даних такий:
- Резервне копіювання даних v2
- Міграція конфігурації Helm v2
- Міграція релізів Helm v2
- Коли ви впевнені, що Helm v3 управляє всіма даними Helm v2 (для всіх кластерів і екземплярів Tiller клієнта Helm v2) як очікується, очистіть дані Helm v2
- Процес міграції автоматизований втулком Helm v3 2to3