Поделиться через


Развертывание приложения из исходного кода в Azure Red Hat OpenShift

В этой статье описывается развертывание приложения в кластере Azure Red Hat OpenShift из исходного кода с использованием стратегии сборки "исходный код – образ" (S2I). Исходный код – образ (S2I) — это процесс сборки для создания воспроизводимых образов контейнеров из исходного кода. S2I создает готовые к использованию образы, вставляя исходный код в образ контейнера и позволяя контейнеру подготовить этот исходный код к выполнению. Можно задать, чтобы в OpenShift было создано приложение из исходного кода для развертывания, поэтому не требуется создавать контейнер вручную при каждом изменении. OpenShift может автоматически создавать и развертывать новые версии при получении уведомления об изменениях в исходном коде.

Подготовка к работе

Примечание.

В этой статье предполагается, что вы настроили секрет извлечения. Если у вас нет секрета извлечения для кластера, вы можете следовать документации по добавлению или обновлению секрета извлечения Red Hat.

Создание кластера

Следуйте инструкциям руководства Создание кластера Azure Red Hat OpenShift. Если вы решили установить и использовать интерфейс командной строки (CLI) локально, в этом руководстве необходимо использовать Azure CLI версии 2.6.0 или более поздней версии. Чтобы узнать, какая версия используется сейчас, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Подключение к кластеру

Для управления кластером Azure Red Hat OpenShift необходимо использовать oc, клиент командной строки OpenShift.

Примечание.

Мы рекомендуем установить командную строку OpenShift в Azure Cloud Shell и использовать ее для всех операций командной строки в этой статье. Откройте оболочку из shell.azure.com или выберите ссылку:

Button to launch Azure Cloud Shell

Следуйте инструкциям по установке интерфейса командной строки, чтобы получить учетные данные кластера и подключиться к кластеру с веб-консолью и Интерфейсом командной строки OpenShift.

После входа в систему появится сообщение о том, что вы используете проект default.

Login successful.

You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'

Using project "default".

Создание проекта

Для создания нового проекта с именем demoproject выполните следующую команду.

oc new-project demoproject

Выходные данные должны иметь следующий вид.

Now using project "demoproject" on server "https://api.wzy5hg7x.eastus.aroapp.io:6443".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app django-psql-example

to build a new example application in Python. Or use kubectl to deploy a simple Kubernetes application:

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node

Запуск веб-консоли

Чтобы узнать URL-адрес веб-консоли кластера, выполните следующую команду.

 az aro show \
    --name <cluster name> \
    --resource-group <resource group> \
    --query "consoleProfile.url" -o tsv

Полученный URL-адрес должен иметь следующий вид.

https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/

Перейдите по URL-адресу консоли в браузере и войдите с помощью учетных данных kubeadmin.

Azure Red Hat OpenShift login screen

Выберите перспективу Разработчик вместо перспективы Администратор в меню слева и выберите demoproject в списке проектов. Должна открыться страница Топология для проекта.

Azure Red Hat OpenShift project topology

Поскольку проект пустой, никаких рабочих нагрузок не наблюдается, и будут представлены различные варианты развертывания приложения.

Развертывание с использованием веб-консоли

Из представленных вариантов развертывания приложения выберите Из Git. После этого откроется страница Импорт из Git. Используйте https://github.com/sclorg/django-ex.git в качестве URL-адреса репозитория Git. Пример веб-приложения реализован с использованием языка программирования Python.

Azure Red Hat OpenShift project from Git

Примечание.

OpenShift определяет, что это проект Python, и выбирает соответствующий образ для инструмента сборки.

Прокрутите вниз до пункта Дополнительные параметры и убедитесь, что установлен флажок Создать маршрут к приложению. При выполнении этого действия будет создан маршрут OpenShift для доступа к службе путем присвоения внешнего доступного имени узла.

Azure Red Hat OpenShift project from Git - Route setup

Когда все готово, внизу страницы щелкните Создать. При этом будут созданы ресурсы для управления сборкой и развертыванием приложения. Затем будет выполнено перенаправление к обзору топологии проекта.

Azure Red Hat OpenShift project from Git - Topology

Обзор топологии обеспечивает визуальное представление развернутого приложения. В этом представлении можно увидеть общую структуру приложения.

Можно щелкнуть значок Git, чтобы перейти в репозиторий Git, из которого был создан исходный код приложения. Значок, отображаемый в левом нижнем углу, показывает состояние сборки приложения. Если щелкнуть этот значок, будет выполнен переход к разделу сведений о сборке. Если для приложения доступны маршруты, можно щелкнуть значок в правом верхнем углу, чтобы открыть URL-адрес созданного маршрута приложения.

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

Если щелкнуть значок приложения, отобразятся подробные сведения, как показано ниже.

Azure Red Hat OpenShift project from Git - Details

Просмотр журналов инструмента сборки

После запуска сборки нажмите ссылку Просмотреть журналы на панели Ресурсы.

Azure Red Hat OpenShift project from Git - Build logs

Это позволит отслеживать ход выполнения сборки. Образ для инструмента сборки, в данном случае Python, вставит исходный код приложения в окончательный образ перед тем, как отправить его во внутренний реестр образов OpenShift. Сборка будет успешно завершена, когда отобразится сообщение "Отправка выполнена успешно".

Доступ к приложению

После завершения сборки образа приложения будет выполнено развертывание.

Щелкните Топология в строке меню слева, чтобы вернуться к представлению топологии проекта. При создании приложения с использованием веб-консоли для приложения был автоматически создан Маршрут, который будет доступен за пределами кластера. URL-адрес, который можно использовать для доступа к приложению из веб-браузера, отображался на вкладке Ресурсы для приложения, которое было просмотрено ранее.

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

Azure Red Hat OpenShift project from Git - Browse app

Развертывание с использованием командной строки

Выше приведена информация о том, как развернуть приложение с использованием веб-консоли, теперь выполним развертывание того же веб-приложения, но на этот раз с использованием инструмента командной строки oc.

Выполните следующую команду, чтобы удалить проект и начать все заново.

oc delete project demoproject

Должно появиться сообщение с подтверждением об удалении demoproject.

project.project.openshift.io "demoproject" deleted

Создайте demoproject снова, выполнив следующую команду.

oc new-project demoproject

В рамках проекта создайте новое приложение из исходного кода на GitHub, указав инструмент сборки S2I для последней предоставленной версии Python.

oc new-app python:latest~https://github.com/sclorg/django-ex.git

Должны отобразиться выходные данные следующего вида.

--> Found image 8ec6f0d (4 weeks old) in image stream "openshift/python" under tag "latest" for "python:latest"

    Python 3.8
    ----------
   [...]

    Tags: builder, python, python38, python-38, rh-python38

    * A source build using source code from https://github.com/sclorg/django-ex.git will be created
      * The resulting image will be pushed to image stream tag "django-ex:latest"
      * Use 'oc start-build' to trigger a new build
    * This image will be deployed in deployment config "django-ex"
    * Port 8080/tcp will be load balanced by service "django-ex"
      * Other containers can access this service through the hostname "django-ex"

--> Creating resources ...
    imagestream.image.openshift.io "django-ex" created
    buildconfig.build.openshift.io "django-ex" created
    deploymentconfig.apps.openshift.io "django-ex" created
    service "django-ex" created
--> Success
    Build scheduled, use 'oc logs -f bc/django-ex' to track its progress.
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/django-ex'
    Run 'oc status' to view your app.

OpenShift будет использовать имя репозитория Git в качестве имени приложения. Просмотрите состояние сборки и развертывания, выполнив команду.

oc status

Когда сборка и развертывание завершены, отобразятся выходные данные следующего вида.

In project demoproject on server https://api.wzy5hg7x.eastus.aroapp.io:6443

svc/django-ex - 172.30.200.50:8080
  dc/django-ex deploys istag/django-ex:latest <-
    bc/django-ex source builds https://github.com/sclorg/django-ex.git on openshift/python:latest
    deployment #1 deployed about a minute ago - 1 pod


2 infos identified, use 'oc status --suggest' to see details.

Чтобы открыть приложение за пределами кластера OpenShift, необходимо создать маршрут, выполнив следующую команду.

oc expose service/django-ex

Необходимо получить подтверждение.

route.route.openshift.io/django-ex exposed

Получите URL-адрес, выполнив следующую команду.

oc get route django-ex

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

NAME        HOST/PORT                                              PATH   SERVICES    PORT       TERMINATION   WILDCARD
django-ex   django-ex-demoproject.apps.wzy5hg7x.eastus.aroapp.io          django-ex   8080-tcp                 None

Активация новой двоичной сборки

В процессе работы над приложением, вероятно, потребуется внести изменения и увидеть их в развернутом состоянии. Можно легко настроить веб-перехватчик, который будет запускать новую сборку и развертывание при каждой фиксации кода. Однако это может быть нежелательно, поскольку иногда требуется видеть изменения, не отправляя каждое изменение кода в репозиторий.

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

git clone https://github.com/sclorg/django-ex.git

Будет создан подкаталог django-ex, содержащий исходный код приложения.

Cloning into 'django-ex'...
remote: Enumerating objects: 980, done.
remote: Total 980 (delta 0), reused 0 (delta 0), pack-reused 980
Receiving objects: 100% (980/980), 276.23 KiB | 4.85 MiB/s, done.
Resolving deltas: 100% (434/434), done.

Перейдите в новый подкаталог.

cd django-ex

Откройте встроенный редактор Azure Cloud Shell.

code welcome/templates/welcome/index.html

Прокрутите вниз и измените строку Welcome to your Django application on OpenShift на Welcome to Azure Red Hat OpenShift. Сохраните файл и закройте редактор через меню ... в правом верхнем углу.

Azure Red Hat OpenShift project from Git - Edit application in Azure Cloud Shell editor

Запустите новую сборку, выполнив следующую команду.

oc start-build django-ex --from-dir=. --wait

При передаче флага --from-dir=. командная строка OpenShift загрузит исходный код из указанного каталога, а затем инициирует процесс сборки и развертывания. Необходимо получить результат, аналогичный приведенному ниже, и через несколько минут сборка должна завершиться.

Uploading directory "." as binary input for the build ...
.
Uploading finished
build.build.openshift.io/django-ex-2 started

При обновлении браузера с помощью приложения отобразится обновленное название.

Azure Red Hat OpenShift project from Git - Browse updated app

Очистка ресурсов

После завершения работы с приложением можно запустить следующую команду, чтобы удалить проект.

oc delete project demoproject

Также можно удалить кластер, следуя инструкциям в документе Руководство: удаление кластера Azure Red Hat OpenShift 4.

Следующие шаги

В этом руководстве вы ознакомились с такой информацией:

  • Создание проекта
  • Развертывание приложения из исходного кода с использованием веб-консоли
  • Развертывание приложения из исходного кода с использованием инструмента командной строки OpenShift
  • Активация двоичной сборки с использованием инструмента командной строки OpenShift

Дополнительные сведения по созданию и развертыванию приложения с применением стратегии "исходный код – образ"и других стратегий сборки.