← Назад к вопросам

Как развернуть OpenShift

2.0 Middle🔥 121 комментариев
#Другое

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как развернуть OpenShift

OpenShift — это enterprise-решение на основе Kubernetes, создано Red Hat. Развёртывание зависит от версии и платформы, но я расскажу о основных подходах.

Типы OpenShift

1. OpenShift Kubernetes Engine (OKE)

  • Self-managed версия
  • Требует собственную инфраструктуру (on-premise, AWS, Azure, GCP)
  • Полный контроль

2. OpenShift Online

  • Hosted версия Red Hat
  • Самый простой (click and deploy)

3. OpenShift Container Platform (OCP)

  • Enterprise версия
  • На собственной инфраструктуре
  • Полная поддержка Red Hat

Способ 1: На AWS с использованием OpenShift Installer

# 1. Скачиваем installer для своей ОС
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/latest/openshift-install-linux-x86_64.tar.gz
tar -xzf openshift-install-linux-x86_64.tar.gz

# 2. Генерируем SSH ключ для доступа к узлам
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ""

# 3. Создаём конфигурацию install-config.yaml
cat > install-config.yaml <<EOL
apiVersion: v1
baseDomain: example.com
metadata:
  name: mycluster
networking:
  networkType: OpenShiftSDN
  clusterNetwork:
  - cidr: 10.128.0.0/14
  serviceCIDR: 172.30.0.0/16
platform:
  aws:
    region: us-east-1
    rootVolume:
      size: 120
pull:
  pullSecret: '...json from Red Hat...'
EOL

# 4. Запускаем установку (это займёт 30-45 минут)
./openshift-install create cluster --dir=./cluster --log-level=info

# 5. Выводим credentials
export KUBECONFIG=./cluster/auth/kubeconfig
oc whoami

Способ 2: На-Premises с помощью openshift-install

Для VMware, KVM, Bare Metal:

# Требования
# - 3+ master nodes (минимум)
# - 2+ worker nodes
# - Каждый master: 4 CPUs, 16 GB RAM, 120 GB disk
# - Каждый worker: 2 CPUs, 8 GB RAM, 120 GB disk
# - Load balancer перед master API
# - DHCP и DNS

# Создаём install-config.yaml
cat > install-config.yaml <<EOL
apiVersion: v1
baseDomain: internal.example.com
metadata:
  name: openshift-cluster
networking:
  networkType: OpenShiftSDN
  clusterNetwork:
  - cidr: 10.128.0.0/14
  serviceCIDR: 172.30.0.0/16
platform:
  baremetal:
    apiVIP: 192.168.1.100
    ingressVIP: 192.168.1.101
    hosts:
    - name: master-1
      role: master
      bmc:
        address: ipmi://192.168.1.201
        username: admin
        password: password
      bootMACAddress: "00:11:22:33:44:55"
EOL

# Запускаем
./openshift-install create cluster

Способ 3: Docker Container для быстрого старта

# OpenShift по умолчанию включает встроенный контейнерный registry

# Создаём namespace
oc create namespace my-app

# Деплоим простое приложение
oc new-app --name=my-java-app \
  --docker-image=openjdk:11 \
  --env=JAVA_OPTS="-Xmx512m"

# Exposing сервис
oc expose service my-java-app

# Получаем route URL
oc get routes

Способ 4: Через Red Hat OpenStack Platform

# Если уже есть OpenStack
oc new-app openshift/origin:latest \
  --param=OPENSTACK_AUTH_URL=...
  --param=OPENSTACK_USERNAME=...

Основные команды после развёртывания

# Проверяем статус кластера
oc cluster-info
oc get nodes
oc get clusteroperators

# Масштабирование worker nodes
oc scale machineset worker-1 --replicas=5 -n openshift-machine-api

# Проверяем ingress controller
oc get ingresscontroller -n openshift-ingress-operator

# Логирование
oc logs pod-name -n namespace

# Доступ в shell контейнера
oc rsh pod-name

# Просмотр метрик
oc top nodes
oc top pods -n namespace

Post-Installation: Конфигурация

1. Настройка аутентификации

# OAuth через LDAP
oc apply -f - <<EOF
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - type: LDAP
    ldap:
      attributes:
        email:
        - mail
        id:
        - uid
        name:
        - cn
      bindDN: cn=admin,dc=example,dc=com
      bindPassword:
        name: ldap-secret
      ca:
        name: ldap-ca
      insecure: false
      url: ldaps://ldap.example.com:636/ou=users,dc=example,dc=com
    name: ldap-provider
    mappingMethod: claim
EOF

2. Настройка storage

# Например, с NFS
oc create -f - <<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-pv
spec:
  capacity:
    storage: 100Gi
  nfs:
    path: /exports/openshift
    server: nfs.example.com
  persistentVolumeReclaimPolicy: Recycle
EOF

3. Monitoring и Logging

# OpenShift включает Prometheus и Grafana из коробки
# Они в namespace openshift-monitoring

# Получаем credentials для Grafana
oc extract secret/grafana-admin-credentials \
  -n openshift-monitoring --to=-

# Для ELK-подобного logging (OpenShift Logging)
oc new-project openshift-logging
oc create -f cluster-logging-operator.yaml

Развёртывание Java приложения

# 1. Создаём namespace
oc new-project payment-service

# 2. Создаём deployment
oc new-app --name=payment-api \
  --docker-image=registry.example.com/payment-api:1.0 \
  --env=SPRING_PROFILES_ACTIVE=production \
  --env=DATABASE_URL=postgresql://db:5432/payments

# 3. Масштабируем
oc scale deployment payment-api --replicas=3

# 4. Экспонируем через Route
oc expose service payment-api --hostname=api.example.com

# 5. Настраиваем health checks
oc set probe deployment/payment-api \
  --liveness --get-url=http://:8080/actuator/health \
  --period-seconds=10

oc set probe deployment/payment-api \
  --readiness --get-url=http://:8080/actuator/health/readiness \
  --period-seconds=5

Требования

  • Минимум 4 ядра для master (рекомендуется 8)
  • Минимум 32 GB RAM для master (рекомендуется 64)
  • 120 GB storage на каждом узле
  • Stable network connection
  • DNS, DHCP
  • Load balancer (HAProxy, F5, AWS LB)

Лицензирование

  • OpenShift Kubernetes Engine (OKE): бесплатно
  • OpenShift Container Platform: платно (support и updates)
  • OpenShift Online: платно

Альтернативы

Если OpenShift слишком heavy:

  • OKD (Origin Kubernetes Distribution) — бесплатный OpenShift community edition
  • Kubernetes — более lightweight, но меньше features
  • Tanzu (VMware) — если в VMware ecosystem
  • Rancher — управление несколькими k8s кластерами

OpenShift хорош для enterprise с требованиями к support, compliance, и готовыми инструментами. Для smaller проектов часто хватает обычного Kubernetes.