AWS ECS указывает файл конфигурации в зависимости от среды - PullRequest
0 голосов
/ 05 марта 2020

У меня есть два приложения (. net core 3.1 и Angular 8), которые развернуты на aws ecs как docker контейнеры. Теперь я хочу настроить несколько сред, например, качество, постановка, производство и т. Д. c. Теперь я хочу прочитать данные из указанного файла конфигурации c, чтобы при подготовке docker контейнер считывал данные из appsettings.staging. json, а для производства он считывал данные из appsettings.production. json. То же самое для Angular.

Как я могу это сделать? Я могу указать переменные окружения в codebuild в aws, но как я могу указать docker читать указанные c файлы?

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Несколько случайных мыслей:

  1. Создание разных кластеров ECS для разных сред (UAT / DEV / PROD).
  2. Использование одного и того же docker изображения для разных сред (без восстановления изображений для каждой среды)
  3. Извлечь секреты / конфигурацию из хранилища параметров [1] или диспетчера секретов [2]
  4. Сохранять версионный файл конфигурации в S3 или Git и извлекать его при инициализации контейнера. Не выпекайте конфиг с изображениями. А еще лучше, нет конфигурационных файлов и все прочесть из переменных среды. Ищите решения, такие как confd (https://github.com/kelseyhightower/confd)
  5. Обычно смотрите так: https://12factor.net/

Ref:

[1] https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html

[2] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-tutorial.html

0 голосов
/ 05 марта 2020

Есть несколько способов снять шкуру с этой кошки. Все они включают создание отдельного определения задачи для каждой среды (все с использованием одного контейнера).

Вы можете передавать различные переменные среды в каждое определение задачи (или монтировать разные тома).

Вы можете упакуйте все файлы конфигурации в ваш контейнер и получите переменную среды, которая указывает на соответствующий файл для каждой среды.

Существуют другие параметры, которые не требуют упаковки всех конфигов в файле docker. Это имеет свои преимущества, поскольку вам не нужно перестраивать контейнер при изменении конфигурации.

Вы можете поместить все конфиги в переменные окружения, использовать диспетчер секретов AWS или смонтировать другой том с помощью config для каждого определения задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...