• Русский
  • Импорт кластера OpenShift

    Поддерживается интеграция развернутых кластеров OpenShift в платформу для единого управления.

    Содержание

    Предварительные требования

    • Версия Kubernetes и параметры кластера должны соответствовать Стандартным требованиям кластера Kubernetes.

    • Для интеграции необходимы команды kubectl. Установите CLI-инструмент на бастион-хост, который имеет доступ к кластеру.

    • Для обеспечения мониторинга в реальном времени таких метрик, как узлы, рабочие нагрузки (Deployment, StatefulSet, DaemonSet), Pods и контейнеры, убедитесь, что Prometheus уже развернут в целевом кластере.

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

    • Для использования реестра, развернутого платформой при установке глобального кластера, выполните следующую команду на узле глобального управления:

      if [ "$(kubectl get productbase -o jsonpath='{.items[].spec.registry.preferPlatformURL}')" = 'false' ]; then
          REGISTRY=$(kubectl get cm -n kube-public global-info -o jsonpath='{.data.registryAddress}')
      else
          REGISTRY=$(kubectl get cm -n kube-public global-info -o jsonpath='{.data.platformURL}' | awk -F // '{print $NF}')
      fi
      echo "Registry address is: $REGISTRY"
    • Для использования внешнего реестра вручную задайте переменную REGISTRY:

      REGISTRY=<external-registry-address>  # например, registry.example.cn:60080 или 192.168.134.43
      echo "Registry address is: $REGISTRY"

    Проверка необходимости дополнительной настройки реестра

    1. Выполните команду для проверки поддержки HTTPS и использования доверенного сертификата CA:

      REGISTRY=<registry-address-from-previous-step>
      
      if curl -s -o /dev/null --retry 3 --retry-delay 5 -- "https://${REGISTRY}/v2/"; then
          echo 'Pass: Registry uses a trusted CA certificate. No extra config needed.'
      else
          echo 'Fail: Registry does not support HTTPS or uses an untrusted certificate. Follow "Trust Insecure Registry".'
      fi
    2. Если проверка не пройдена, выполните следующие шаги.

    Доверие к небезопасному реестру

    1. Войдите на все узлы кластера OCP.

    2. На каждом узле настройте параметры реестра:

      sudo -i
      sudo chattr -i /
      
      sudo mkdir -p /etc/systemd/system/crio.service.d/
      cat | sudo tee /etc/systemd/system/crio.service.d/99-registry-cpaas-system.conf << 'EOF'
      [Service]
      ExecStart=
      ExecStart=/usr/bin/crio \
                --insecure-registry='<registry-address>' \  # например, registry.example.cn:60080 или 192.168.134.43
                $CRIO_CONFIG_OPTIONS \
                $CRIO_RUNTIME_OPTIONS \
                $CRIO_STORAGE_OPTIONS \
                $CRIO_NETWORK_OPTIONS \
                $CRIO_METRICS_OPTIONS
      EOF
    3. Перезапустите crio:

      sudo systemctl daemon-reload && sudo systemctl restart crio

    Настройка DNS для кластера

    Измените ConfigMap CoreDNS в глобальном кластере для настройки DNS.

    1. С бастион-хоста получите базовый домен кластера OCP:

      oc get dns cluster -o jsonpath='{.spec.baseDomain}'

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

      ocp.example.com
    2. Войдите в консоль управления платформой, переключитесь на глобальный кластер, затем перейдите в Управление кластерами > Управление ресурсами.

    3. Отредактируйте ConfigMap cpaas-coredns в пространстве имен kube-system.

      Добавьте новый блок с использованием базового домена OCP и адреса DNS-сервера (из файла /etc/resolv.conf на узле кластера).

      Пример:

      Corefile: |
      ocp.example.com:1053 {
          log
          forward . 192.168.31.220
      }
      .:1053 {
          log
          forward . 192.168.31.220
      }

    Получение информации о кластере

    Выберите один из вариантов:

    Метод 1 (рекомендуется): Получение файла KubeConfig

    1. На бастион-хосте найдите файл kubeconfig и убедитесь, что он содержит контекст администратора.

    2. Скопируйте файл kubeconfig с бастион-хоста на локальную машину:

      scp root@<bastion-ip>:</path/to/kubeconfig> <local-path>

    Метод 2: Использование токена, адреса API-сервера и сертификата CA

    См. Как получить информацию о кластере?.

    Импорт кластера

    1. В левом меню перейдите в Управление кластерами > Кластеры.

    2. Нажмите Импортировать кластер.

    3. Настройте параметры:

      ПараметрОписание
      RegistryРеестр, хранящий образы компонентов платформы.По умолчанию платформы: реестр, настроенный при глобальной установке.Частный реестр: требуется адрес реестра, порт, имя пользователя и пароль.Публичный реестр: требуется обновление учетных данных облака.
      Cluster InfoЛибо загрузите файл KubeConfig, либо введите вручную.Адрес кластера: адрес API-сервера.Сертификат CA: декодированный сертификат CA в Base64.Аутентификация: токен или клиентский сертификат с правами cluster-admin.
    4. Нажмите Проверить подключение.

    5. Если проверка успешна, нажмите Импортировать. Прогресс можно отслеживать в журнале выполнения. После импорта кластер отображается в списке как здоровый.

    Сетевая конфигурация

    Обеспечьте сетевое соединение между глобальным кластером и импортированным кластером. См. Сетевая конфигурация для импортированных кластеров.

    Развертывание дополнений

    После успешной интеграции перейдите в Marketplace для развертывания необходимых дополнений, таких как мониторинг, сбор логов и хранение логов.

    Перед развертыванием сбора логов убедитесь, что на /var/cpaas/ свободно более 50 ГБ:

    df -h /var/cpaas

    Обновление политики аудита

    Вы можете изменить политику аудита (spec.audit.profile) кластера:

    • Default: логирует метаданные запросов на чтение/запись (создание OAuth access token логирует тело).
    • WriteRequestBodies: логирует метаданные всех запросов и тела запросов на запись.
    • AllRequestBodies: логирует метаданные и тела всех запросов.

    Чувствительные ресурсы (например, Secrets, Routes, OAuthClient) логируют только метаданные.

    Обновление выполняется командой:

    oc edit apiserver cluster

    FAQ

    Почему кнопка "Добавить узел" отключена?

    Добавление узлов через UI платформы не поддерживается. Используйте метод поставщика.

    Какие сертификаты поддерживаются?

    1. Сертификаты Kubernetes: виден только сертификат API Server, автоматическая ротация отсутствует.
    2. Сертификаты компонентов платформы: видны и автоматически ротируются.

    Какие функции не поддерживаются для кластеров OpenShift?

    • Сбор данных аудита.
    • Мониторинг ETCD, Scheduler, Controller Manager (доступны только метрики API Server).
    • Сертификаты, кроме API Server.