
OpenShift v3 использует новый стек платформы, который использует множество проектов сообщества, в которых участвует Red Hat, таких как Fedora, Centos, Docker, Project Atomic, Kubernetes и OpenStack. Платформа OpenShift v3, объединяющая Docker, Kubernetes, Atomic и More, подробно объясняет этот стек платформы.
Этот технический совет объяснит, как начать работу с OpenShift v3, давайте начнем!
Начало работы с OpenShift v3
Предварительно собранные двоичные файлы для OpenShift v3 можно загрузить с Origin на GitHub . Однако самый простой способ начать работу — запустить OpenShift Origin в качестве контейнера Docker.
Жизненный цикл приложения OpenShift предоставляет полную информацию о том, что требуется для запуска образца приложения с нуля. Этот блог будет использовать эти шаги и адаптировать их для запуска с помощью boot2docker VM на Mac. И в этом процессе мы также развернем приложение Java EE 7 на WildFly, которое будет обращаться к базе данных в отдельном контейнере MySQL.
Вот наша схема развертывания:
- WildFly и MySQL работают на отдельных модулях.
- Каждый из них упакован в контроллер репликации для упрощенного масштабирования.
- Каждый контроллер репликации публикуется как служба.
- WildFly общается со службой MySQL, а не напрямую со стручком. Это важно, так как блоки и назначенные им IP-адреса эфемерны.
Давайте начнем!
Настроить Docker Daemon
- Настройте демон docker на своем хосте так, чтобы он доверял службе реестра docker, которую вы запускаете. Этот реестр будет использоваться для отправки образов для цикла сборки / тестирования / развертывания.
- Войдите в boot2docker VM как:
1
boot2dockerssh - Редактировать файл
1
sudovi/var/lib/boot2docker/profileЭто будет пустой файл.
- Добавьте следующую пару имя / значение:
1
EXTRA_ARGS="--insecure-registry 172.30.17.0/24"Сохраните файл и выйдите из редактора.
Это даст указание демону docker доверять любому реестру Docker в подсети 172.30.17.0/24.
- Войдите в boot2docker VM как:
Ознакомьтесь с примерами OpenShift v3 и Java EE 7
- Загрузите и установите Go и настройте переменную среды GOPATH и PATH . Проверьте исходный каталог OpenShift:
12345678
openshift> git clone https://github.com/openshift/origin.gitCloning into'origin'...remote: Counting objects: 21451,done.remote: Compressing objects: 100% (76/76),done.remote: Total 21451 (delta 26), reused 15 (delta 1)Receiving objects: 100% (21451/21451), 35.11 MiB | 1.24 MiB/s,done.Resolving deltas: 100% (11392/11392),done.Checking connectivity...done.Обратите внимание на каталог, где его выписали. В этом случае это ~
/workspaces/openshift.Создайте рабочее пространство:
010203040506070809101112131415161718192021makereleaseorigin>makereleaserm-rf _output Godeps/_workspace/pkghack/build-release.shUnable tofindimage'openshift/origin-release'locallyPulling repository openshift/origin-releasec59f040a4054: Download complete511136ea3c5a: Download complete5b12ef8fd570: Download completedade6cb4530a: Download completebd195712b86c: Download complete4aae29c1c846: Download completed8738da3ed4c: Download complete7f7491063665: Download completeb5cfa9eebdb5: Download complete2f6297477756: Download completedc98bd93df2f: Download complete1be2a7550a3d: Download complete42fd088f8c55: Download completeb6f6ad4012df: Download completeStatus: Downloaded newer imageforopenshift/origin-release:latest - Проверьте рабочую область javaee7-hol , которая была преобразована в приложение Kubernetes:
12345678
origin> git clone https://github.com/bparees/javaee7-holCloning into'javaee7-hol'...remote: Counting objects: 1159,done.remote: Compressing objects: 100% (49/49),done.remote: Total 1159 (delta 35), reused 37 (delta 21)Receiving objects: 100% (1159/1159), 20.35 MiB | 1.78 MiB/s,done.Resolving deltas: 100% (605/605),done.Checking connectivity...done.Это также делается в каталоге
~/workspaces/openshift.
Запустите контейнер OpenShift v3
- Запустите OpenShift Origin как контейнер Docker:
123456789
~> docker run -d --name"openshift-origin"--net=host --privileged \-v/var/run/docker.sock:/var/run/docker.sock \-v/Users/arungupta/workspaces/openshift:/workspaces/openshift\-v/usr/local/bin/docker:/usr/bin/docker\openshift/originstart --public-master=$(boot2docker ip)The VM's Host only interface IP address is:0ae85091e7ad7e85697575369f008273a6673d112b49860f5557a61d9e82d908Примечание.
~/workspaces/openshiftмонтируется как том/workspaces/openshiftв контейнере. Также установлены дополнительные тома.Убедитесь, что контейнер работает:
123~> dockerpsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0ae85091e7ad openshift/origin:beta1 "/usr/bin/openshift2 minutes ago Up 2 minutes openshift-origin - Войдите в контейнер как:
12
openshift> dockerexec-it `dockerps|greporigin:beta1 |awk'{ print $1 }'`bash[root@boot2docker openshift]# - Установите реестр Docker в контейнере, введя следующую команду:
123
exportCERT_DIR=/var/lib/openshift/openshift.local.certificates/openshift-client&& \exportKUBECONFIG=/var/lib/openshift/openshift.local.certificates/admin/.kubeconfig && \cd/workspaces/openshift/origin&& hack/install-registry.sh - Убедитесь, что реестр работает, получив список модулей:
123
[root@boot2docker origin]# osc get podsPOD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUSdocker-registry-1-gfkbz 172.17.0.14 registry-container openshift/docker-registryboot2docker/127.0.0.1 deployment=docker-registry-1,deploymentconfig=docker-registry,name=registrypod,template=docker-registry-template Runningoscявляется клиентским CLI OpenShift и позволяет создавать и управлять проектами OpenShift. Некоторые команды kubectl также могут использовать этот скрипт. - Убедитесь, что служба реестра работает. Обратите внимание, что фактический IP-адрес может отличаться:
12345
[root@boot2docker origin]# osc get servicesNAME LABELS SELECTOR IP PORTdocker-registry template=docker-registry-template name=registrypod 172.30.17.142 5001kubernetes component=apiserver,provider=kubernetes <none> 172.30.17.2 443kubernetes-ro component=apiserver,provider=kubernetes <none> 172.30.17.1 80 - Убедитесь, что служба реестра доступна:
1
curl `osc get services docker-registry -o template --template="{{ .portalIP}}:{{ .port }}"`И посмотрите на результат:
1"docker-registry server (dev) (v0.9.0)"
Доступ к веб-консоли OpenShift v3
- Сервер OpenShift Origin запущен и работает. Узнайте IP-адрес хоста, используя IP-адрес
boot2docker ipи откройте http: // <IP-адреса хоста boot2docker>: 8444 для просмотра веб-консоли OpenShift в вашем браузере. Например, консоль доступна по адресу https://192.168.59.103:8444 / на этой машине.Вам потребуется, чтобы браузер принял сертификат по адресу
https://<host>:8444прежде чем консоль сможет обратиться к API OpenShift. Конечно, это не было бы необходимо с законным сертификатом. - Откроется экран входа в систему OpenShift Origin. Введите имя пользователя / пароль как admin / admin:
и нажмите на кнопку «Войти». Веб-консоль по умолчанию выглядит следующим образом:
Создать проект OpenShift v3
- Используйте
project.jsonиз github.com/openshift/origin/blob/master/examples/sample-app/project.json в контейнере OpenShift v3 и создайте тестовый проект следующим образом:12[root@boot2docker origin]# osc create -f /workspaces/openshift/origin/examples/sample-app/project.jsontestОбновление веб-консоли теперь показывает:
При нажатии на «OpenShift 3 Sample» отображается пустое описание проекта:
- Запрос на создание шаблона приложения:
123456789
[root@boot2docker openshift]# cd javaee7-hol/[root@boot2docker javaee7-hol]# osc process -n test -f application-template-jeebuild.json | osc create -n test -f -frontendorigin-jee-samplewildfly-8-centosjee-sample-buildfrontendmysqldatabase - Веб-консоль автоматически обновляется и показывает:
Список запущенных сервисов можно рассматривать как:
Построить проект
- Запустите начальную сборку вашего проекта:
12
[root@boot2docker javaee7-hol]# osc start-build -n test jee-sample-buildcee73fbc-b32d-11e4-a0f2-5282784576db - Следите за сборками и ждите, пока статус перейдет в «завершено» (это может занять несколько минут):
123
[root@boot2docker javaee7-hol]# osc get -n test buildsNAME TYPE STATUS PODcee73fbc-b32d-11e4-a0f2-5282784576db STI Running build-cee73fbc-b32d-11e4-a0f2-5282784576dbВы можете добавить флаг –watch для ожидания обновлений до завершения сборки:
12345[root@boot2docker javaee7-hol]# osc get -n test builds --watchNAME TYPE STATUS PODcee73fbc-b32d-11e4-a0f2-5282784576db STI Running build-cee73fbc-b32d-11e4-a0f2-5282784576dbNAME TYPE STATUS PODcee73fbc-b32d-11e4-a0f2-5282784576db STI Complete build-cee73fbc-b32d-11e4-a0f2-5282784576dbПодождите, пока столбец
STATUSпокажетComplete. Подготовка всех компонентов (WIldFly, MySQL, Java EE 7) займет несколько минут. По сути, их новые образы Docker создаются и помещаются в локальный реестр, который был запущен ранее.Нажмите
Ctrl+Cчтобы остановить просмотр сборок после того, как статус изменится наComplete. - Полный журнал сборки можно увидеть как:
01020304050607080910111213141516171819
[root@boot2docker javaee7-hol]# osc build-logs -n test cee73fbc-b32d-11e4-a0f2-5282784576db2015-02-13T03:10:07.065718606Z Cloning into'/tmp/sti552730161/upload/src'...2015-02-13T03:11:03.184576532Z I0213 03:11:03.184326 1 build.go:160] Successfully built 172.30.17.142:5001/test/origin-jee-sample2015-02-13T03:11:07.261489310Z The push refers to a repository [172.30.17.142:5001/test/origin-jee-sample] (len: 1)2015-02-13T03:11:07.261489310Z Sending image list2015-02-13T03:11:07.275256699Z Pushing repository 172.30.17.142:5001/test/origin-jee-sample(1 tags)2015-02-13T03:11:07.307836081Z PushingBuffering to disk07.314345045Z Buffering to disk 1.024 kB2015-02-13T03:11:07.315452728Z Buffering to diskPushing-13T03:11:07.323973430Z Pushing [=========================> ] 512 B/1.024 kB 0. . .Pushing-13T03:13:05.932725921Z Pushing [================================================> ] 6.56 MB/6.704 MB 0Pushing-13T03:13:05.942989165Z Pushing [=================================================> ] 6.635 MB/6.704 MB 0Pushing-13T03:13:05.943025109Z Pushing [=================================================> ] 6.702 MB/6.704 MB 0Pushing-13T03:13:05.947665528Z Pushing [==================================================>] 6.704 MB/6.704 MB2015-02-13T03:13:05.953476634Z Image successfully pushed2015-02-13T03:13:05.953476634Z Pushing tagforrev [b0a7868377c1] on {http://172.30.17.142:5001/v1/repositories/test/origin-jee-sample/tags/latest} - Проверьте, запущены ли модули приложения:
12345
[root@boot2docker javaee7-hol]# osc get -n test podsPOD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUSbuild-cee73fbc-b32d-11e4-a0f2-5282784576db 172.17.0.17 sti-build openshift/origin-sti-builder:v0.3 boot2docker/127.0.0.1 <none> Succeededdatabase-1-axe6d 172.17.0.16 jee-database mysql boot2docker/127.0.0.1 deployment=database-1,deploymentconfig=database,name=database,template=jee-sample Runningfrontend-1-pkcia 172.17.0.20 jee-sample 172.30.17.142:5001/test/origin-jee-sample:b0a7868377c10a50b40019be70e22d040b9a2bb2d87fa3932b700494e50a4de6 boot2docker/127.0.0.1 deployment=frontend-1,deploymentconfig=frontend,name=frontend,template=jee-sample RunningОбратите внимание, что теперь работают модули «frontend» и «database».
- Определить IP услуги «интерфейс»:
1234
[root@boot2docker javaee7-hol]# osc get -n test servicesNAME LABELS SELECTOR IP PORTfrontend template=jee-sample name=frontend 172.30.17.115 8080mysql template=jee-sample name=database 172.30.17.75 3306 - Откройте приложение по адресу http: // <IP-адрес «внешнего интерфейса»>: 8080 / movieplex7-1.0-SNAPSHOT должно работать. Обратите внимание, что IP-адрес может (скорее всего, будет) различаться. В этом случае это будет http://172.30.17.115:8080/moviexplex7-1.0-SNAPSHOT. Приложение пока недоступно, так как для настройки брандмауэра на Mac требуется дополнительная отладка, когда OpenShift v3 используется в качестве контейнера Docker. , Пока мы не выясним это, вы можете сделать
docker psв вашей виртуальной машине boot2docker, чтобы увидеть список всех контейнеров:0102030405060708091011origin> dockerpsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESc776cabb72f8 172.30.17.17:5001/test/origin-jee-sample:91d1b5a5ed58e1642aafbd652eba0b7eae3a0ac08c17729d205ae88204f64449"/tmp/scripts/run"2 hours ago Up 2 hours k8s_jee-sample.7af25557_frontend-2-9ciae.test.api_12a0d77e-b3b5-11e4-81f6-5282784576db_53f91f55e7f87112c473 openshift/origin-pod:beta1"/pod"2 hours ago Up 2 hours k8s_POD.9cbfdefa_frontend-2-9ciae.test.api_12a0d77e-b3b5-11e4-81f6-5282784576db_64263b617e7579db5f82 openshift/origin-pod:beta1"/pod"2 hours ago Up 2 hours k8s_POD.123cbdd6_build-e075047d-b3b4-11e4-81f6-5282784576db.test.api_e07bcdb2-b3b4-11e4-81f6-5282784576db_376c0e6374082d7791ec openshift/origin-pod:beta1"/pod"2 hours ago Up 2 hours k8s_POD.123cbdd6_build-76364bb6-b3b2-11e4-81f6-5282784576db.test.api_7639e3a5-b3b2-11e4-81f6-5282784576db_f653c7fd3e42dacb0da7 mysql:latest "/entrypoint.sh mysq 3 hours ago Up 3 hours k8s_jee-database.f12628ae_database-1-bqg8v.test.api_56093bac-b3b2-11e4-81f6-5282784576db_193dddf7cb551c8cf7bf openshift/origin-pod:beta1"/pod"3 hours ago Up 3 hours k8s_POD.95f2def6_database-1-bqg8v.test.api_56093bac-b3b2-11e4-81f6-5282784576db_295fc320e8719152df42 openshift/docker-registry:latest "\"sh -c 'echo\"$OP 3 hours ago Up 3 hours k8s_registry-container.4e338487_docker-registry-1-bt49s.default.api_177a691c-b3b0-11e4-81f6-5282784576db_a6f4f83bd3ecc5841c3b openshift/origin-pod:beta1"/pod"3 hours ago Up 3 hours k8s_POD.8a29deef_docker-registry-1-bt49s.default.api_177a691c-b3b0-11e4-81f6-5282784576db_ba53d62ba506222fae91 openshift/origin:beta1 "/usr/bin/openshift3 hours ago Up 3 hours openshift-originИ затем войдите в контейнер, связанный с интерфейсом, как:
1dockerexec-it `dockerps|greporigin-jee-sample |awk'{ print $1 }'`bashЭто войдет в контейнер Docker, где вы сможете проверить, успешно ли развернуто приложение, введя следующую команду:
1bash-4.2$ curl http://localhost:8080/movieplex7-1.0-SNAPSHOT/Это распечатает страницу
index.htmlиз приложения, лицензия которого находится вверху, а остальная часть страницы после этого.Теперь, когда проблема с брандмауэром решена, эта страница будет доступна и на хосте Mac.
Подведем итоги:
- Клонировал образец репозитория OpenShift Origin и Java EE 7
- Запустил OpenShift v3 в качестве контейнера Docker
- Загрузил веб-консоль OpenShift v3
- Создать проект OpenShift v3
- Загруженный шаблон приложения Java EE 7
- Запустил сборку, в которой развернуто приложение
- Вот несколько советов по устранению неполадок, если вы застряли.
Наслаждайтесь!
| Ссылка: | OpenShift v3: начало работы с Java EE 7 с использованием WildFly и MySQL от нашего партнера по JCG Аруна Гупта из блога Miles to go 2.0… . |








