Я сошел со сцены в 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 снова, вы можете просто продвигать «новую» последнюю версию образа, и тестовая среда тоже будет обновляться.
Ссылка: | Продвижение изображений Docker в различных средах от нашего партнера по JCG Маркуса Эйзела (Markus Eisele) из блога « Разработка программного обеспечения для предприятий с использованием Java» . |