CI: проверять ссылки на Secret/ConfigMap и их ключи из манифестов (ловить ссылки на несуществующие источники) #74
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 #70 (и затем #73) в
hermesбыл добавлен envHERMES_DASHBOARD_OIDC_CLIENT_SECRETсо ссылкой на ключoidc-client-secretиз Secrethermes-oidc. Ключа не существует и не будет: клиент Zitadel создан как User Agent/PKCE, секрет ему не выдаётся. Пока уsecretKeyRefстоялoptional: true, это молча превращалось в пустую переменную; после правки #73 (optionalв схеме чарта нет) та же ссылка блокировала бы старт пода наCreateContainerConfigError. Ошибку нашёл владелец, а не CI.Это класс ошибок ссылочной целостности: не «значение не по схеме» (это задача #72), а «ссылка на то, чего никто не создаёт». Схема чарта такое не ловит по определению.
Что должно быть
CI валит PR, если манифест ссылается на несуществующий источник/ключ:
env.<KEY>.valueFrom.secretKeyRef {name, key}иenv.<KEY>.valueFrom.configMapKeyRef {name, key}— источник с таким именем и ключом должен существовать в репо (Secret/ConfigMap-манифест) или быть одноимённым из ExternalSecret/SealedSecret;envFrom[].secretRef.name/configMapRef.name— то же;volumes[].secret.secretName/configMap.name— то же;ExternalSecretс явнымdata:— проверить, что ссылаемые ключи перечислены в егоdata/dataFrom; дляdataFrom.extractисточник динамический, проверить нельзя — такие случаи помечать и требовать, чтобы потребляющие ссылки были необязательными, если это возможно.Критерий готовности
secretKeyRef {name: hermes-oidc, key: oidc-client-secret}, у которого нет источника, краснеет в CI.oidc-client-id) проходит.Связано: #72 (валидация values против схемы чарта). Оба чека — часть одного «предполётного» слоя CI, но ловят разные классы: #72 — структуру значений, эта задача — существование объектов, на которые значения ссылаются.