Капстоун, шаг 5: установка, финальная проверка и чеклист приёмки
Что нужно знать перед уроком
- M11.04 — CI/CD: полный пайплайн — нужна опубликованная версия пакета перед установкой через PackageRepository
- M9.07 — Чеклист приёмки приложения и oss.yaml — нужен эталонный десятипунктовый чеклист, адаптируемый в этом уроке под Firefly III
- M10.10 — Troubleshooting по статусной модели — нужен алгоритм диагностики для финальной проверки установки
Что нужно знать перед уроком
Это заключительный урок всего курса. M9 урок 7 — эталонный десятипунктовый чеклист приёмки Application-пакета. M10 урок 10 — алгоритм диагностики «от общего к частному» по status.summary → status.conditions → логи → события. M5 урок 9 — жизненный цикл пакета через PackageRepository/ApplicationPackageVersion. Этот урок завершает капстоун и весь курс: устанавливаем опубликованный пакет Firefly III как конечный пользователь каталога, проходим полную диагностику и итоговую приёмку.
Теория
Установка через Application + PackageRepository
Финальный шаг — установка пакета так, как его установил бы реальный пользователь каталога, без прямого доступа к исходному репозиторию пакета. Это требует зарегистрированного PackageRepository, указывающего на registry, куда пайплайн из M11 урока 4 опубликовал версию:
| |
Обратите внимание: spec.settings содержит только поля, объявленные в config-values.yaml из M11 урока 1 — ни APP_KEY, ни реквизитов managed-mysql здесь нет и быть не может, они полностью инкапсулированы во internal.*-логике чарта, разобранной в M11 уроке 3. Это финальная демонстрация принципа из M5 урока 3: пользователь Application работает исключительно с осмысленным для него контрактом настроек, не касаясь внутренней реализации пакета.
Полная последовательность диагностики первой установки
Прямое применение алгоритма из M10 урока 10 к первой установке нового пакета (частный случай, когда вероятность обнаружить ранее не замеченную проблему выше, чем при рутинном обновлении уже стабильно работающего инстанса):
Финальный чеклист приёмки, адаптированный для Firefly III
Прямое применение десятипунктового чеклиста из M9 урока 7 к пакету капстоуна — каждый пункт нужно пройти самостоятельно, без готового ответа:
- Структура пакета (M5 урок 1) — все обязательные файлы на месте (
package.yaml,templates/,openapi/values.yaml,openapi/config-values.yaml,docs/README.md,docs/icon.svg,oss.yaml). package.yaml(M11 урок 1) —name: firefly-iii(14 символов, укладывается в лимит),descriptionsна обоих языках,requirements.modules.mandatoryточно указываетmanaged-mysql.- Контракт настроек (M11 урок 1) —
config-values.yamlне содержитAPP_KEYили реквизитов БД, все internal-детали изолированы. - Ограничения Application (M5 урок 5) — пакет не создаёт CRD и cluster-wide ресурсов; зависимость от БД реализована исключительно через
mandatory-Module, а не через попытку самостоятельно развернуть MySQL внутри Application (что было бы архитектурным нарушением границы Application/Module). pkglintбез ошибок (M11 урок 4) — стадияverifyпройдена.- Nelm-аннотации корректны (M11 урок 3) —
deploy-on: install+ownership: anyoneнаAPP_KEY,delete-policy: before-creation+deploy-dependencyнаJob-миграции,resource-policy: keepна PVC вложений. - Оптимизация сборки (M11 урок 2) —
importвместо дублирования PHP-стадии в образеweb,--cache-repoнастроен в CI. oss.yamlполон и точен (M11 урок 4) — включает сам Firefly III с корректной лицензией AGPL-3.0.- CI/CD настроен полностью (M11 урок 4) — раздельные dev/prod потоки, ручной gate, защищённые переменные.
- Production Operations готовность (M10) —
PodMonitor/Probeдля мониторинга (M10 уроки 1–2),PodDisruptionBudgetпри нескольких репликах (M10 урок 4… урок 5/6), backup-стратегия для PVC вложений (M10 урок 8 —d8 backup etcdне покрывает файлы вложений, нужен отдельный snapshot/дамп).
Что дальше после капстоуна
Курс сознательно ограничен рамками Application-разработки (зафиксировано с самого первого урока M2.01 и последовательно выдержано во всех 87 уроках). Логичные следующие шаги за пределами курса — если возникнет потребность самостоятельно разрабатывать Module (а не только зависеть от готовых, как managed-mysql/managed-postgres в этом курсе): CRD и их конверсии, charts/helm_lib, cluster-wide хуки на Go, dmtlint уже не только как инструмент анализа чужих модулей (M9 уроки 3–4), а как повседневный линтер собственной разработки — это отдельная специализация, целенаправленно исключённая из объёма этого курса.
Частые ошибки и подводные камни
- Указать в
spec.settingsApplication поля, отсутствующие вconfig-values.yamlпакета. Это приведёт к ошибке валидации при установке — контракт настроек, разработанный в M11 уроке 1, должен точно соответствовать тому, что реально принимаетApplication.spec.settings. - Пропускать шаги диагностики при первой неудачной установке, сразу переходя к
d8 k deleteи повторной попытке с нуля. Систематический алгоритм из M10 урока 10 почти всегда быстрее находит первопричину (чаще всего — невключённыйmanaged-mysqlили опечатка в имени Module), чем повторные попытки установки вслепую. - Считать капстоун завершённым сразу после того, как
status.summary.stateсталReady.Readyподтверждает только успешный деплой ресурсов — полный чеклист приёмки из теории включает пункты (CI/CD,oss.yaml, backup-стратегия), не проверяемые самим фактом готовностиApplicationв кластере.
Практика в кластере
- Зарегистрируйте
PackageRepository(если ещё не зарегистрирован для тестового кластера в предыдущих модулях) и установите опубликованную в M11 уроке 4 версию пакета:
| |
- Пройдите полную диагностическую последовательность из теории урока, независимо от того, установился ли пакет с первого раза:
| |
Убедитесь, что приложение отвечает на HTTP-запрос через настроенный
Ingress/HTTPRoute, и завершите первичную настройку Firefly III (создание учётной записи администратора) через веб-интерфейс.Пройдите весь десятипунктовый чеклист из теории построчно, отмечая выполнение или фиксируя обнаруженные пробелы для последующего исправления.
Практика разработки
Задокументируйте в docs/README.md итоговый результат прохождения чеклиста приёмки — какие пункты выполнены полностью, какие требуют доработки в реальном (не учебном) продолжении проекта. Это финальный артефакт капстоуна и всего курса, демонстрирующий полный путь от идеи (M11 урок 1) до опубликованного и проверенного production-пакета.
Шпаргалка команд урока
| |
Полные шпаргалки: 📋 kubectl , 📋 d8 .
Вопросы для самопроверки
Пользователь Application работает только с осмысленным контрактом config-values.yaml, а не с внутренней реализацией пакета.
Источник: Рекомендуемая литература
Это прямое применение алгоритма диагностики из M10 урока 10 к специфике первой установки нового пакета.
Источник: Рекомендуемая литература
Чеклист приёмки из M9 урока 7 значительно шире факта успешного деплоя ресурсов в кластер.
Источник: Рекомендуемая литература
Это ограничение зафиксировано с первого урока M2.01 и выдержано на протяжении всего курса.
Источник: Рекомендуемая литература
Это ключевое разграничение, разобранное в M10 уроке 8 и напрямую применимое к финальной проверке капстоуна.
Источник: Рекомендуемая литература
Рекомендуемая литература
Официальная документация
- Deckhouse — Разработка Application-пакета
- Deckhouse — Работа с Application
- Firefly III — Full documentation.
Статьи и блоги
- Готовим Gitea со вкусом werf CI/CD в кластере Deckhouse. Часть 3 — Flant на Habr.
- Разворачиваем приложение в кластере Kubernetes под управлением Deckhouse c помощью werf — Flant на Habr.
- GitLab + K8s + Werf — Habr.
Книги
- Gene Kim, Jez Humble, Patrick Debois, John Willis. The DevOps Handbook. 2nd ed., 2021. ISBN 978-1942788003.
Связанные материалы
- Предыдущий урок: M11.04 — CI/CD: полный пайплайн.
- Начало капстоуна: M11.01 — Планирование пакета и анатомия.
- Курс целиком: программа курса на главной странице.
Поздравляем с завершением курса «Deckhouse Application: с нуля до профи» — от первого Pod в M1 уроке 1 до самостоятельно спроектированного, собранного, задеплоенного и опубликованного production-пакета Firefly III.
✓ Урок пройден — все вопросы самопроверки отвечены верно