将 ArcGIS Enterprise on Kubernetes 部署到 RedHat OpenShift (RHOS) 之前,您必须准备一个满足 ArcGIS Enterprise 系统要求的 RHOS 集群。
准备 RedHat OpenShift 集群包括在多个支持环境中通用的步骤(例如设置 Kubernetes 集群和对应节点)以及环境特定的步骤(例如创建专用的安全上下文限制 (SCC) 和处理应用程序的入口)。
有关如何准备环境的详细说明,请查看以下步骤并参阅 RedHat OpenShift 文档。
- 创建 RedHat OpenShift 集群。
有多种方法可以用于部署 RHOS 集群。 对于本地部署,请参阅 RedHat 文档。 对于基于云的部署,请参阅 AWS 上的 RedHat OpenShift (ROSA) 或 Azure RedHat OpenShift 文档。
- 更新 oc (kubectl) 配置。
创建集群后,可以使用 OpenShift 命令行界面 (CLI) 将经过身份验证的用户连接信息拉取到 kubeconfig 文件。 可以使用以下命令执行此操作:
oc login https://<serverName>:<serverPort>
- 创建存储类。
要按照组织和工作负载的需求定制 reclaimPolicy 和 allowVolumeExpansion 属性,建议您创建一个存储类,使其引用受支持的配置程序之一,例如 Cinder、Manila 或 vSphere Volume。 相应的 YAML 文件应该使用以下命令应用到集群:
有关详细信息,请参阅默认存储类 YAML 示例和备份存储类 YAML 示例。oc apply -f <storageClass.yaml>
- 管理安全上下文限制。
在 OpenShift 中,SCC 可以作为 Pod 在调度之前的自定义准入控制器。 默认情况下,所有 Pod 都基于 restricted 或 restricted-v2 SCC 准入,因为允许的组为 system:authenticated。
根据您的设置,您可能需要允许其他权限以满足 ArcGIS Enterprise 的要求。 查看以下内容:- 允许 Pod 通过特定 fsGroup 运行。
ArcGIS Enterprise 工作负载有一个硬编码的 fsGroup 值,用于在新配置的块存储永久卷上初始化卷权限。 SCC 必须允许此 fsGroup,因为默认设置是以任意范围运行。 为此,restricted 或 restricted-v2 SCC 的副本应根据以下部分进行更新:
fsGroup: ranges: - max: 117932853 min: 117932853 type: MustRunAs groups: - 'system:serviceaccounts:<deployment-project>'
- 允许入口控制器绑定到特权端口。
对于 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 已允许所需的功能。
- 增加最大内存映射区域。
时空 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 文件示例。
- 允许 Pod 通过特定 fsGroup 运行。
- 配置 Red Hat OpenShift Routes。
OpenShift 包括一个开箱即用的入口控制器,该控制器可以与 ArcGIS Enterprise on Kubernetes 随附的入口控制器结合使用。 如果通过命令行创建 OpenShift 路由,则可以使用示例 yaml 进行创建。 要通过 OpenShift 控制台设置路由,则必须先运行部署脚本,然后才能创建路由以引用内部服务目标。
在部署脚本中对 OpenShift 路由问题回答 yes 后,arcgis-ingress-controller 服务将不会暴露在集群子网外部,且服务将以 ClusterIP 类型创建。
根据您希望的客户端 SSL 终止位置,安全路由应使用 re-encrypt 或 passthrough 作为终止模式。 选择 re-encrypt 将需要一个 TLS 证书作为路由的输入,而 passthrough 会将部署阶段中定义的证书呈现给外部客户端。