Шпаргалка: d8 (deckhouse-cli)

d8 — единый CLI-интерфейс к экосистеме Deckhouse: d8 k дублирует kubectl (см. шпаргалку kubectl), а остальные группы команд управляют платформой, доставкой приложений и диагностикой. Подробнее — M0 урок 2, M2 урок 2, M5 урок 9.

Самые используемые команды

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
d8 version                                            # версия CLI
d8 status                                             # агрегированный статус кластера/модулей
d8 k <любая kubectl-команда>                          # алиас kubectl

d8 package --help                                     # встроенная команда (DKP 1.76+)
d8 package bootstrap application <name> [--hooks] [--extended] [--werf] [-o <path>]
d8 package verify [--hide-warnings] [--show-ignored]
d8 package build --version <semver> [--repo <registry>] [--user <u>] [--token <t>]

d8 system queue list                                  # очередь обработки модулей deckhouse-controller

Установка

1
2
3
4
. $(trdl use d8 0 stable) && d8 --version              # установка/активация через trdl (одна сессия)
trdl add d8 https://tuf.deckhouse.io 0 <root-sha512> d8
trdl use d8 0 stable
d8 version

Группы команд (обзор)

ГруппаНазначение
d8 kаналог kubectl
d8 systemнастройки/модули/очереди платформы, системные логи
d8 statusсводный статус кластера/модулей
d8 backupbackup объектов etcd (не данные PVC!)
d8 crcontainer registry
d8 mirrorофлайн-копирование образов/пакетов (недоступно в CE/BE)
d8 delivery-kitbuild/publish/plan/deploy (недоступно в CE/BE)
d8 vвиртуализация (DVP)
d8 iamidentity/access
d8 strongholdсекреты
d8 networkсетевые настройки
d8 toolsвспомогательные утилиты CLI
d8 pluginsуправление подгружаемыми расширениями CLI (не d8 package в DKP 1.76+)

Плагины

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
d8 plugins list                                       # установленные плагины
d8 plugins versions <name>                            # доступные версии плагина
d8 plugins install <name>                              # последняя совместимая версия
d8 plugins install <name> --version <version>          # конкретная версия
d8 plugins install <name> --use-major <N>               # последняя версия в major-ветке
d8 plugins update <name>                               # обновить один плагин
d8 plugins update all                                  # обновить все установленные плагины
d8 plugins contract <name>                             # версия API-контракта плагина
d8 plugins remove <name>                               # удалить плагин
d8 <plugin> --help                                     # диагностика наличия плагина

d8 package — жизненный цикл Application-пакета

Полный разбор — M5 урок 9, M9 урок 2, M11 урок 4.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Bootstrap — генерация скелета пакета
d8 package bootstrap application <name>
d8 package bootstrap application <name> --hooks         # + каркас Go-хуков
d8 package bootstrap application <name> --extended       # + расширенная документация
d8 package bootstrap application <name> --werf           # + werf.yaml/werf-giterminism.yaml
d8 package bootstrap application <name> -o <path>        # вывести в указанную директорию

# Verify — статическая проверка (pkglint, 6 линтеров)
d8 package verify
d8 package verify --hide-warnings                        # только ошибки (строгий CI-гейт)
d8 package verify --show-ignored                          # показать проигнорированные через .pkglint.yaml находки
d8 package verify --remote <registry>/packages/<name>:<version>   # проверка опубликованного артефакта
d8 package verify --lint-config <path>                    # альтернативный конфиг вместо .pkglint.yaml

# Build — сборка образов (через werf) + упаковка чарта + публикация
d8 package build --version/-v <semver>
d8 package build --version <semver> --repo/-r <registry>
d8 package build --version <semver> --user/-u <user> --token/-t <token>
d8 package build --version "${CI_COMMIT_TAG#v}"           # версия из git-тега без префикса v
d8 package build --version "0.0.0-dev.$CI_COMMIT_SHORT_SHA" --repo "$PACKAGE_BUILD_REPOSITORY_DEV"  # dev-версия из main
d8 package build --force/-f                                # перезаписать существующую версию в registry (осторожно!)
d8 package build --debug                                   # подробный вывод для диагностики сборки
d8 package build --sign --sign-cert <path> --sign-key <path>  # подпись пакета для цепочки доверия

Переменные окружения CI (эквиваленты флагов d8 package build, не попадают в логи):

1
2
3
4
5
6
PACKAGE_BUILD_REPOSITORY          # = --repo (prod)
PACKAGE_BUILD_REPOSITORY_DEV      # отдельный dev registry-путь
PACKAGE_BUILD_REPOSITORY_USER     # = --user
PACKAGE_BUILD_REPOSITORY_TOKEN    # = --token (хранить как Protected+Masked в GitLab)
PACKAGE_BUILD_SIGN_CERT           # = --sign-cert
PACKAGE_BUILD_SIGN_KEY            # = --sign-key

d8 status / d8 system — диагностика платформы

1
2
3
4
d8 status                                              # сводка: модули, очередь, версия
d8 system queue list                                    # очередь задач deckhouse-controller
d8 system queue list --watch                            # отслеживание изменений очереди (v0.23+)
d8 system --help

d8 backup — снапшот etcd

1
d8 backup etcd <snapshot-file>                          # снапшот конфигурации объектов кластера (НЕ данные PVC!)

d8 mirror — офлайн-зеркалирование (недоступно в CE/BE)

1
2
3
d8 mirror pull --include-package <name>@<constraint> --packages-path-suffix /packages
d8 mirror pull --include-package myapp@>=1.0.0 --packages-path-suffix /packages
d8 mirror push $(pwd)/d8-bundle <registry>:5050/dkp/ee --registry-login='<login>' --registry-password='<password>' --tls-skip-verify

d8 k — примеры платформенных запросов (полный список см. в шпаргалке kubectl)

1
2
3
4
5
d8 k explain application.spec
d8 k get app -n <ns>
d8 k get module <name> -o yaml
d8 k get moduleconfig deckhouse -o jsonpath='{.spec.settings.releaseChannel}'
d8 k debug -it deploy/<name> -n <ns> --image=busybox --target=<container>   # эфемерный debug-контейнер (distroless)

Дополнительно: другие группы (из официальной документации Deckhouse)

Эти возможности d8 упоминаются в документации платформы, но не разбираются отдельным уроком курса — полезно знать об их существовании:

1
2
3
4
5
6
d8 cr <subcommand>              # работа с container registry (list/copy/etc.)
d8 iam <subcommand>             # identity/access management
d8 stronghold <subcommand>      # управление секретами Stronghold
d8 network <subcommand>         # сетевые настройки кластера
d8 v <subcommand>               # виртуализация (Deckhouse Virtualization Platform)
d8 delivery-kit <subcommand>    # build/publish/plan/deploy для delivery-кита (EE)