OpenShift — платформа PaaS с открытым исходным кодом от Red Hat. OpenShift v3 (который должен быть выпущен в этом году) обеспечит целостный опыт работы с вашими микросервисами с использованием Docker и Kubernetes. В классическом стиле Red Hat вся работа выполняется в OpenShift Origin с открытым исходным кодом. Это также приведет к появлению следующего основного выпуска OpenShift Online и OpenShift Enterprise .
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
boot2docker
ssh
- Редактировать файл
1
sudo
vi
/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
.git
Cloning 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
.Создайте рабочее пространство:
010203040506070809101112131415161718192021make
release
origin>
make
release
rm
-rf _output Godeps
/_workspace/pkg
hack
/build-release
.sh
Unable to
find
image
'openshift/origin-release'
locally
Pulling repository openshift
/origin-release
c59f040a4054: Download complete
511136ea3c5a: Download complete
5b12ef8fd570: Download complete
dade6cb4530a: Download complete
bd195712b86c: Download complete
4aae29c1c846: Download complete
d8738da3ed4c: Download complete
7f7491063665: Download complete
b5cfa9eebdb5: Download complete
2f6297477756: Download complete
dc98bd93df2f: Download complete
1be2a7550a3d: Download complete
42fd088f8c55: Download complete
b6f6ad4012df: Download complete
Status: Downloaded newer image
for
openshift
/origin-release
:latest
- Проверьте рабочую область javaee7-hol , которая была преобразована в приложение Kubernetes:
12345678
origin> git clone https:
//github
.com
/bparees/javaee7-hol
Cloning 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
/origin
start --public-master=$(boot2docker ip)
The VM's Host only interface IP address is:
0ae85091e7ad7e85697575369f008273a6673d112b49860f5557a61d9e82d908
Примечание.
~/workspaces/openshift
монтируется как том/workspaces/openshift
в контейнере. Также установлены дополнительные тома.Убедитесь, что контейнер работает:
123~> docker
ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ae85091e7ad openshift
/origin
:beta1 "
/usr/bin/openshift
2 minutes ago Up 2 minutes openshift-origin
- Войдите в контейнер как:
12
openshift> docker
exec
-it `docker
ps
|
grep
origin:beta1 |
awk
'{ print $1 }'
`
bash
[root@boot2docker openshift]
#
- Установите реестр Docker в контейнере, введя следующую команду:
123
export
CERT_DIR=
/var/lib/openshift/openshift
.
local
.certificates
/openshift-client
&& \
export
KUBECONFIG=
/var/lib/openshift/openshift
.
local
.certificates
/admin/
.kubeconfig && \
cd
/workspaces/openshift/origin
&& hack
/install-registry
.sh
- Убедитесь, что реестр работает, получив список модулей:
123
[root@boot2docker origin]
# osc get pods
POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS
docker-registry-1-gfkbz 172.17.0.14 registry-container openshift
/docker-registry
boot2docker
/127
.0.0.1 deployment=docker-registry-1,deploymentconfig=docker-registry,name=registrypod,template=docker-registry-template Running
osc
является клиентским CLI OpenShift и позволяет создавать и управлять проектами OpenShift. Некоторые команды kubectl также могут использовать этот скрипт. - Убедитесь, что служба реестра работает. Обратите внимание, что фактический IP-адрес может отличаться:
12345
[root@boot2docker origin]
# osc get services
NAME LABELS SELECTOR IP PORT
docker-registry template=docker-registry-template name=registrypod 172.30.17.142 5001
kubernetes component=apiserver,provider=kubernetes <none> 172.30.17.2 443
kubernetes-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.json
test
Обновление веб-консоли теперь показывает:
При нажатии на «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 -
frontend
origin-jee-sample
wildfly-8-centos
jee-sample-build
frontend
mysql
database
- Веб-консоль автоматически обновляется и показывает:
Список запущенных сервисов можно рассматривать как:
Построить проект
- Запустите начальную сборку вашего проекта:
12
[root@boot2docker javaee7-hol]
# osc start-build -n test jee-sample-build
cee73fbc-b32d-11e4-a0f2-5282784576db
- Следите за сборками и ждите, пока статус перейдет в «завершено» (это может занять несколько минут):
123
[root@boot2docker javaee7-hol]
# osc get -n test builds
NAME TYPE STATUS POD
cee73fbc-b32d-11e4-a0f2-5282784576db STI Running build-cee73fbc-b32d-11e4-a0f2-5282784576db
Вы можете добавить флаг –watch для ожидания обновлений до завершения сборки:
12345[root@boot2docker javaee7-hol]
# osc get -n test builds --watch
NAME TYPE STATUS POD
cee73fbc-b32d-11e4-a0f2-5282784576db STI Running build-cee73fbc-b32d-11e4-a0f2-5282784576db
NAME TYPE STATUS POD
cee73fbc-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-5282784576db
2015-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-sample
2015-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 list
2015-02-13T03:11:07.275256699Z Pushing repository 172.30.17.142:5001
/test/origin-jee-sample
(1 tags)
2015-02-13T03:11:07.307836081Z Pushing
Buffering to disk07.314345045Z Buffering to disk 1.024 kB
2015-02-13T03:11:07.315452728Z Buffering to disk
Pushing-13T03:11:07.323973430Z Pushing [=========================> ] 512 B
/1
.024 kB 0
. . .
Pushing-13T03:13:05.932725921Z Pushing [================================================> ] 6.56 MB
/6
.704 MB 0
Pushing-13T03:13:05.942989165Z Pushing [=================================================> ] 6.635 MB
/6
.704 MB 0
Pushing-13T03:13:05.943025109Z Pushing [=================================================> ] 6.702 MB
/6
.704 MB 0
Pushing-13T03:13:05.947665528Z Pushing [==================================================>] 6.704 MB
/6
.704 MB
2015-02-13T03:13:05.953476634Z Image successfully pushed
2015-02-13T03:13:05.953476634Z Pushing tag
for
rev [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 pods
POD IP CONTAINER(S) IMAGE(S) HOST LABELS STATUS
build-cee73fbc-b32d-11e4-a0f2-5282784576db 172.17.0.17 sti-build openshift
/origin-sti-builder
:v0.3 boot2docker
/127
.0.0.1 <none> Succeeded
database-1-axe6d 172.17.0.16 jee-database mysql boot2docker
/127
.0.0.1 deployment=database-1,deploymentconfig=database,name=database,template=jee-sample Running
frontend-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 services
NAME LABELS SELECTOR IP PORT
frontend template=jee-sample name=frontend 172.30.17.115 8080
mysql 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> docker
ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c776cabb72f8 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_53f91f55
e7f87112c473 openshift
/origin-pod
:beta1
"/pod"
2 hours ago Up 2 hours k8s_POD.9cbfdefa_frontend-2-9ciae.
test
.api_12a0d77e-b3b5-11e4-81f6-5282784576db_64263b61
7e7579db5f82 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_376c0e63
74082d7791ec 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_f653c7fd
3e42dacb0da7 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_193dddf7
cb551c8cf7bf openshift
/origin-pod
:beta1
"/pod"
3 hours ago Up 3 hours k8s_POD.95f2def6_database-1-bqg8v.
test
.api_56093bac-b3b2-11e4-81f6-5282784576db_295fc320
e8719152df42 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_a6f4f83b
d3ecc5841c3b 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_ba53d62b
a506222fae91 openshift
/origin
:beta1 "
/usr/bin/openshift
3 hours ago Up 3 hours openshift-origin
И затем войдите в контейнер, связанный с интерфейсом, как:
1docker
exec
-it `docker
ps
|
grep
origin-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… . |