2016-12-05 2 views
6

Я новичок в Kubernetes, и поэтому мне интересно, какие методы лучше всего подходят для ввода исходного кода вашего приложения в контейнер, запущенный в Kubernetes или подобной среде?Как вы поместите свой исходный код в Kubernetes?

Мое приложение является PHP, так что я PHP (FPM) и Nginx контейнеры (работает от Google Container Engine)

В первый, я имел объем GIT, но не было никакого способа изменения версии приложения, как это так Я переключился на emptyDir и установил исходный код в zip-архиве на одном из изображений, которые будут распаковывать его в этот том при запуске, и теперь у меня есть исходный код, отдельный на обоих изображениях через git с отдельной git-каталогом, поэтому у меня есть/app и/приложение-мерзавец.

Это хорошо, потому что мне не нужно обмениваться или настраивать тома (меньше ресурсов и конфигурации), слой приложения повторно используется в обоих изображениях, поэтому никакого влияния на космос не возникает, и поскольку это «база» построена так, Я могу просто настроить команду dockerfile в конце и легко переключиться на другую ветку или тег.

Я хотел загрузить архив с исходным кодом непосредственно из репозитория, предоставив учетные данные в качестве аргументов во время процесса сборки, но это не сработало, потому что мое репо, битбакет, создает архивы с последним идентификатором фиксации, добавленным в каталог, чтобы не было Кстати, зная, что приведет к распаковке архива, я застрял с git.

Каковы ваши способы обработки исходного кода?

ответ

0

Что мы сделали традиционно с PHP, это оверлей во время выполнения. В основном у контейнера будет установлен том, установленный на нем с помощью ключей развертывания для вашего репозитория git. Это позволит вам выполнять операции git pull.

Более застегнутый подход заключается в том, чтобы пользовательские, помеченные изображения вашего кода были расширены с fpm или любым изображением, которое вы используете. Таким образом, вы будете запускать версию 1.3 вашего устройства, где YourImage будет содержать версию 1.3 вашего приложения.

1

В идеале вы должны использовать непрерывные шаблоны доставки, что означает использование Travis CI, трубопроводов Bitbucket или Jenkins для создания изображения при изменении кода.

, то есть каждый раз, когда ваш код изменяется, ваша автоматическая сборка запускается и создается новое изображение Docker, которое будет содержать ваш исходный код. Затем вы можете запустить обновление развертывания, чтобы обновить Pods новым изображением.

Если у вас есть динамический контент, вы, скорее всего, ставите это постоянное хранилище, которое будет повторно установлено на обновление Pod.

+0

кристально чистые учебные пособия по кругу (предполагается, что вы находитесь на gce, как отмечено в вопросе) https://circleci.com/docs/continuous-deployment-with-google-container-engine/ и https: // circleci .com/документы/Google-авт / – Ben

0

Постарайтесь использовать непрерывную интеграцию и непрерывное развертывание. Вы можете использовать Jenkins в качестве сервера CI/CD и создавать некоторые задания для создания изображения, нажатия изображения и развертывания изображения.

Я рекомендую поместить исходный код в изображение докера, а не git repo. Вы также можете извлечь файлы конфигурации из изображения докеров. В kubernetes v1.2 он предоставляет новую функцию «ConfigMap», поэтому мы можем поместить файлы конфигурации в ConfigMap. При запуске контейнера файлы конфигурации будут установлены автоматически. Это очень удобно.