Гид по технологиям

Установка OpenShift Origin (OKD) на Ubuntu 20.04

• 5 min read • DevOps • Обновлено 25 Nov 2025
Установка OpenShift Origin на Ubuntu 20.04
Установка OpenShift Origin на Ubuntu 20.04

Иллюстрация OpenShift

OpenShift — бесплатная, открытая Paac-платформа от Red Hat (сообщественный дистрибутив Kubernetes), которая позволяет разработчикам разворачивать приложения в облаке и ускорять цикл разработки и релизов. В статье описан пошаговый процесс установки OpenShift Origin (OKD) на сервер с Ubuntu 20.04 и базовые операции: запуск кластера, создание проекта, деплой и проверка внешнего доступа.

Важно: это руководство адресовано однoузловой локальной или тестовой инсталляции OKD (OpenShift Origin). Для production-инсталляций изучите официальную документацию OpenShift/Red Hat и требования к HA, сетям и безопасности.

Требования

  • Сервер с Ubuntu 20.04.
  • Настроенный root-пароль или sudo-доступ.
  • Доступ в интернет для скачивания пакетов и образов.

Установка Docker CE

Для запуска сервисов OKD в контейнерах потребуется Docker. В Ubuntu 20.04 Docker CE доступен в репозиториях по умолчанию. Выполните на сервере:

apt-get install docker.io -y

Запустите Docker и добавьте автозапуск:

systemctl start docker  
systemctl enable docker

Проверить статус службы можно командой:

systemctl status docker

Вы увидите примерно такой вывод (приведён результат работы systemd для докера):

? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-29 12:25:47 UTC; 2s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 48433 (dockerd)
      Tasks: 10
     Memory: 36.5M
     CGroup: /system.slice/docker.service
             ??48433 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.215078550Z" level=warning msg="Your kernel does not support swap memory l> 
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.215139097Z" level=warning msg="Your kernel does not support cgroup blkio >
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.215169580Z" level=warning msg="Your kernel does not support cgroup blkio >
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.215721944Z" level=info msg="Loading containers: start."
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.418058547Z" level=info msg="Default bridge (docker0) is assigned with an >
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.515158041Z" level=info msg="Loading containers: done."
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.545778830Z" level=info msg="Docker daemon" commit=afacb8b7f0 graphdriver(>
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.546068892Z" level=info msg="Daemon has completed initialization"
May 29 12:25:47 ubuntu2004 dockerd[48433]: time="2020-05-29T12:25:47.599029431Z" level=info msg="API listen on /run/docker.sock"
May 29 12:25:47 ubuntu2004 systemd[1]: Started Docker Application Container Engine.

После этого Docker установлен и работает, можно переходить к загрузке инструментов OpenShift.

Загрузка клиентских утилит OpenShift

В момент написания этой инструкции использовалась версия OpenShift Origin v3.11.0. Скачайте клиентские инструменты (oc, kubectl):

wget https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz

Распакуйте архив:

tar -xvzf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz

Зайдите в каталог и скопируйте бинарники в /usr/local/bin:

cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit  
cp oc kubectl /usr/local/bin/

Проверьте установку клиента:

oc version

Ожидаемый пример вывода:

oc v3.11.0+0cbc58b
kubernetes v1.11.0+d4cacc0
features: Basic-Auth GSSAPI Kerberos SPNEGO

Далее разрешим использование небезопасного Docker-реестра (встроенный реестр OpenShift использует подсеть 172.30.0.0/16). Создаём файл daemon.json:

nano /etc/docker/daemon.json

Добавьте:

{
    "insecure-registries" : [ "172.30.0.0/16" ]
}

Сохраните файл и перезапустите Docker:

systemctl restart docker

Важно: параметр “insecure-registries” снижает требования к проверке TLS для указанных диапазонов. Подходящ для тестовых сред; в production используйте доверенные реестры и корректные сертификаты.

Запуск кластера OpenShift Origin

Запустите однoузловый кластер, указав публичный IP сервера (замените your-server-ip на фактический адрес):

oc cluster up --public-hostname=your-server-ip

После успешного запуска вы получите примерный вывод:

Login to server ...
Creating initial project "myproject" ...
Server Information ...
OpenShift server started.

The server is accessible via web console at:
    https://your-server-ip:8443

You are logged in as:
    User:     developer
    Password: 

To login as administrator:
    oc login -u system:admin

Войдите как администратор:

oc login -u system:admin

Пример вывода при входе:

Logged into "https://your-server-ip:8443" as "system:admin" using existing credentials.

You have access to the following projects and can switch between them with 'oc project ': 

    default
    kube-dns
    kube-proxy
    kube-public
    kube-system
  * myproject
    openshift
    openshift-apiserver
    openshift-controller-manager
    openshift-core-operators
    openshift-infra
    openshift-node
    openshift-service-cert-signer
    openshift-web-console

Using project "myproject".

Переключитесь на проект default:

oc project default

Вывод:

Now using project "default" on server "https://your-server-ip:8443".

Проверка статуса:

oc status

Ожидаемый пример вывода:

In project default on server https://your-server-ip:8443

svc/docker-registry - 172.30.1.1:5000
  dc/docker-registry deploys docker.io/openshift/origin-docker-registry:v3.11 
    deployment #1 deployed 2 minutes ago - 1 pod

svc/kubernetes - 172.30.0.1:443 -> 8443

svc/router - 172.30.94.157 ports 80, 443, 1936
  dc/router deploys docker.io/openshift/origin-haproxy-router:v3.11 
    deployment #1 deployed 2 minutes ago - 1 pod

View details with 'oc describe /' or list everything with 'oc get all'.

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

Выполните вход под обычным пользователем (developer). Если вы уже вошли, пропустите шаг входа. Команда для входа без указания имени автоматически запросит учётные данные:

oc login

В ответ вас попросят ввести имя пользователя и пароль:

Authentication required for https://your-server-ip:8443 (openshift)
Username: developer
Password: 

Введите имя developer и пароль developer (в тестовой среде), нажмите Enter.

Создайте новый проект:

oc new-project dev --display-name="Project - Dev" --description="My Project"

Ожидаемый вывод:

Now using project "dev" on server "https://your-server-ip:8443".

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

    oc new-app centos/ruby-25-centos7~https://github.com/sclorg/ruby-ex.git

to build a new example application in Ruby.

Доступ к веб-консоли OpenShift

Откройте в браузере URL https://your-server-ip:8443/console и вы увидите страницу входа:

Страница входа в OpenShift Web Console

Введите учётные данные developer и нажмите кнопку входа. После входа вы увидите панель управления (dashboard):

Панель управления OpenShift

Нажмите кнопку создания проекта:

Форма создания проекта

Заполните поля и нажмите Create.

Деплой приложения в OpenShift Origin

Войдите под developer (если ещё не в системе):

oc login

Пример вывода при успешном входе и доступных проектах:

Authentication required for https://your-server-ip:8443 (openshift)
Username: developer
Password: 
Login successful.

You have access to the following projects and can switch between them with 'oc project ':

  * dev
    my-project
    myproject

Using project "dev".

Переключитесь на проект my-project, созданный через веб-консоль:

oc project my-project

Проверка статуса проекта:

oc status

Вы можете получить вывод:

In project My Project (my-project) on server https://your-server-ip:8443

You have no services, deployment configs, or build configs.
Run 'oc new-app' to create an application.

Тэгирование образа из Docker Hub и развертывание приложения:

oc tag --source=docker openshift/deployment-example:v2 deployment-example:latest
oc new-app deployment-example

Пример отклика при создании ресурсов:

--> Found image da61bb2 (4 years old) in image stream "my-project/deployment-example" under tag "latest" for "deployment-example"

    * This image will be deployed in deployment config "deployment-example"
    * Port 8080/tcp will be load balanced by service "deployment-example"
      * Other containers can access this service through the hostname "deployment-example"
    * WARNING: Image "my-project/deployment-example:latest" runs as the 'root' user which may not be permitted by your cluster administrator

--> Creating resources ...
    deploymentconfig.apps.openshift.io "deployment-example" created
    service "deployment-example" created
--> Success
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/deployment-example' 
    Run 'oc status' to view your app.

Проверка статуса после деплоя:

oc status

Пример:

In project My Project (my-project) on server https://your-server-ip:8443

svc/deployment-example - 172.30.87.146:8080
  dc/deployment-example deploys istag/deployment-example:latest 
    deployment #1 deployed 36 seconds ago - 1 pod


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

Получить список сервисов:

oc get svc

Пример вывода:

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
deployment-example   ClusterIP   172.30.87.146           8080/TCP   1m

Просмотреть подробности сервиса:

oc describe svc deployment-example

Пример:

Name:              deployment-example
Namespace:         my-project
Labels:            app=deployment-example
Annotations:       openshift.io/generated-by=OpenShiftNewApp
Selector:          app=deployment-example,deploymentconfig=deployment-example
Type:              ClusterIP
IP:                172.30.87.146
Port:              8080-tcp  8080/TCP
TargetPort:        8080/TCP
Endpoints:         172.17.0.10:8080
Session Affinity:  None
Events:            

Проверить Pods:

oc get pods

Пример:

NAME                         READY     STATUS    RESTARTS   AGE
deployment-example-1-b9prf   1/1       Running   0          2m

Экспортировать сервис наружу:

oc expose service/deployment-example

Ответ:

route.route.openshift.io/deployment-example exposed

Просмотреть маршруты:

oc get routes

Пример:

NAME                 HOST/PORT                                           PATH      SERVICES             PORT       TERMINATION   WILDCARD
deployment-example   deployment-example-my-project.your-server-ip.nip.io             deployment-example   8080-tcp                 None

Проверка внешнего доступа

Откройте в браузере URL, указанный в колонке HOST/PORT, например:

http://deployment-example-my-project.your-server-ip.nip.io

Вы должны увидеть ваше веб-приложение:

Веб-приложение, развернутое в OpenShift

Чтобы удалить приложение и связанные объекты, выполните:

oc delete all -l app=deployment-example

Пример результата удаления:

pod "deployment-example-1-b9prf" deleted
replicationcontroller "deployment-example-1" deleted
service "deployment-example" deleted
deploymentconfig.apps.openshift.io "deployment-example" deleted
route.route.openshift.io "deployment-example" deleted

Когда этот подход не подходит

  • Для production-кластеров однoузловая схема и “oc cluster up” не подходят: требуется развертывание HA, отдельные ноды для мастер- и рабочих компонентов, настройка хранилища и сетевых плагинов.
  • Если вам нужна поддержка Red Hat и обновления безопасности, используйте OpenShift Container Platform (коммерческую версию) вместо OKD.
  • Если цель — локальная быстрая разработка на ноутбуке, рассмотрите Minishift/CRC (CodeReady Containers) или Kind/Minikube для более простых сценариев.

Альтернативные подходы

  • Minishift / CodeReady Containers — лёгкие локальные среды для разработки OpenShift.
  • OpenShift Container Platform — коммерческая, поддерживаемая версия с расширенными функциями безопасности, обновлений и интеграций.
  • Kubernetes + Helm — если нужен более гибкий стек без OpenShift-специфичных operator/imagestream.

Мини‑методология быстрого деплоя (шаги)

  1. Подготовить сервер, установить Docker и OC-клиент.
  2. Настроить daemon.json с insecure-registries для подсети 172.30.0.0/16 (только для тестов).
  3. Запустить oc cluster up с public-hostname.
  4. Войти как system:admin, создать проекты и пользователей.
  5. Тегировать/подтянуть образ, запустить oc new-app.
  6. Expose сервис через oc expose; проверить маршрут и внешний доступ.

Чек-листы по ролям

Администратор:

  • Убедиться в совместимости ядра и cgroup.
  • Настроить firewall/правила NAT для портов 8443 и портов приложений.
  • Настроить бэкапы и политику обновлений.

Разработчик:

  • Проверить oc и kubectl в PATH.
  • Пройти аутентификацию, создать проект и выполнить oc new-app.
  • Мониторить логи Pod через oc logs.

Оператор CI/CD:

  • Настроить сборки и image stream для автоматического обновления.
  • Настроить Secrets для доступа к приватным реестрам.

Руководство по устранению неполадок

  1. “oc cluster up” не стартует: проверить, что порт 8443 свободен и Docker запущен.
  2. Ошибки Pull Image: проверить доступ в интернет и DNS, при необходимости выполнить docker login.
  3. Pods в статусе CrashLoopBackOff: посмотреть oc logs , oc describe pod .
  4. Route не создаётся: убедиться, что router деплойнут и service exposed.

Быстрые команды для диагностики:

oc get pods --all-namespaces
oc get events -n 
oc logs  -c 
systemctl status docker
journalctl -u docker -n 200

Безопасность и рекомендации

  • Не используйте “insecure-registries” в production. Вместо этого настройте TLS и доверенные реестры.
  • Ограничьте доступ к публичному IP и портам через firewall/ security groups.
  • Настройте RBAC и не давайте прав cluster-admin обычным пользователям.

Краткий глоссарий

  • OKD: сообщественный дистрибутив OpenShift (OpenShift Origin).
  • oc: клиентская утилита OpenShift.
  • imagestream: абстракция OpenShift для управления образами.
  • route: объект OpenShift для внешнего доступа к сервису.

Критерии приёмки

  • oc cluster up стартовал без ошибок.
  • Веб-консоль доступна по HTTPS на порту 8443.
  • Создан проект и в нём работает минимум один Pod приложения.
  • Сервис экспонирован и доступен извне по маршруту.

Резюме

В статье показан базовый путь установки и запуска однoузлового OpenShift Origin (OKD) на Ubuntu 20.04. Руководство покрывает установку Docker, загрузку клиентских утилит, запуск кластера, создание проекта, деплой приложения, открытие маршрута и проверку внешнего доступа. Для production-окружений требуется более строгая архитектура и дополнительные меры безопасности.

Важно: если у вас остались вопросы или нужно адаптировать инструкцию под конкретную инфраструктуру (виртуальная машина, облако, NAT), опишите вашу среду — помогу скорректировать шаги.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро