CI: проверять admission-правила ESO (namespaced SecretStore ссылается на SA своего namespace) #401
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?
Что произошло
PR #387 был смержен зелёным, но в кластере namespaced
SecretStore(см.kubernetes/apps/<ns>/hermes/secrets/app/secretstore-kubernetes.yaml) не применился: admission-вебхук External Secrets отклонил объект, потому чтоauth.serviceAccount.namespaceуказывал на ServiceAccount оператора из чужого namespace (security):Цепочка
secrets -> env -> hermesне поехала, инстансы не перезагрузились. Фикс — #397: ServiceAccountsecrets-readerс Role и RoleBinding переехал в namespace самого инстанса,remoteNamespaceостался своим.Почему CI пропустил
flate test allиFlux Localпроверяют рендер и схемы значений, но не правила admission-вебхуков: вебхук существует только в кластере, а локальный рендер про него ничего не знает. Объект синтаксически корректен и проходит любую проверку без кластера.Что добавить
Два варианта, они различаются ценой и охватом:
conftest/kyverno-json) по отрендеренным объектам: дляSecretStore(неClusterSecretStore) вauth.serviceAccount.namespaceдопустимы пустое значение или namespace самого объекта. Дёшево, без кластера, закрывает ровно этот класс ошибки.2.12.0):kubectl apply --dry-run=serverна отрендеренный манифест — закрывает класс целиком (валидаторы вебхуков всех операторов, а не только ESO), но тянет за собой кластер в CI.Совмещать с проверкой схем CRD (парный issue) стоит в одной обвязке: рендер даёт объекты, дальше — схемы и правила.
Критерий приёмки
security) — проверка краснеет;