Я использую Spinnaker для развертывания трехуровневой системы в QA, а затем в Production. Файлы конфигурации в каждой из этих систем указывают на другие. Если я запеку конфигурацию для QA в AMI, то как мне ее изменить при продвижении в Prod? Это 1) наличие двух разных наборов AMI — один для QA и один для Prod, или 2) наличие AMI без конфигурации, а затем настройка его (каким-то образом) после развертывания для изменения файлов конфигурации? Что рекомендуется?
Как настроить два набора хостов (3 для QA и 3 для Prod) для развертывания распределенной системы с помощью Spinnaker?
Ответы (2)
Вы можете определить собственные AWS пользовательские данные для кластера во время развертывания (в дополнительных настройках конфигурации кластера). Затем вы можете получить эти пользовательские данные в своем приложении. Это позволит вам изменить этот тип конфигураций.
В Netflix у нас есть ряд сценариев инициализации, которые встроены в базовый образ и предоставляют механизм расширения пользовательских сценариев запуска (init.d) через туманность/градель. Обычно это устанавливает такие значения, как NETFLIX_ENVIRONMENT, которые хорошо известны и запрограммированы.
Мы также используем механизм переключения функций через https://github.com/Netflix/archaius . Это позволяет нам добавлять свойства, которые являются внешними по отношению к кластерам, но могут быть нацелены на них.
Когда дело доходит до защищенных учетных данных, подход описан в этой презентации, но, по сути, изображения обращаются к внешней службе, которая выдает эти типы учетных данных. https://speakerdeck.com/bdpayne/key-management-in-aws-how-netflix-secures-sensitive-data-without-its-own-data-center
Я сам борюсь с подобными проблемами в нашей компании. Мое решение состояло в том, чтобы создать образы AMI для конкретных целей с помощью скрипта Packer. Это позволяет мне: 1. Настроить сервер как можно лучше, а затем сохранить эти конфигурации в AMI. 2. Легко изменить эти конфигурации, если возникнет необходимость.
Затем запустите AMI с помощью сценария Ansible и выполните все остальные настройки для конкретного экземпляра.
В моем случае я выбрал создание разных изображений для постановки и производства, но в основном потому, что они сильно различаются. Если бы они были более похожи, я бы выбрал один и тот же AMI для обоих.
Преимущество, которое Ansible дает вам здесь, заключается в том, что вы учитываете свои конфигурации и включаете однократную запись как на рабочий, так и на промежуточный серверы.