Развертывание Red Hat OpenShift Container Platform

Перед развертыванием ArcGIS Enterprise on Kubernetes на RedHat OpenShift (RHOS) необходимо подготовить кластер RHOS, отвечающий системным требованиям ArcGIS Enterprise.

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

Прочитайте следующие шаги и просмотрите документацию по RedHat OpenShift, чтобы получить подробные инструкции о подготовке своей среды.

  1. Создайте кластер RedHat OpenShift.

    Существует множество методов, с помощью которых можно развернуть кластер RHOS. Для локального развертывания обратитесь к документации RedHat. Для развертывания в облаке обратитесь к документации RedHat OpenShift on AWS (ROSA) или Azure RedHat OpenShift.

  2. Обновите конфигурацию ос (kubectl).

    После создания кластера интерфейс командной строки (CLI) OpenShift можно использовать для извлечения информации о подключении аутентифицированного пользователя в ваш файл kubeconfig. Это можно сделать с помощью следующей команды:

    oc login https://<serverName>:<serverPort>
    
  3. Создайте классы хранилища.

    Чтобы адаптировать свойства reclaimPolicy и allowVolumeExpansion к потребностям вашей организации и рабочих нагрузок, рекомендуется создать класс хранения со ссылкой на один из поддерживаемых провайдеров, таких как Cinder, Manila или vSphere Volume. Соответствующий файл YAML должен быть применен к кластеру с помощью следующей команды:

    oc apply -f <storageClass.yaml>
    
    Для получения дополнительной информации смотрите пример класса хранения по умолчанию YAML и пример класса хранения резервных копий YAML.
  4. Управление ограничениями контекста безопасности.

    В OpenShift SCC выступают в качестве специализированного контроллера допуска для модулей перед планированием. По умолчанию все модули допускаются на основе restricted или restricted-v2 SCC, поскольку разрешенной группой является system:authenticated.

    В зависимости от вашей конфигурации, вам может понадобиться предоставить дополнительные права, чтобы отвечать требованиям ArcGIS Enterprise. Просмотрите следующее:
    1. Позволяет запускать модули с определенным fsGroup.

      Рабочие нагрузки ArcGIS Enterprise имеют жестко закодированное значение fsGroup для инициализации разрешений томов на вновь созданных постоянных томах блочного хранилища. Эта fsGroup должна быть разрешена SCC, поскольку по умолчанию выполняется как произвольный диапазон. Для этого копия restricted или restricted-v2 SCC должна быть обновлена следующим разделом:

      fsGroup:
         ranges: 
           - max: 117932853
             min: 117932853
         type: MustRunAs
         groups:
            - 'system:serviceaccounts:<deployment-project>'
      

    2. Разрешить привязку на привилегированных портах для входящего контроллера.

      В версиях OpenShift до 4.11 ограниченный контекст не позволяет добавить возможность NET_BIND_SERVICE в модули, которая требуется для входящего контроллера. Новый SCC должен быть клонирован из правил ограничений, и в него должен быть добавлен следующий раздел:

      allowedCapabilities: 
         - NET_BIND_SERVICE
      

      Этот SCC должен разрешить учетную запись сервиса arcgis-ingress-serviceaccount для правильного запуска контроллера входа.

      oc adm policy add-scc-to-user restricted-esri system:serviceaccount:<deployment-project>:arcgis-ingress-serviceaccount
      

      Для OpenShift версии 4.11 и более поздних restricted-v2 SCC уже имеет необходимые разрешенные возможности.

    3. Увеличение максимальных областей карты памяти.

      Пространственно-временной StatefulSet требует, чтобы базовый узел имел увеличенное значение для vm.max_map_count. По умолчанию это включено с помощью контейнера init, но для выполнения команды требуется привилегированный доступ к базовому хосту:

      sysctl -w vm.max_map_count=262144
      

      Рабочие узлы могут быть изменены при запуске путем внесения изменений в конфигурационный файл Ignition для выполнения этой команды во время загрузки. Свойство для ALLOW_PRIVILEGED_CONTAINERS должно быть установлено как false в скрипте развертывания.

      Дополнительные сведения см. в документации RedHat OpenShift.

      В качестве альтернативы вы должны предоставить учетной записи сервиса arcgis-elastic-serviceaccount разрешение на запуск привилегированного контейнера, чтобы контейнер init мог выполнить требуемую команду sysctl.

      oc adm policy add-scc-to-user privileged-esri system:serviceaccount:<deployment-project>:arcgis-elastic-serviceaccount
      

    Просмотрите примеры файлов SCC YAML для получения дополнительной информации.

  5. Настройте Red Hat OpenShift Routes.

    OpenShift включает в себя готовый ингресс-контроллер, который можно использовать вместе с ингресс-контроллером, поставляемым с ArcGIS Enterprise on Kubernetes. Если OpenShift Route создается через командную строку, его можно создать, используя образец yaml. Чтобы настроить маршрут через консоль OpenShift, сначала необходимо запустить скрипт развертывания, затем можно создать маршрут для ссылки на цель внутреннего сервиса.

    Ответив yes на вопрос OpenShift Route в сценарии развертывания, сервис arcgis-ingress-controller не будет открыт за пределами подсети кластера и будет создан как тип ClusterIP.

    В зависимости от того, где вы предпочитаете завершать клиентский SSL, безопасный маршрут должен использовать re-encrypt или passthrough в качестве режима завершения. При выборе re-encrypt требуется сертификат TLS в качестве входных данных для маршрута, в то время как passthrough представит сертификат TLS внешним клиентам, определенным на этапе развертывания.