🔐 За считанные дни пароль от базы может оказаться сразу в нескольких местах: в Kuberne... — 31 июля 2026 г. в 14:11:47.030
🔐 За считанные дни пароль от базы может оказаться сразу в нескольких местах: в Kubernetes Secret, CI/CD-переменной, локальном .env и на Confluence-странице. Пока окружений мало, за всем уследить еще можно, но в проде это сделать сложнее: значения нужно ротировать, доступы — разграничивать, а по каждому обращению к секрету желательно понимать, кто и когда его открывал. И чем больше копий секрета расходится по системам, тем выше шанс, что однажды он окажется «рассекреченным». Нативный Kubernetes Secret хранит данные в base64: это кодирование, а не шифрование. Если для etcd не включен encryption at rest, пароль от базы или токен внешнего API представлен на дисках control plane открытым текстом. Как эту проблему решает ESO External Secrets Operator помогает хранить исходные значения вне кластера — в централизованном хранилище. Значения живут в KMS, а ESO сам создает из них обычные Kubernetes Secret и обновляет их по расписанию. Для приложения схема не меняется: оно по-прежнему читает переменную окружения или подключенный volume. Чтобы все это настроить, нужно разобраться в нескольких сущностях ESO: 🔹 SecretStore — подключение к конкретному хранилищу секретов 🔹 ClusterSecretStore — то же подключение, но доступное из всех namespace 🔹 ExternalSecret — манифест, который говорит, какой секрет забрать и как назвать его в кластере 🔹 refreshInterval — как часто ESO проверяет хранилище на обновления. Что дает Managed Kubernetes VK Cloud В Managed Kubernetes VK Cloud ESO ставится как аддон прямо из панели управления. KMS вынесен отдельно от кластеров, доступ к нему настраивается через IAM, а все обращения к секретам попадают в аудит-лог. Права стоит сразу выдавать по least privilege: отдельный сервисный аккаунт и отдельный префикс на каждое окружение, например prod/*, staging/*, dev/*. В итоге в Git остаются только ссылки на секреты, значениями в KMS управляет SecOps, а кластер видит лишь то, к чему у него есть доступ. Что проверить при ошибке синхронизации Если после деплоя ExternalSecret вместо SecretSynced показывает SecretSyncedError — первым делом стоит проверить события. Типичные причины — неверный путь к секрету в KMS, права ServiceAccount или недоступный endpoint. Больше о нативном Secret в etcd, Sealed Secrets, self-managed Vault и ESO с KMS VK Cloud читайте в блоге VK Cloud.

