Швидкий старт кастомного docker-контейнера на платформі OpenShift

З'явилася необхідність створити хмарний сервіс і для реалізації цього проекту було обрано open source рішення OpenShift. Після успішного проходження Getting Started і деплоя HelloWorld, виникли несподівані труднощі: офіційна документація вимагає детального вивчення для вирішення такої простої задачі, як підняти свій готовий контейнер, з довільним змістом. Довелося трохи розібратися і нижче просте готове керівництво. Мається на увазі, що читач знайомий з docker, т. к. пояснень його команд в даному мануалі немає.

Встановлюємо docker
Досить скористатися офіційною документацією і зробити все по інструкції. Не повинно виникнути проблем.

Створюємо docker-image зі своїм додатком
Я зібрав свій image з додатком Java написаним з використанням фреймворку Spring-Cloud. Це реалізація Config-Server. Назва image у мене буде config-server.

Встановлюємо OpenShift
Для своїх цілей я вибрав установку через запуск docker-контейнера (для dev вистачить). Тут все просто (вся інформація наведена для Linux):
$ docker run -d --name "origin" \
--privileged --pid=host --net=host \
-v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys -v /var/lib/docker:/var/lib/docker:rw \
-v /var/lib/origin/openshift.local.volumes:/var/lib/origin/openshift.local.volumes \
openshift/origin start

Після того, як контейнер підніметься, буде доступний web-інтерфейс за адресою
https://localhost:8443

image

Авторізуємось (login: admin password: admin).
image

Створюємо проект OpenShift
Є 2 шляхи: з командного рядка і через web-інтерфейс. Я рекомендую перший шлях, тим більше, що все одно наступні пункти необхідно виконувати з командного рядка. Залишимо web-інтерфейс для моніторингу.
Запустіть окреме вікно терміналу і не закривайте його до кінця всіх операцій, використовуйте це вікно тільки для роботи з сервісом OpenShift.

Так ми потрапляємо в запущений контейнер OpenShift:
$ docker exec -it origin bash

Авторізуємось у сервісу OpenShift (login: admin password: admin)
$ oc login

Створюємо проект
$ oc new-project config-server --description="Spring Cloud Config-Server" --display-name="Main config-server"

image
Створюємо pod.json
$ vi pod.json

всередині:
{
"kind": "Pod",
"apiVersion": "v1",
"metadata": {
"name": "config-server",
"creationTimestamp": null,
"labels": {
"name": "config-server"
}
},
"spec": {
"containers": [
{
"name": "config-server",
"image": "config-server",
"ports": [
{
"containerPort": 8888,
"protocol": "TCP"
}
],
"resources": {},
"volumeMounts": [
{
"name":"tmp",
"mountPath":"/tmp"
}
],
"terminationMessagePath": "/dev/termination-log",
"imagePullPolicy": "IfNotPresent",
"capabilities": {},
"securityContext": {
"capabilities": {},
"privileged": false
}
}
],
"volumes": [
{
"name":"tmp",
"emptyDir": {}
}
],
"restartPolicy": "Always",
"dnsPolicy": "ClusterFirst",
"serviceAccount": ""
},
"status": {}
}

Особливу увагу приділіть такими елементами:
«image»: «config-server» (має збігатися з назвою нашого docker-image)
«containerPort»: 8888 (порт, який буде відкритий для доступу до вашого додатком)
«protocol»: «TCP» (протокол)
$ oc create -f pod.json

image

Тепер потрібно подивитися в web-консоль, щоб переконатися, що все в порядку (Browse -> Pods -> config-server):
image

Як видно з скріншоту, мій сервіс доступний за адресою:
http://172.17.0.2:8888

Якщо зупинимося на цьому продукті і продовжимо розробку, можливо буде продовження публікацій з цієї серії.

Спасибі за увагу!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.