CLI Nelm целиком

Уровень: advanced ~55 мин Практика: Vikunja (AGPL-3.0)

Что нужно знать перед уроком

  • M4.04 — Три стадии Nelm подробно — нужно понимать Render/Plan/Apply, чтобы осознанно использовать соответствующие команды CLI

Что нужно знать перед уроком

M4 урок 4 — три стадии Nelm и уже встречавшиеся команды chart render/release plan install/release install. Здесь — полный обзор CLI Nelm по группам команд.

Теория

Группы команд Nelm

ГруппаКомандыНазначение
Releaseinstall, plan install, uninstall, list, history, get, rollbackуправление жизненным циклом релиза в кластере
Chartlint, render, download, upload, packработа с самим чартом как артефактом
Chart secretkey create, key rotate, values-file edit/encrypt/decrypt, file edit/encrypt/decryptшифрование секретов чарта (M4 урок 2)
Chart dependencydownload, updateуправление sub-charts из Chart.lock
Repoadd, remove, update, login, logoutуправление источниками чартов (OCI-репозитории)

release: полный жизненный цикл

1
2
3
4
5
6
7
nelm release install -n myproject -r myproject ./chart       # первая установка/обновление
nelm release plan install -n myproject -r myproject ./chart  # предпросмотр без применения
nelm release list -n myproject                                 # список релизов в namespace
nelm release history -n myproject -r myproject                 # история ревизий релиза
nelm release get -n myproject -r myproject                      # текущее состояние конкретного релиза
nelm release rollback -n myproject -r myproject --revision 3    # откат на конкретную ревизию
nelm release uninstall -n myproject -r myproject                # полное удаление релиза

Соответствие командам Helm (для тех, кто уже знаком с Helm 3) — таблица прямых эквивалентов:

HelmNelm
helm upgrade --install --atomic --wait -n ns release ./chartnelm release install --auto-rollback -n ns -r release ./chart
helm uninstall -n ns releasenelm release uninstall -n ns -r release
helm template ./chartnelm chart render ./chart
helm dependency buildnelm chart dependency download

Обратите внимание на --auto-rollback у nelm release install — прямой аналог связки --atomic у Helm (при ошибке деплоя автоматически откатывается на предыдущую успешную ревизию, а не оставляет релиз в промежуточном сломанном состоянии).

chart: работа с самим чартом как артефактом

1
2
3
4
5
nelm chart lint ./chart                       # проверка синтаксиса/best-practices чарта
nelm chart render ./chart -r myproject         # только Render, без кластера
nelm chart pack ./chart -d ./dist              # упаковка в архив для распространения
nelm chart upload ./dist/chart-0.1.0.tgz oci://registry.example.com/charts
nelm chart download oci://registry.example.com/charts/vikunja --version 0.1.0

pack/upload/download — механизм публикации/получения чартов через OCI-реестры (тот же тип registry, что используется и для образов, и для Package/Application-пакетов, разбирается детально в M9) — чарт как артефакт живёт своим независимым жизненным циклом версионирования, отдельно от версий самих образов внутри него.

chart dependency: sub-charts

1
2
nelm chart dependency update ./chart   # обновляет Chart.lock и скачивает зависимости в charts/
nelm chart dependency download ./chart # скачивает зависимости согласно уже существующему Chart.lock

update пересчитывает версии зависимостей согласно ограничениям версий в Chart.yaml и обновляет Chart.lock (аналог package-lock.json/go.sum — фиксация точных разрешённых версий); download — детерминированная установка уже зафиксированных версий из существующего Chart.lock, без пересчёта (аналог npm ci вместо npm install).

repo: управление источниками чартов

1
2
3
nelm repo login oci://registry.example.com --username <user> --password <token>
nelm repo add my-charts oci://registry.example.com/charts
nelm repo update

Частые ошибки и подводные камни

  • Путать nelm chart download/upload (публикация самого чарта) с публикацией Application-пакета через d8 package build. Это разные уровни артефактов: чарт — внутренняя часть Application-пакета, d8 package build (детально — M5 урок 9) оперирует пакетом целиком (чарт + образы + метаданные package.yaml).
  • Не использовать --auto-rollback в CI и получать сломанные промежуточные релизы при ошибке деплоя. Без этого флага неудачный release install может оставить кластер в частично применённом состоянии.
  • Забыть nelm chart dependency update/download перед render/install, если у чарта есть sub-charts. Без загруженных зависимостей в charts/ рендер/установка завершится ошибкой отсутствующих зависимостей.

Практика в кластере

🧩 Практика урока: Vikunja · лицензия AGPL-3.0
  1. Проверьте чарт Vikunja линтером и убедитесь, что нет ошибок:
1
nelm chart lint ./vikunja-chart
  1. Установите релиз с автоматическим откатом при ошибке:
1
2
3
nelm release install --auto-rollback -n course-m4-vikunja -r vikunja-demo ./vikunja-chart
nelm release list -n course-m4-vikunja
nelm release get -n course-m4-vikunja -r vikunja-demo
  1. Внесите изменение (например, увеличьте replicaCount в values) и обновите релиз, затем изучите историю ревизий:
1
2
nelm release install --auto-rollback -n course-m4-vikunja -r vikunja-demo ./vikunja-chart --set backend.replicaCount=2
nelm release history -n course-m4-vikunja -r vikunja-demo
  1. Смоделируйте откат на предыдущую ревизию:
1
nelm release rollback -n course-m4-vikunja -r vikunja-demo --revision 1

Практика разработки

Упакуйте чарт как переносимый артефакт и загрузите в тестовый OCI-реестр (если доступен):

1
2
nelm chart pack ./vikunja-chart -d ./dist
nelm chart upload ./dist/vikunja-0.1.0.tgz oci://<your-registry>/charts

Шпаргалка команд урока

1
2
3
4
5
nelm release install|uninstall|list|history|get|rollback [flags] -n <ns> -r <release> [<chart-dir>]
nelm release plan install [flags] -n <ns> -r <release> <chart-dir>
nelm chart lint|render|pack|upload|download [flags] <chart-dir>
nelm chart dependency update|download <chart-dir>
nelm repo add|remove|update|login|logout [flags]

Полная шпаргалка: 📋 nelm .

Вопросы для самопроверки

Какой флаг nelm release install является аналогом --atomic у helm upgrade?

--auto-rollback предотвращает промежуточное сломанное состояние релиза при неудачном деплое, откатывая на последнюю успешную ревизию.

Источник: Nelm — README на GitHub

Что делает nelm chart render в сравнении с nelm release install?

chart render — только шаблонизация без обращения к кластеру для применения, аналог helm template.

Источник: Nelm — README на GitHub

В чём разница между nelm chart dependency update и download?

update — аналог npm install (пересчёт), download — аналог npm ci (детерминированная установка по lock-файлу).

Источник: Nelm — README на GitHub

Является ли nelm chart upload тем же самым, что d8 package build?

Это разные уровни артефактов: чарт — внутренняя часть пакета, package build оперирует пакетом целиком.

Источник: Рекомендуемая литература

Какая команда покажет историю ревизий конкретного релиза?

release history показывает последовательность ревизий релиза, необходимую, в частности, для последующего rollback на конкретную ревизию.

Источник: Nelm — README на GitHub

Рекомендуемая литература

Официальная документация

Статьи и блоги

Книги

  • Matt Butcher, Matt Farina, Josh Dolitsky. Learning Helm. 2019. ISBN 978-1492036781.

Связанные материалы