Назад | Перейти на главную страницу

Предварительное заполнение постоянных дисков GCE во время сборки и / или перед запуском образа Docker на GKE

Я хотел бы создать контейнер Docker, а затем запустить его в GKE после монтирования некоторых каталогов с постоянных дисков (PD) GCE. Например, я бы хотел, чтобы файлы конфигурации приложения (чтение-запись) в /etc/<application>/ чтобы жить дольше, чем его стручки (которые могут перезапуститься в любой момент).

Обычная сборка помещает файлы конфигурации по умолчанию в /etc/<application>/ и крайне важно, чтобы они были как-то однажды «скопированы» с временного диска образа в PD, чтобы приложение могло запуститься в ожидаемой среде.

Есть ли лучший способ сделать это? Например, нужно ли мне монтировать PD также в моем Dockerfile, или я могу каким-то образом запросить «синхронизацию» PD с файлами из другого каталога / тома / диска, когда они впервые монтируются экземпляром виртуальной машины во время развертывания?

Очевидный ответ - заполнять каждый постоянный диск сразу после его создания.

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

Если вам не нужно беспокоиться о совместном использовании PD между версиями, вы можете инициализировать содержимое PD, используя задание, выполняемое в модуле приложения. В Kubernetes есть функция под названием контейнеры инициализации разработан, чтобы сделать это проще; но на момент написания он все еще альфа.

Я не слышал о передовых методах работы, поэтому сейчас принял следующее:

  1. docker build изображение с Dockerfile это также смолы, например /etc/<application>/ в <application>.tar после того, как он выполнил другие шаги сборки
  2. кратко docker run изображение и scp tar файлы с работающего образа
  3. на короткое время создайте временный экземпляр ВМ и добавьте / присоедините к нему PD; scp tar-файлы в экземпляр ВМ; gcloud compute ssh в tit, смонтируйте PD и распакуйте необходимые файлы ниже точки монтирования