Статьи

Развертывание образов Docker в OpenShift

OpenShift — это платформа RedHat для облачной разработки как услуга ( PaaS ). Он использует Kubernetes в качестве оркестровки контейнеров (так что вы можете использовать OpenShift в качестве реализации Kubernetes ), но предоставляя некоторые функции, пропущенные в Kubernates, такие как автоматизация процесса сборки контейнеров, управление работоспособностью, хранение динамических ресурсов или многопользовательская поддержка, чтобы привести некоторые из них.

В этом посте я собираюсь объяснить, как вы можете развернуть образ Docker из Docker Hub в экземпляр OpenShift .

Важно отметить, что OpenShift предлагает другие способы создания и развертывания контейнера в его инфраструктуре, о чем вы можете прочитать на https://docs.openshift.com/enterprise/3.2/dev_guide/builds.html, но, как читалось в предыдущем В этом случае я собираюсь показать вам, как развернуть уже созданные образы Docker из Docker Hub .

Первое, что нужно сделать, это создать учетную запись в OpenShift Online . Это бесплатно и ради этого поста достаточно. Конечно, вы можете использовать любой другой подход OpenShift, например, OpenShift Origin .

После этого вам необходимо войти в кластер OpenShift . В случае OpenShift Online с использованием токена предоставляется:

1
oc login https://api.starter-us-east-1.openshift.com --token=xxxxxxx

Затем вам нужно создать новый проект внутри OpenShift .

1
oc new-project villains

Вы можете понимать проект как пространство имен Kubernetes с дополнительными функциями.

Затем давайте создадим новое приложение в предыдущем проекте на основе образа Docker, опубликованного в Docker Hub . Этот пример представляет собой приложение VertX, где вы можете получить преступления от нескольких вымышленных злодеев от Лекса Лютора до Гру.

1
oc new-app lordofthejars/crimes:1.0 --name crimes

В этом случае новое приложение под названием преступления создается на основе изображения lordofthejars / crime: 1.0 . После выполнения предыдущей команды создается новый модуль с предыдущим образом + служба + контроллер репликации.

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

1
oc expose svc crimes --name=crimeswelcome

Последний шаг — просто получить версию сервиса из браузера, в моем случае это было: http://crimeswelcome-villains.1d35.starter-us-east-1.openshiftapps.com/version уведомление о том, что вам нужно изменить публичный хост с тем, который сгенерирован вашим маршрутизатором, а затем добавьте версию . Вы можете найти общедоступный URL-адрес, перейдя на панель инструментов OpenShift , в верхней части определения модулей.

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

1
oc import-image crimes:1.1 --from=lordofthejars/crimes:1.1

С помощью предыдущей команды вы конфигурируете внутренний реестр OpenShift Docker, выпуская следующий образ Docker .

Затем давайте подготовим приложение, чтобы при применении следующей команды развертывания развертывался новый образ:

1
oc patch dc/crimes -p '{"spec": { "triggers":[ {"type": "ConfigChange", "type": "ImageChange" , "imageChangeParams": {"automatic": true, "containerNames":["crimes"],"from": {"name":"crimes:1.1"}}}]}}'

И, наконец, вы можете выполнить развертывание приложения, используя:

1
oc rollout latest dc/crimes

Через несколько секунд вы снова можете перейти по адресу http://crimeswelcome-villains.1d35.starter-us-east-1.openshiftapps.com/version (конечно, смените хост с вашим хостом), и вы получите следующую версию: 1.1.

Наконец, что происходит, если эта новая версия содержит ошибку, и вы хотите сделать откат развертывания до предыдущей версии? Просто запустите следующую команду:

1
oc rollback crimes-1

И предыдущая версия будет развернута снова, поэтому через несколько секунд вы можете снова перейти к / version и снова увидите версию 1.0.

Наконец, если вы хотите удалить приложение для запуска чистого кластера:

1
oc delete all --all

Как видите, развертывание образов контейнера из Docker Hub в OpenShift действительно легко. Обратите внимание, что существуют другие способы развертывания нашего приложения в OpenShift ( https://docs.openshift.com/enterprise/3.2/dev_guide/builds.html ), в этом посте я только что показал вам один.

Команды: https://gist.github.com/lordofthejars/9fb5f08e47775a185a9b1f80f4af7aff