Этот модуль отвечает за копирование секретов во все пространства имён.

Он полезен тем, что позволяет не копировать каждый раз в CI секреты для пуллинга образов и заказа RBD в Ceph.

Модуль secret-copier не может использоваться совместно с модулем multitenancy-manager.

multitenancy-manager создаёт изолированные окружения для пользователей в их проектах, а secret-copier автоматически раздаёт секреты во все пространства имён. Если в закрытом окружении пользователя окажутся чувствительные данные, это может привести к утечке данных и нарушению модели безопасности.

Поэтому, если необходимо предоставить общий сертификат (например, WC-сертификат для внутреннего окружения) или общий токен доступа к registry, не используйте secret-copier. Поместите такие секреты в шаблон проекта в multitenancy-manager – администратор кластера должен определить их в конфигурации проекта.

Как работает?

Модуль secret-copier следит за изменениями секретов в пространстве имён default с лейблом secret-copier.deckhouse.io/enabled: "".

  • Созданный секрет будет скопирован во все пространства имён.
  • Изменённый секрет с его новым содержимым будет раскопирован во все пространства имён.
  • При удалении секрет будет удален из всех пространств имён.
  • При изменении скопированного секрета в прикладном пространстве имён, тот будет перезаписан оригинальным содержимым.
  • При создании любого пространства имён в него копируются все секреты из пространства имён default с лейблом secret-copier.deckhouse.io/enabled: "".

Кроме этого, каждую ночь секреты будут повторно синхронизированы и приведены к состоянию в пространств имён default.

Что нужно настроить?

Чтобы все заработало, достаточно создать в пространстве имён default секрет с лейблом secret-copier.deckhouse.io/enabled: "".

Внимание! Рабочим пространством имён для модуля является default, Секреты будут копироваться только из него. Ресурсы с лейблом secret-copier.deckhouse.io/enabled: "", созданные в других пространствах имён при включенном модуле будут автоматически удалены.

Как ограничить список пространств имён, в которые будет производиться копирование?

Для этого нужно задать label–селектор в значении аннотации secret-copier.deckhouse.io/target-namespace-selector. Например: secret-copier.deckhouse.io/target-namespace-selector: "app=custom". Модуль создаст копию этого секрета во всех пространствах имён, соответствующих заданному label–селектору.