Перейти к содержанию

Helm и Kustomize

Требования применяются к упаковке, render и проверке Kubernetes-конфигурации приложения. Уровни обязательности определены в корневом README.md.

INF-PKG-001. Поддерживаемый формат

Уровень: MUST

Применяется к: Kubernetes-конфигурации приложения

Конфигурация должна использовать Kustomize, Helm либо результат Helm как вход Kustomize. Версии Helm chart и внешних Kustomize bases должны быть зафиксированы неизменяемой версией. Pipeline должен фиксировать версии Helm, Kustomize и plugins, влияющих на render.

Обоснование

Ограниченный набор форматов делает конфигурацию исполнимой для людей и агентов.

Проверка

  • воспроизводимый render из чистого checkout;
  • статическая проверка внешних ссылок и версий.

Исключения

Операторский custom resource допустим, если сам устанавливается поддерживаемым форматом.

INF-PKG-002. Разделение общей конфигурации и среды

Уровень: MUST

Применяется к: нескольким целям одного приложения

Общая конфигурация должна иметь единый base или chart. Отличия цели должны задаваться values или overlays и не должны содержать копию полного набора ресурсов.

Обоснование

Копии незаметно расходятся и делают исправление неполным.

Проверка

  • сравнение структуры целей;
  • изменение base с render всех overlays.

Исключения

Разные runtime-профили MAY иметь отдельные bases.

INF-PKG-003. Детерминированный render

Уровень: MUST

Применяется к: CI-проверке конфигурации

Одинаковые commit, входные значения и версии инструментов должны создавать семантически одинаковые manifests. Render не должен зависеть от текущего времени, состояния кластера или сетевого ресурса без зафиксированной версии.

Обоснование

Недетерминированный output нельзя проверить до применения.

Проверка

  • два независимых render и нормализованное сравнение;
  • запуск без доступа к кластеру.

Исключения

Runtime-поля, создаваемые Kubernetes API, не входят в render.

INF-PKG-004. Проверка до применения

Уровень: MUST

Применяется к: merge request с Kubernetes-конфигурацией

Pipeline должен выполнить render всех изменённых целей, schema validation и policy checks для версии Kubernetes целевой платформы. Ошибка render, удалённый/неподдерживаемый API, неизвестный API kind с доступной schema или нарушение обязательной policy должны блокировать merge.

Обоснование

Статическая проверка устраняет ошибку до изменения среды.

Проверка

  • MR с синтаксической ошибкой и запрещённым privileged container;
  • проверка блокирующего job.

Исключения

Не допускаются.

INF-PKG-005. Отсутствие секретных значений в render

Уровень: MUST

Применяется к: Helm/Kustomize render и diff

Render и diff, сохраняемые в job log, artifact или merge request, не должны содержать открытые secret values. Допускаются ссылки на secret, ciphertext SealedSecret и metadata без чувствительного значения.

Обоснование

Даже защищённый CI artifact расширяет область доступа к runtime-секрету.

Проверка

  • canary-secret в тестовом input и поиск во всех outputs pipeline;
  • review artifact access и expiration.

Исключения

Не допускаются.

INF-PKG-006. Удаление и переименование ресурсов

Уровень: MUST

Применяется к: изменению identity Kubernetes-ресурса

Diff должен явно показывать создаваемые и удаляемые resources. Удаление или переименование Service, PersistentVolumeClaim, Secret, workload identity либо APISIX route должно иметь проверенный порядок миграции. Автоматический prune не должен удалять persistent resource без отдельного approval.

Обоснование

Переименование декларативного объекта фактически является созданием и удалением, а не безрисковым обновлением.

Проверка

  • MR с переименованием каждого stateful или адресуемого resource;
  • проверка diff, approval и сохранения данных/маршрута.

Исключения

Эфемерный preview resource MAY удаляться автоматически по сроку жизни.