Установка инструментов разработчика и обзор d8 CLI
Что нужно знать перед уроком
- M0.01 — Карта экосистемы — нужно понимать, зачем нужен каждый инструмент
Что нужно знать перед уроком
M0 урок 1 — общая карта: Kubernetes/Deckhouse/Werf/Nelm/Application/Registry. В этом уроке мы устанавливаем всё, что нужно для практики, и подробно разбираем d8 — единую CLI-утилиту платформы Deckhouse, которая будет использоваться в каждом последующем модуле.
Теория
Набор инструментов разработчика Application
| Инструмент | Роль | Устанавливается |
|---|---|---|
git | контроль версий, источник для giterminism werf | системный пакетный менеджер |
| Container runtime (Docker/Podman) | локальная сборка и запуск образов | сайт производителя |
kubectl | универсальный CLI для Kubernetes API | curl/пакетный менеджер |
d8 (deckhouse-cli) | CLI платформы Deckhouse (обёртка над kubectl + платформенные команды) | trdl |
werf | сборка образов и деплой | trdl |
nelm | рендер/применение чартов (используется werf’ом «под капотом», а также напрямую) | trdl/бинарь с GitHub releases |
trdl — единый механизм установки и обновления
Инструменты экосистемы Werf/Deckhouse ставятся не через apt/brew, а через собственный механизм trdl (The Update Framework-совместимый транспорт с верификацией подписи и поддержкой каналов обновления alpha/beta/early-access/stable/rock-solid, аналогичных release channels самого Deckhouse). Общая схема:
| |
Тот же механизм используется для werf:
| |
trdl даёт три вещи, которых нет при ручном скачивании: (1) криптографическую верификацию каждого обновления по корневому ключу, (2) явное разделение на каналы стабильности (alpha→rock-solid), (3) единый механизм для всех инструментов экосистемы (d8, werf) с одинаковым UX обновления.kubectl — универсальный клиент Kubernetes API
kubectl — официальный CLI-клиент для любого Kubernetes API, независимо от дистрибутива. Устанавливается стандартно (пакетный менеджер ОС или официальный бинарник с kubernetes.io). Все команды kubectl get/describe/apply/logs/exec будут работать одинаково в кластере kind из следующего урока и в любом продакшен-кластере Deckhouse.
d8 — CLI-утилита платформы Deckhouse: полный обзор групп команд
d8 — не замена kubectl, а надстройка: часть команд (d8 k) — прямой аналог kubectl, работающий через тот же kubeconfig, а остальные группы — платформенные операции, которых в чистом Kubernetes просто не существует. Официальная таблица групп команд (Deckhouse — CLI d8):
| Группа | Назначение | Актуальность для Application-разработчика |
|---|---|---|
d8 k | аналог kubectl — вся стандартная работа с Kubernetes API | основной инструмент, использует каждый урок |
d8 system | настройки/модули/очереди платформы, системные логи deckhouse-controller | нужен для диагностики зависимостей-Module (M2) |
d8 status | общий статус кластера/модулей | полезен при troubleshooting (M10 урок 10) |
d8 backup | backup объектов etcd (не данных внутри PVC!) | важное разграничение — M10 урок 8 |
d8 cr | операции с container registry | пригодится в M9 |
d8 mirror | офлайн-копирование артефактов (недоступно в CE/BE) | не используется в этом курсе (CE-кластер) |
d8 delivery-kit | build/publish/plan/deploy приложений, SBOM (недоступно в CE/BE) | не используется в этом курсе (CE-кластер) |
d8 data | операции с данными платформы | не в фокусе курса |
d8 v | виртуализация (модуль virtualization) | не в фокусе курса |
d8 iam | identity/access management | обзорно в M10 урок 9 |
d8 stronghold | секреты (Deckhouse Stronghold) | обзорно, альтернатива Kubernetes Secret |
d8 network | сетевые настройки платформы | обзорно в M1 |
d8 completion | автодополнение шелла | утилитарная |
d8 tools | вспомогательные утилиты | утилитарная |
d8 package | bootstrap/build/verify Application-пакетов | основной инструмент с M5 — встроенная команда |
d8 plugins | управление подгружаемыми расширениями CLI (не d8 package) | обзорно — см. ниже |
package (нужна с M5) в актуальных версиях deckhouse-cli (DKP 1.76+) — встроенная top-level команда наряду с bootstrap/build/verify; отдельно через d8 plugins install package ставить не нужно — достаточно установленного d8. Проверьте сразу после установки: d8 package --help. Если команда не найдена — обновите d8 через trdl, а не legacy-плагин: в более старых версиях deckhouse-cli package поставлялась как lazy-loaded плагин через d8 plugins install package.d8 plugins — механизм подгружаемых расширений CLI
Механизм d8 plugins по-прежнему существует для прочих версионируемых расширений CLI (не для d8 package в актуальных релизах). Плагины скачиваются компонентом кластера registry-packages-proxy по Bearer-токену из kubeconfig; авторизация — через ClusterRole d8:registry-packages-proxy:cli-download, который выдаёт администратор кластера.
| |
Жизненный цикл Application-пакета через d8 package bootstrap/build/verify разбирается практически в M5 уроке 9.
werf и nelm
werf — самодостаточный бинарник, nelm используется werf’ом «под капотом» при werf converge, но также может вызываться отдельно как самостоятельный CLI (nelm release ..., nelm chart ...) — это разбирается подробно в M4.
Linux / Сети
PATH, права и ~/.kube/config
Все перечисленные инструменты — обычные исполняемые файлы. После установки через trdl команда доступна в текущей сессии шелла только после того, как вы явно выполнили . $(trdl use d8 0 stable) (это подключает нужную версию, а не запускает её напрямую) — чтобы не делать это перед каждым вызовом, добавьте в ~/.bashrc/~/.zshrc alias вручную, например alias d8='trdl exec d8 0 stable -- "$@"', и затем source ~/.bashrc/source ~/.zshrc.
| |
kubectl/d8 k подключаются к кластеру через файл kubeconfig — YAML с адресом API-сервера, сертификатами клиента и контекстами (какой кластер/namespace/пользователь используется «по умолчанию»). Путь к нему — переменная окружения KUBECONFIG, по умолчанию ~/.kube/config:
| |
В следующем уроке kind автоматически запишет новый контекст в этот файл — важно понимать, откуда он берётся, чтобы не терять время на диагностику «кластер не отвечает» из-за неверного контекста.
Частые ошибки и подводные камни
- Путать
kubectlиd8 k. Это не два разных инструмента с разным поведением —d8 kбуквально проксирует вkubectlс тем же kubeconfig. Разница появляется только в специфичных для Deckhouse удобствах (например, автодополнение CRD платформы). В этом курсе командыd8 kиkubectlвзаимозаменяемы, если не сказано иное. - Использовать устаревшую версию
deckhouse-cli, гдеd8 packageещё был плагином. В DKP 1.76+ команда встроена; еслиd8 package --helpне работает — обновитеd8черезtrdl, а не ставьте legacy-плагин. - Забыть, что
d8 mirror/d8 delivery-kitнедоступны в Community Edition. Если проходите курс на CE-кластере (как в M0 уроке 3) — эти группы не будут работать, это ожидаемо, не тратьте время на диагностику.
Практика в кластере
Кластера пока нет — он появится в следующем уроке. Однако сами инструменты уже можно и нужно поставить и проверить их версии:
| |
Если какая-то команда не найдена — вернитесь к разделу «Linux / Сети» этого урока и проверьте PATH/rc-файл шелла.
Практика разработки
В этом уроке практики сборки/деплоя ещё нет — она появится с M3, когда у нас будет и код приложения, и работающий кластер.
Шпаргалка команд урока
| |
Полная шпаргалка по d8 (с обновлением после каждого нового модуля) —
📋 cheatsheets/d8
.
Вопросы для самопроверки
trdl даёт криптографическую верификацию обновлений и единые каналы стабильности (alpha...rock-solid) для всех инструментов экосистемы.
Источник: Deckhouse — Deckhouse-cli
В deckhouse-cli для DKP 1.76+ package зарегистрирована как встроенная команда наравне с bootstrap/build/verify; d8 plugins install package — legacy-путь для более старых версий CLI.
Источник: GitHub — deckhouse/deckhouse-cli
Ключевое разграничение курса (подробно в M10): d8 backup etcd бэкапит объекты кластера, backup данных приложения — ответственность разработчика Application.
Источник: Deckhouse — Backup and restore
d8 k — тонкая обёртка над стандартным доступом к Kubernetes API через тот же kubeconfig, что и kubectl.
Источник: Deckhouse — Deckhouse-cli
kubeconfig описывает адрес API-сервера, сертификаты и контексты; путь к нему задаёт KUBECONFIG, по умолчанию ~/.kube/config.
Рекомендуемая литература
Официальная документация
- Deckhouse — Deckhouse CLI (d8)
- GitHub — deckhouse/deckhouse-cli — internal/docs/plugins.md
- kubernetes.io — Organizing Cluster Access with kubeconfig Files.
- ru.werf.io — установка.
Статьи и блоги
- Установка Deckhouse в kind: пробуем K8s-платформу на ноутбуке — Flant на Habr.
- Разворачиваем приложение в кластере Kubernetes под управлением Deckhouse c помощью werf — Flant на Habr.
- Первые шаги с werf: собираем и деплоим простое приложение в Kubernetes — Flant на Habr.
Книги
- Marko Lukša. Kubernetes in Action. 2nd ed., 2022. ISBN 978-1617297618.
Связанные материалы
- Предыдущий урок: M0.01 — Карта экосистемы.
- Следующий урок: M0.03 — Практический кластер: kind + Deckhouse CE.
- Шпаргалка: 📋 d8 , 📋 kubectl .
- Глубже про
d8 package— M5 урок 9; про остальные группыd8— M2 урок 2.
✓ Урок пройден — все вопросы самопроверки отвечены верно