Подтвердить что ты не робот

Секреты Кубернетов против ConfigMaps

Использовали тайны Кубернетов. Теперь у нас есть ConfigMaps.

Каков предпочтительный путь вперед - секреты или карты конфигурации?

P.S. После нескольких итераций мы стабилизировались по следующему правилу:

  • configMaps на один домен решения (может использоваться совместно с микросервисами в домене, но в конечном итоге это однотипные записи конфигурации)

  • секреты разделяются между областями решений, обычно представляют сторонние системы или базы данных

4b9b3361

Ответ 1

Я являюсь автором обеих этих функций. Идея состоит в том, что вы должны:

  • Используйте секреты для вещей, которые на самом деле секретны, как ключи API, учетные данные и т.д.
  • Использовать конфигурационную карту для несекретных конфигурационных данных

В будущем, вероятно, будут некоторые отличия в секретах, таких как ротация или поддержка для поддержки секретного API w/HSM и т.д. В целом нам нравятся API-интерфейсы на основе намерений, и намерение, безусловно, отличается для секретных данных по сравнению с обычным старых конфигураций.

Надеюсь, что это поможет.

Ответ 2

Одно заметное отличие в реализации состоит в том, что kubectl apply -f:

  • ConfigMaps "неизменны", если данные не изменились.
  • Секреты всегда "настраиваются" - даже если файл не изменился

Ответ 3

И ConfigMaps, и Secrets хранят данные в виде пары ключ-значение. Основное отличие заключается в том, что секреты хранят данные в формате base64, а ConfigMaps хранит данные в виде простого текста.

Если у вас есть важные данные, такие как ключи, пароли, учетные данные сервисных учетных записей, строка подключения к БД и т.д., То вам всегда следует использовать Секреты, а не Конфиги.

И если вы хотите выполнить настройку приложения с использованием переменных среды, которые вы не хотите хранить в секрете/скрытых, таких как тема приложения, URL-адрес базовой платформы и т.д., То вы можете выбрать ConfigMaps.