Развертывание файлов на aws EFS из конвейера CI gitlab.com

Каковы лучшие практики развертывания файлов в aws EFS из конвейера Gitlab CI?

В настоящее время мы развертываем файлы с gitlab.com в EFS через ssh в один из экземпляров EC2, на котором смонтирована EFS. Есть ли лучший способ сделать это? Не очень люблю предоставлять ssh доступ к gitlab нашим экземплярам EC2


person Myamotooo    schedule 29.08.2018    source источник


Ответы (1)


Если вы хотите, чтобы файлы попадали в EFS, в конце концов вам придется записать их туда из системы, где-нибудь, в которой смонтирован том EFS. Нет другого способа записи в EFS, кроме записи на том, смонтированный с помощью nfs, который он предоставляет. (EFS предлагает службу FileSync, которая AFAICT просто обертывает процесс создания экземпляра EC2 и перемещения данных через него в EFS, но это выглядит более подходящим для миграции, чем для текущих файловых операций).

Это не обязательно означает, что вы должны разрешить gitlab использовать ssh. Вы можете настроить gitlab где-нибудь файлы и уведомить систему. Или у вас может быть системный опрос на предмет изменений. Но ничто из этого не кажется таким простым, как ваша реализация.

Другой вариант - ограничить действия, которые может выполнять пользователь ssh. Чтобы точно определить, как работает процесс копирования файлов gitlab, потребуется немного времени. Если он использует только SFTP или SCP, вы должны иметь возможность ограничить пользователя только этим, а разрешения файловой системы пользователя могут предотвратить запись пользователем в неподходящие места.

В общем, в наши дни я не вижу, чтобы многие потоки сборки DevOps копировали код в общую файловую систему. NFS - подходящее решение для обмена файлами, но у него есть свои подводные камни. Вместо этого процессы развертывания обычно создают какой-либо пакет, а затем развертывание пакета происходит автоматически с помощью обработчика развертывания (стиль «Непрерывная доставка»), или автоматизация развертывания обновляется вручную для обновления версий. Часто эти два компонента объединяются, чтобы обеспечить непрерывный процесс доставки в среду разработки и ручную настройку версии для производственной среды.

person Daniel Farrell    schedule 29.08.2018