Статьи

Поднимитесь над облачной рекламой с OpenShift

Вы устали от запроса новой машины для вашего приложения? Вы устали от необходимости установки новой тестовой среды для своего приложения? Вы просто хотите сосредоточиться на мирной разработке своего приложения, не занимаясь при этом все время? Мы слышим вас. Мы тоже были там. Не бойтесь, OpenShift здесь!

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

Мы начнем с обзора того, что такое OpenShift, откуда он и как вы можете настроить клиентские инструменты на своей рабочей станции. Затем вы ознакомитесь с инструментами клиента, так как они относятся к начальному уровню OpenShift, который называется Express. Через несколько минут вы снова и снова сосредоточитесь на разработке своего приложения, развернув его для тестирования в OpenShift Express. Когда закончите, вы просто откажетесь от своей тестовой машины и продолжите. Когда вы освоите это, настанет время перейти на следующий уровень с OpenShift Flex. Это немного расширяет ваши возможности, так что вы можете делать больше со сложными приложениями и развертываниями, которым может потребоваться немного больше огневой мощи. После этого вы сможете полностью подняться в облако OpenShift, когда вы выберете, где вам это нужно и в любой момент. Вот как должна быть разработка, разработка без отвлекающих факторов.
Введение

В мире ИТ сейчас много шума из-за облака. Нет недостатка в акронимах для различных областей, таких как IaaS, PaaS и SaaS. OpenShift — это платформа как услуга (PaaS) от Red Hat, которая предоставляет вам платформу для запуска ваших приложений. Как разработчик, вы хотите рассматривать среду, в которой вы размещаете свои приложения, как просто предоставляемую услугу. Вы не хотите беспокоиться о том, как эта служба состоит из набора компонентов, как они настроены или где они работают. Вы просто хотите использовать этот сервис, который они предлагают для развертывания, разработки, тестирования и запуска вашего приложения. На этом базовом уровне OpenShift предоставляет платформу для ваших Java-приложений.

Сначала давайте кратко рассмотрим, откуда взялся OpenShift. Он начался в компании под названием Makara, которая базируется в Редвуд-Сити, штат Калифорния, и предлагает решения, позволяющие организациям развертывать, управлять, контролировать и масштабировать свои приложения как в частных, так и в публичных облаках. Red Hat приобрела Makara в ноябре 2010 года, и в следующем году они объединили технологии Red Hat в новый проект под названием OpenShift [1]. Они запустили первый проект, который изначально предоставляет два уровня обслуживания [2], решение для общего хостинга под названием Express и выделенное решение для хостинга, известное как Flex. Что делает это объединение технологий интересным для разработчика Java, так это то, что Red Hat включила платформу приложений следующего поколения на основе JBoss AS 7 в OpenShift [3]. Это обеспечивает молниеносную платформу приложений для всех ваших потребностей в разработке.

OpenShift Express

На сайте OpenShift говорится: «Express — это бесплатная облачная платформа для приложений Java, Perl, PHP, Python и Ruby. Это очень просто — ваша среда разработки также является средой развертывания: git push , «и вы в облаке». Это вызывает интерес, поэтому давайте попробуем и посмотрим, сможем ли мы поднять наше веб-приложение в облака. Для этого у нас есть веб-приложение jBPM Migration [4], которое мы будем использовать в качестве рабочего примера до конца этого упражнения.

Начало работы в Express хорошо документировано на веб-сайте как краткое руководство [5], к которому вы можете получить доступ после регистрации учетной записи Red Hat Cloud (rhcloud). Этот быстрый старт дает нам четыре шага, необходимые для подключения нашего приложения к сети, и начинается с установки необходимых клиентских инструментов. Это описано для Red Hat Enterprise Linux (RHEL), Fedora Linux, общих дистрибутивов Linux, Mac OS X и Windows. Для RHEL и Fedora это простая установка пакета, в остальном это установка гемов на основе Ruby, которую мы оставим читателю для применения к ее системе.

После установки клиентского инструментария существует несколько команд, основанных на форме rhc- <команда>. Доступен онлайн-интерфейс, но большинство разработчиков предпочитают средства управления, предлагаемые клиентскими инструментами командной строки, поэтому мы будем их использовать. Вот обзор того, что доступно с кратким описанием каждого:

  • rhc-create-domain — используется для привязки зарегистрированного пользователя rhcloud к домену в rhcloud. Вы можете иметь максимум один домен на одного зарегистрированного пользователя rhcloud.
  • rhc-create-app — используется для создания приложения для данного пользователя rhcloud, данной среды разработки (Java, Ruby, Python, Perl, PHP) и для данного домена rhcloud. Вы можете создать до пяти приложений для данного домена. Это создаст полный URI для вашего экземпляра rhcloud, настроит ваш экземпляр rhcloud на основе выбранной вами среды и по умолчанию создаст локальный проект git для выбранной вами среды разработки.
  • rhc-snapshot — используется для создания локальной резервной копии данного экземпляра rhcloud.
  • rhc-ctl-app — используется для управления данным приложением rhcloud. Здесь вы можете добавить базу данных, проверить состояние экземпляра, запустить, остановить и т. Д.
  • rhc-tail-files — используется для подключения к файлам журналов приложений rhcloud и выгрузки их в командную оболочку.
  • rhc-user-info — используется для просмотра данного пользователя rhcloud, определенных доменов и созданных приложений.
  • rhc-chk — используется для простой проверки конфигурации вашей установки.

Создайте свой домен

Чтобы начать работу с нашим демонстрационным приложением, нам нужно сделать несколько простых вещей, чтобы настроить экземпляр Express для размещения нашего Java-приложения, начиная с домена.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# We need to create the domain for Express to start setting up
# We need to create the domain for Express to start setting up
# our URL with the client tooling using
# rhc-create-domain -n domainname -l rhlogin
#
$ rhc-create-domain --help
 
Usage: /usr/bin/rhc-create-domain
Bind a registered rhcloud user to a domain in rhcloud.
 
  NOTE: to change ssh key, please alter your ~/.ssh/libra_id_rsa and
        ~/.ssh/libra_id_rsa.pub key, then re-run with --alter
 
  -n|--namespace   namespace   Namespace for your application(s) (alphanumeric - max 16 chars) (required)
  -l|--rhlogin     rhlogin     Red Hat login (RHN or OpenShift login with OpenShift Express access) (required)
  -p|--password    password    RHLogin password (optional, will prompt)
  -a|--alter                   Alter namespace (will change urls) and/or ssh key
  -d|--debug                   Print Debug info
  -h|--help                    Show Usage info
 
# So we setup one for our Java application. Note that we already have
# setup my ssh keys for OpenShift, if you have not yet done that,
# then it will walk you through it.
#
$ rhc-create-domain -n inthe -l [rhcloud-user] -p [mypassword]
 
OpenShift Express key found at /home/[homedir]/.ssh/libra_id_rsa.  Reusing...
Contacting https://openshift.redhat.com
Creation successful
 
You may now create an application.  Please make note of your local config file
in /home/[homedir]/.openshift/express.conf which has been created and populated for you.

Создайте свое приложение

Затем мы хотим создать наше приложение, что означает, что мы хотим сообщить OpenShift Express, какой стек нам нужен. Это делается с помощью клиентского инструмента rhc-create-app.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Let's take a look at the options available before we setup a Java
# instance for our application.
#
$ rhc-create-app --help
Contacting https://openshift.redhat.com to obtain list of cartridges...
 (please excuse the delay)
 
Usage: /usr/bin/rhc-create-app
Create an OpenShift Express app.
 
  -a|--app   application     Application name  (alphanumeric - max 16 chars) (required)
  -t|--type  type            Type of app to create (perl-5.10, jbossas-7.0, wsgi-3.2, rack-1.1, php-5.3) (required)
  -l|--rhlogin  rhlogin      Red Hat login (RHN or OpenShift login with OpenShift Express access) (Default: xxxxxxxxx)
  -p|--password  password    RHLogin password  (optional, will prompt)
  -r|--repo  path            Git Repo path (defaults to ./$app_name)
  -n|--nogit                 Only create remote space, don't pull it locally
  -d|--debug                 Print Debug info
  -h|--help                  Show Usage info
 
# It seems we can choose between several but we want the jboss-as7.0
# stack (called a cartridge). Provide a user, password and location
# for the git repo to be created called 'jbpmmigration', see the
# documentation for the defaults. Let's watch the magic happen!
#
$ rhc-create-app -a jbpmmigration -t jbossas-7.0 -l [rhcloud-user] -p [mypassword] -r /home/[homedir]/git-projects/jbpmmigration
 
Found a bug? Post to the forum and we'll get right on it.
    IRC: #openshift on freenode
    Forums: https://www.redhat.com/openshift/forums
 
Attempting to create remote application space: jbpmmigration
Contacting https://openshift.redhat.com
API version:    1.1.1
Broker version: 1.1.1
 
RESULT:
Successfully created application: jbpmmigration
 
Checking ~/.ssh/config
Contacting https://openshift.redhat.com
Found rhcloud.com in ~/.ssh/config... No need to adjust
Now your new domain name is being propagated worldwide (this might take a minute)...
Pulling new repo down
Warning: Permanently added 'jbpmmigration-inthe.rhcloud.com,50.17.167.44' (RSA) to the list of known hosts.
Confirming application jbpmmigration is available
  Attempt # 1
 
Success!  Your application is now published here:
 
      http://jbpmmigration-inthe.rhcloud.com/
 
The remote repository is located here:
 
    ssh://[email protected]/~/git/jbpmmigration.git/
 
To make changes to your application, commit to jbpmmigration/. Then run 'git push' to update your OpenShift Express space .

Если мы посмотрим на мой заданный путь к репо, то найдем git-репозиторий git-projects / jbpmmigration. Обратите внимание, что если вы решите изменить свое доменное имя, вам придется настроить файл конфигурации git-репозитория так, чтобы он отражал местоположение удаленного репозитория, см. Над строкой «ssh:… ..». Также страница уже доступна по адресу http://jbpmmigration-ishereon.rhcloud.com/ . Это всего лишь заставка, с которой можно начать, поэтому теперь мы переходим к развертыванию нашего существующего проекта миграции jBPM.

Сначала давайте посмотрим на README в нашем git-проекте, который дает некоторое представление о макете хранилища.

1
2
3
4
5
6
7
8
9
Repo layout
===========
deployments/ - location for built wars (Details below)
src/ - maven src structure
pom.xml - maven build file 
.openshift/ - location for openshift specific files
.openshift/config/ - location for configuration files such as standalone.xml (used to modify jboss config such as datasources)
../data - For persistent data (also in env var OPENSHIFT_DATA_DIR)
.openshift/action_hooks/build - Script that gets run every push, just prior to starting your app

В этой статье мы рассмотрим только каталоги развертывания и src. Вы можете просто вставить свои WAR-файлы, удалить файл pom.xml в корне проекта, и они будут автоматически развернуты. Если вы хотите развернуть разорванные файлы WAR, просто добавьте файл с именем .dodeploy, как указано в файле README. Для разработки реального проекта мы хотим протолкнуть наш код через обычную структуру каталогов src, и это также возможно при работе с предоставленным файлом pom.xml. Предоставленный файл README содержит все детали, необходимые для начала работы.

Наше демонстрационное приложение jbpmmigration также поставляется с файлом README, в котором содержатся инструкции по добавлению содержимого проекта в наш новый репозиторий git, поэтому мы запустим эти команды для загрузки файлов в наш локальный проект.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# placing our application into our express git repo.
#
$ cd jbpmmigration
$ git remote add upstream -m master git://github.com/eschabell/openshift-jbpmmigration.git
$ git pull -s recursive -X theirs upstream master
 
# now we need to push the content.
#
$ git push origin
 
[jbpmmigration maven build log output removed]
...
remote: [INFO] ------------------------------------------------------------------------
remote: [INFO] BUILD SUCCESS
remote: [INFO] ------------------------------------------------------------------------
remote: [INFO] Total time: 3.114s
remote: [INFO] Finished at: Mon Nov 14 10:26:57 EST 2011
remote: [INFO] Final Memory: 5M/141M
remote: [INFO] ------------------------------------------------------------------------
remote: ~/git/jbpmmigration.git
remote: Running .openshift/action_hooks/build
remote: Running .openshift/action_hooks/deploy
remote: Starting application...
remote: Done
remote: Running .openshift/action_hooks/post_deploy
To ssh://[email protected]/~/git/jbpmmigration.git/
   410a1c9..7ea0003  master -> master

Как вы можете видеть, мы теперь поместили наш контент в созданный нами экземпляр rhcloud, он развернул контент и запустил наш экземпляр. Теперь мы сможем найти наше приложение в Интернете по адресу http://jbpmmigration-ishereon.rhcloud.com/jbpmmigration_upload-0.4/ .

Тогда последним шагом будет то, что вы закончили работу над этим приложением и хотите освободить его для нового приложения. Затем вы можете сделать резервную копию с помощью инструмента клиента rhc-snapshot , а затем удалить свой экземпляр с помощью инструмента клиента rhc-ctl-app .

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
# Ready to get rid of our application now.
#
$ rhc-ctl-app -a jbpmmigration -l eschabell -c destroy
Password: ********
 
Contacting https://openshift.redhat.com
!!!! WARNING !!!! WARNING !!!! WARNING !!!!
You are about to destroy the jbpmmigration application.
 
This is NOT reversible, all remote data for this application will be removed.
Do you want to destroy this application (y/n): y
 
Contacting https://openshift.redhat.com
API version:    1.1.1
Broker version: 1.1.1
 
RESULT:
Successfully destroyed application: jbpmmigration

Как видите, действительно легко начать работу с пятью бесплатными экземплярами, с которыми вам приходится играть при разработке приложений. Вы можете заметить, что существуют ограничения: нет возможности использовать специальные интегрированные инструменты мониторинга, отсутствуют функции автоматического масштабирования и ограничен контроль конфигурации. Для тех, кто нуждается в большем количестве доступа и возможностей, взгляните на следующий шаг с OpenShift Flex [6].

Это завершает наш тур по проекту OpenShift Express, где мы предоставили вам представление о возможностях, которые ждут вас и ваши приложения. Было очень просто создать свой домен, определить потребности ваших приложений и импортировать ваш проект в предоставленный git-проект. После внесения изменений в новый экземпляр Express вы отключаетесь и тестируете разработку приложений в облаке. Это реально. Это легко. Теперь выйдите и поднимите ваш код выше облачного обмана.

Ссылки по теме:

  1. OpenShift, https://openshift.redhat.com .
  2. Обзор проекта OpenShift, https://openshift.redhat.com/app/platform .
  3. JBoss AS7 в облаке, http://www.jboss.org/openshift .
  4. Веб-приложение проекта миграции jBPM, https://github.com/eschabell/jbpmmigration_upload .
  5. Краткое руководство по OpenShift Express, https://openshift.redhat.com/app/express#quickstart .
  6. Краткое руководство по OpenShift Flex, https://openshift.redhat.com/app/flex#quickstart .

Ссылка: Поднимись над облачной рекламой с помощью OpenShift от нашего партнера по JCG Эрика Д. Шабелла в блоге Мысли о Middleware, Linux, программном обеспечении, велоспорте и других новостях… .