部署 Red Hat OpenShift Container Platform

ArcGIS Enterprise on Kubernetes 部署到 RedHat OpenShift (RHOS) 之前,您必须准备一个满足 ArcGIS Enterprise 系统要求的 RHOS 集群。

准备 RedHat OpenShift 集群包括在多个支持环境中通用的步骤(例如设置 Kubernetes 集群和对应节点)以及环境特定的步骤(例如创建专用的安全上下文限制 (SCC) 和处理应用程序的入口)。

有关如何准备环境的详细说明,请查看以下步骤并参阅 RedHat OpenShift 文档。

  1. 创建 RedHat OpenShift 集群。

    有多种方法可以用于部署 RHOS 集群。 对于本地部署,请参阅 RedHat 文档。 对于基于云的部署,请参阅 AWS 上的 RedHat OpenShift (ROSA)Azure RedHat OpenShift 文档。

  2. 更新 oc (kubectl) 配置。

    创建集群后,可以使用 OpenShift 命令行界面 (CLI) 将经过身份验证的用户连接信息拉取到 kubeconfig 文件。 可以使用以下命令执行此操作:

    oc login https://<serverName>:<serverPort>
    
  3. 创建存储类。

    要按照组织和工作负载的需求定制 reclaimPolicyallowVolumeExpansion 属性,建议您创建一个存储类,使其引用受支持的配置程序之一,例如 Cinder、Manila 或 vSphere Volume。 相应的 YAML 文件应该使用以下命令应用到集群:

    oc apply -f <storageClass.yaml>
    
    有关详细信息,请参阅默认存储类 YAML 示例和备份存储类 YAML 示例。
  4. 管理安全上下文限制。

    在 OpenShift 中,SCC 可以作为 Pod 在调度之前的自定义准入控制器。 默认情况下,所有 Pod 都基于 restrictedrestricted-v2 SCC 准入,因为允许的组为 system:authenticated

    根据您的设置,您可能需要允许其他权限以满足 ArcGIS Enterprise 的要求。 查看以下内容:
    1. 允许 Pod 通过特定 fsGroup 运行。

      ArcGIS Enterprise 工作负载有一个硬编码的 fsGroup 值,用于在新配置的块存储永久卷上初始化卷权限。 SCC 必须允许此 fsGroup,因为默认设置是以任意范围运行。 为此,restrictedrestricted-v2 SCC 的副本应根据以下部分进行更新:

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

    2. 允许入口控制器绑定到特权端口。

      对于 OpenShift 4.11 之前的版本,受限上下文不允许将 NET_BIND_SERVICE 功能添加到 Pod,而这个功能是入口控制器所必需的。 应从受限策略克隆新的 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 值。 此功能使用初始化容器默认启用,但是命令需要底层主机的特权访问权限才能运行:

      sysctl -w vm.max_map_count=262144
      

      在工作节点启动时,可以通过修改 Ignition 配置文件的方法修改工作节点,以便在引导过程中运行该命令。 在部署脚本中,ALLOW_PRIVILEGED_CONTAINERS 属性应设置为 false。

      有关详细信息,请参阅 RedHat OpenShift 文档

      或者,您必须给予 arcgis-elastic-serviceaccount 服务帐户运行特权容器的权限,以允许初始化容器运行所需的 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 路由,则可以使用示例 yaml 进行创建。 要通过 OpenShift 控制台设置路由,则必须先运行部署脚本,然后才能创建路由以引用内部服务目标。

    在部署脚本中对 OpenShift 路由问题回答 yes 后,arcgis-ingress-controller 服务将不会暴露在集群子网外部,且服务将以 ClusterIP 类型创建。

    根据您希望的客户端 SSL 终止位置,安全路由应使用 re-encryptpassthrough 作为终止模式。 选择 re-encrypt 将需要一个 TLS 证书作为路由的输入,而 passthrough 会将部署阶段中定义的证书呈现给外部客户端。