Секреты элемента верхнего уровня

Секреты — это разновидность конфигураций, ориентированных на конфиденциальные данные, с особыми ограничениями для этого использования. Поскольку реализация платформы может существенно отличаться от Конфигов, специальный раздел Секреты позволяет настраивать связанные ресурсы.

Объявление secrets верхнего уровня определяет или ссылается на конфиденциальные данные, которые могут быть предоставлены службам в этом приложении. Источником секрета является либо file, либо external.

  • file: секрет создаётся с содержимым файла по указанному пути.

  • environment: секрет создаётся со значением переменной среды.

  • external: если установлено значение true, указывает, что данный секрет уже создан. Реализация Compose не пытается его создать, и если он не существует, вызывается ошибка.

  • name: имя секретного объекта в Docker. Это поле можно использовать для ссылки на секреты, содержащие специальные символы. Имя используется как есть и не связано с именем проекта.

В этом примере секрет server-certificate создаётся как <project_name>_server-certificate при развертывании приложения путём регистрации содержимого server.cert в качестве секрета платформы.

secrets:
  server-certificate:
    file: ./server.cert

В этом примере секрет token создаётся как <project_name>_token при развертывании приложения путём регистрации содержимого переменной среды OAUTH_TOKEN в качестве секрета платформы.

secrets:
  token:
    environment: "OAUTH_TOKEN"

В качестве альтернативы server-certificate можно объявить внешним, при этом реализация Compose будет искать server-certificate, чтобы предоставить секрет соответствующим службам.

secrets:
  server-certificate:
    external: true

Поиск внешних секретов также может использовать отдельный ключ, указав name . Следующий пример изменяет предыдущий для поиска секрета с использованием параметра CERTIFICATE_KEY . При этом фактический ключ поиска будет установлен во время развертывания с помощью интерполяция переменных, но будет отображаться для контейнеров как жестко закодированный идентификатор server-certificate .

secrets:
  server-certificate:
    external: true
    name: "${CERTIFICATE_KEY}"

Если для external установлено значение true, а в секретной конфигурации установлены другие атрибуты, кроме name, учитывая, что ресурс не управляется жизненным циклом компоновки, реализации Compose ДОЛЖНЫ отклонить файл Compose как недействительный.

Для создания файла необходимо явно предоставить доступ к секретам соответствующим службам в приложении.