Статьи

Продвижение образов Docker в разных средах

Я сошел со сцены в WJAX в Мунке всего пару минут назад. И пока мой коллега Ян говорил об этой удивительной истории успеха клиентов AMADEUS , я имел удовольствие немного основать свои мысли и идеи и рассказать о том, как DevOps можно сделать с помощью OpenShift и Docker Images с точки зрения разработчиков.

Микросервисы и DevOps

Если у вас есть сотни или даже больше контейнеров, работающих в производстве, все уже не просто операционная проблема. Не только потому, что сегодня все участвуют в движении DevOps, но главным образом потому, что мы должны создавать свои приложения по-разному, если мы хотим получать выгоду от синергии, обеспечиваемой неизменяемыми контейнерами и контейнерами без состояния. Пример, который я использовал в своем выступлении, был почти таким же, как и раньше в моем блоге . Единый сервис WidlFly Swarm JAX-RS, который делает немного больше, чем просто распечатывает некоторый JSON, который содержит переменную среды и метку времени. Дело в том, что серии не хватало, это постановка в разных средах. И хотя на OpenShift есть несколько великолепных блогов Вира Мучанди, они все предполагают, что вы используете OpenShift для создания изображений и приложений.

Давайте придерживаться простого докера

Я хотел показать, насколько это просто при использовании простых изображений Docker. Итак, при условии, что у вас очень простая настройка среды:

окружающая среда
У нас есть среда разработки, которую разработчики используют для добавления своих обновленных изображений. И еще одна среда QA, где тестеры сходят с ума и, вероятно, многие другие. Пример, который я показал, только что использовал два упомянутых. Это будет в значительной степени одинаково для всех остальных добавляемых вами env. Давайте посмотрим, как это работает с Maven, Docker и OpenShift

Препараты

В этом случае я использовал скрытое изображение fabric8. Только потому, что они всегда используют последние сборки OpenShift, и я хотел показать новые визуализации, которые уже есть в HEAD. Итак, установите vagrant и двоичные файлы OpenShift и запустите бродячую машину openshift. Я немного подправил настройки памяти и процессора до 8 ГБ и 4 ядер. Убедитесь, что вы открыли внутренний реестр Docker, как показано в предыдущем посте . Если вы установите соответствующую переменную DOCKER_HOST, вы можете запустить пошаговое руководство. Запись демо дает вам полное шоу примерно за 10 минут. И да, в этом нет звука.

Индивидуальные шаги

Иногда легче просто выполнить отдельные шаги самостоятельно. Они здесь:

Войдите в OpenShift как администратор с паролем admin

1
oc login https://vagrant.f8:8443 --insecure-skip-tls-verify=true

Создайте свой проект на основе Maven (возможно, просто используйте git clone и используйте его)

1
mvn clean install

Запустите местный жиросжарник WildFly Swarm

1
java -jar target/swarm-sample-0.0.1-SNAPSHOT-swarm.jar

Укажите в браузере адрес http: // localhost: 8080 / api / v1 / service и убедитесь, что все работает как положено.

Прежде чем создавать образ Docker из своего приложения, обязательно извлеките образ jboss / base-jdk: 8. Я не знаю точно, почему, но у плагина, похоже, есть проблема с его решением.

1
docker pull jboss/base-jdk:8

Теперь создайте свой образ Docker

1
mvn clean install docker:build

Посмотрите на полученный Dockerfile

1
cat target/docker/development/swarm-sample/latest/build/Dockerfile

Создайте новый проект разработки в OpenShift. На данный момент это не имеет значения, если это проект в том же экземпляре или в другой среде. Поскольку я собирался продемонстрировать это локально на своем ноутбуке, решение было простым. Сравните публикацию Veers сверху, если вы хотите научиться работать с физическими средами.

1
oc new-project development --display-name="WildFly Swarm Development Project"

Добавить права на просмотр и редактирование для пользователей dev1 и test1

1
2
oc policy add-role-to-user edit dev1
oc policy add-role-to-user view test1

Создать проект QA в OpenShift

1
oc new-project test --display-name="WildFly Swarm QA Project"

Предоставьте пользователю test1 права на редактирование:

1
oc policy add-role-to-user edit test1

Добавьте роли в системные учетные записи, чтобы иметь возможность извлекать образы из QA из среды разработки

1
 oc policy add-role-to-group system:image-puller system:serviceaccounts:test -n development

Войдите в систему как dev1 с паролем dev1 и получите свой токен доступа

1
2
oc login https://vagrant.f8:8443 -u dev1
oc whoami -t

Измените токен в разделе authConfig вашего pom.xml . Теперь вы готовы отправить свой образ DoF WildFly Swarm в реестр OpenShift Docker.

1
mvn docker:push

Создать приложение из изображения

1
oc new-app --docker-image=development/swarm-sample:latest

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

1
oc expose service swarm-sample --hostname=wildfly-swarm.vagrant.f8

Проверьте http: //wildfly-swarm.vagrant.f8/api/v1/service и посмотрите, все ли работает.

Получите потоки изображений OpenShift из изображения

1
2
oc get is
oc describe is

Отметить новое изображение из последних, чтобы продвигать

1
oc tag  172.30.238.11:5000/development/swarm-sample@sha256:6a53f0d875d75459eca6192e83cf4f8d879bb7cf9260e2a8addf412745b434fc development/swarm-sample:promote

Войдите как пользователь test1 с паролем test1 и переключитесь на тестовый проект

1
2
oc login -u test1
oc project test

Создать приложение из продвигаемого изображения

1
oc new-app development/swarm-sample:promote

Выставить сервис как маршрут

1
oc expose service swarm-sample --hostname=wildfly-swarm-test.vagrant.f8

Проверьте, можете ли вы получить доступ: http: //wildfly-swarm-test.vagrant.f8/api/v1/service

Если вы снова войдете в систему как dev1, пройдете полный цикл разработки и измените приложение, создадите новый образ и снова его загрузите, вы увидите, что обновляется только среда разработки, в то время как среда QA все еще остается в продвигаемом теге. Когда разработчики захотят обновить QA снова, вы можете просто продвигать «новую» последнюю версию образа, и тестовая среда тоже будет обновляться.