CI: валидировать custom resources по схемам CRD развёрнутых версий #400
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что произошло
После мержа #397 и #398 пайплайн был зелёным, а в кластере обе Kustomization
env— вgrachevkoиgrachevaeu— встали:spec.data[].sourceRefв External Secrets — этоStoreSourceRef: ровно одно изstoreRefиgeneratorRef(maxProperties: 1), аkindиnameживут внутриstoreRef. В манифесте они стояли прямо подsourceRef, то есть объект несёт два необъявленных свойства: API-сервер его отклоняет,envне становится Ready, за ней ждётhermes, и вся смёрженная работа в кластер не доезжает (файловый менеджер, переехавший в под агента, ждёт ту же цепочку). Фикс — #399.Почему CI пропустил
flate test all—✓и на сломанной форме, и на исправленной: CRD External Secrets ему неизвестны (проверено на обеих ветках, разница только в недоступном источникеnetwork/k8s-gateway, codeberg отвечает 503).Flux Local— значения HelmRelease сверяются сvalues.schema.jsonчарта, тела custom resources не проверяет никто.Что добавить
Шаг, который валидирует отрендеренные custom resources по схемам CRD развёрнутых версий, а не по встроенному набору:
deploy/crds/bundle.yamlтегаv2.12.0(версия чарта — вkubernetes/apps/security/external-secrets/app/ocirepository.yaml);kubeconformс-schema-location, указывающим на этот bundle (либоkubectl apply --dry-run=serverна эфемерном кластере).Проверка ловит это без кластера: у
spec.data[].sourceRefобъявлены толькоstoreRefиgeneratorRefприmaxProperties: 1, поэтому плоская форма даёт и неизвестные поля, и второе свойство. Тот же шаг закрывает остальные CR'ы репозитория (ExternalSecret,SecretStore, генераторы,OCIRepository,PocketID*).Критерий приёмки
field not declared in schema.Связь
Парный issue — #401: он про правила admission-вебхука, этот — про схемы CRD; класс ошибки один (манифест проходит локальный рендер и отвергается API-сервером), обвязка проверки общая.