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

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 и вы увидите страницу входа:

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

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

Заполните поля и нажмите 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
Вы должны увидеть ваше веб-приложение:

Чтобы удалить приложение и связанные объекты, выполните:
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.
Мини‑методология быстрого деплоя (шаги)
- Подготовить сервер, установить Docker и OC-клиент.
- Настроить daemon.json с insecure-registries для подсети 172.30.0.0/16 (только для тестов).
- Запустить oc cluster up с public-hostname.
- Войти как system:admin, создать проекты и пользователей.
- Тегировать/подтянуть образ, запустить oc new-app.
- Expose сервис через oc expose; проверить маршрут и внешний доступ.
Чек-листы по ролям
Администратор:
- Убедиться в совместимости ядра и cgroup.
- Настроить firewall/правила NAT для портов 8443 и портов приложений.
- Настроить бэкапы и политику обновлений.
Разработчик:
- Проверить oc и kubectl в PATH.
- Пройти аутентификацию, создать проект и выполнить oc new-app.
- Мониторить логи Pod через oc logs.
Оператор CI/CD:
- Настроить сборки и image stream для автоматического обновления.
- Настроить Secrets для доступа к приватным реестрам.
Руководство по устранению неполадок
- “oc cluster up” не стартует: проверить, что порт 8443 свободен и Docker запущен.
- Ошибки Pull Image: проверить доступ в интернет и DNS, при необходимости выполнить docker login.
- Pods в статусе CrashLoopBackOff: посмотреть oc logs
, oc describe pod . - 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), опишите вашу среду — помогу скорректировать шаги.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента