在此版本上运行 ArcGIS Enterprise on Kubernetes 10.9 所需的最低硬件和基础架构如下所述。
支持的环境
如无特殊说明,系统要求和规范适用于所有受支持的环境。 对于此版本,支持以下环境:
- 内部部署数据中心
- Red Hat OpenShift Container Platform 4.6 或更高版本
- 云端托管的 Kubernetes 服务
- Microsoft Azure Kubernetes 服务 (AKS)
- Amazon Elastic Kubernetes 服务 (EKS)
容器注册表
您可以从私有 Docker Hub 资料档案库访问 ArcGIS Enterprise on Kubernetes 的容器图像。 Esri 将为正在部署 ArcGIS Enterprise on Kubernetes 的人员提供对此资料档案库的访问权限。 与 Esri 代表谈话以获得详细信息。
Esri 许可
要在部署过程中授权 ArcGIS Enterprise 组织,您需要 JSON 格式的用户类型许可文件(.json 文件)和 ECP 或 PRVC 格式的服务器许可文件(.ecp 或 .prvc 文件)。 要获得这些许可文件,请通过“采取许可操作”权限访问 My Esri。
- 登录到 My Esri。
- 选择我的组织 > 许可。
- 在许可 Esri 产品下,单击开始。
- 对于产品,选择 ArcGIS Enterprise;对于版本,选择所需的 ArcGIS Enterprise 版本;然后从许可类型列表中继续执行为 ArcGIS Server 和 Portal for ArcGIS 生成许可文件的步骤,包括您的服务器角色、用户类型和应用程序(如果适用)。
Kubernetes 集群
要部署 ArcGIS Enterprise on Kubernetes,您必须在上述平台之一上拥有 Kubernetes 集群。 对于每个受支持的环境,Kubernetes 集群必须为 1.19 版本或更高版本。
命名空间
ArcGIS Enterprise on Kubernetes 需要自己专有的命名空间。 必须在运行部署脚本之前创建命名空间。 ArcGIS Enterprise on Kubernetes 的每个部署也都需要专有的命名空间。
计算
ArcGIS Enterprise on Kubernetes 与三个架构配置文件之一一起部署。 关于资源(CPU 和内存)请求和限制以及整体计算要求的建议会根据所选配置文件而有所不同。 下面提供了对每个配置文件的建议。
以下是每个架构配置文件的最低节点要求。 建议每个工作/代理节点至少具有 8 个 CPU 和 32 GiB 的内存。
架构配置文件 | 最低工作/代理节点 | 最低 CPU 总数 | 最低 GiB 总数 |
---|---|---|---|
标准可用性 | 3 | 24 | 96 |
增强可用性 | 4 | 32 | 128 |
开发 | 2 | 16 | 64 |
注:
ArcGIS Enterprise on Kubernetes 仅在采用 x86_64 架构(64 位)的 CPU 上受支持。
ArcGIS Enterprise on Kubernetes 部署中的 Pod 分布在集群中的所有工作节点上。 在扩展部署或将其他 ArcGIS Enterprise 部署添加到集群中时,您需要相应地配置硬件。 这可能需要增加每个节点的默认最大 Pod 数。 最初创建的 Pod 的数量随每个架构配置文件而变化。 当您水平缩放或添加新功能时,Pod 的数量会增加。
资源配额
ArcGIS Enterprise on Kubernetes Pod 具有已定义的 CPU 和内存的请求和限制。 如果命名空间包含 ResourceQuota 对象,则配额必须高于所有 Pod 的请求和限制的总和。 这些值将根据您选择的架构配置文件而有所不同,如下所述。
建议您至少留出 10% 的请求资源,以使集群节点正常运行。
根据上述设置,以下是每个配置文件的以下配额建议。 所描绘的限值是占位符,必须根据您的实际可扩展性要求进行配置。
标准可用性配置文件:
spec:
hard:
limits.cpu: "120"
limits.memory: 196Gi
requests.cpu: "22"
requests.memory: 86Gi
增强可用性配置文件:
spec:
hard:
limits.cpu: "132"
limits.memory: 256Gi
requests.cpu: "28"
requests.memory: 108Gi
开发配置文件:
spec:
hard:
limits.cpu: "86"
limits.memory: 154Gi
requests.cpu: "14"
requests.memory: 58Gi
安全性
ArcGIS Enterprise on Kubernetes 的安全要求如下所述。
基于角色的访问控制
必须在 Kubernetes 集群上启用基于角色的访问控制 (RBAC)。 您无需 cluster-admin 权限即可部署 ArcGIS Enterprise on Kubernetes。 如果您没有 cluster-admin 权限,则用户必须拥有最小命名空间管理权限。 您可以通过在命名空间中创建 RoleBinding 将 defaultClusterRole “admin” 分配给用户。
Pod 安全策略(OpenShift 中的安全上下文限制)和虚拟内存
ArcGIS Enterprise on Kubernetes 可部署 Elasticsearch 以支持 ArcGIS Enterprise 组织的各种要素。 默认情况下,Elasticsearch 使用 mmapfs 目录来存储所需索引。 默认的操作系统 mmap 计数限制可能不足以执行部署操作。 Elasticsearch 建议使用默认 vm.max_map_count 值 262144。 要更改默认值,每个节点都需要高级 (root) 权限。
根据 Kubernetes 集群允许容器以特权还是非特权方式运行,您需要执行以下操作。
- 以特权方式运行 - ArcGIS Enterprise on Kubernetes 将在运行 Elasticsearch 的节点上运行特权初始化容器,并且不需要执行其他操作。
- 以非特权方式运行 - 如果您的 Kubernetes 集群已定义 Pod 安全性,并且不允许容器以特权方式运行,则可以使用以下选项。
- 选项 1 - ArcGIS Enterprise on Kubernetes 部署脚本可在其命名空间下创建服务帐户以运行容器。 默认服务帐户为 rcgis-admin-serviceaccount。 如果集群包含 Pod 安全策略,则必须允许服务帐户以特权方式运行容器。 对于 OpenShift,您可以通过在用户部分中添加以下内容来向该服务帐户授予访问特权安全上下文限制的权限。
“-system:serviceaccount: <Namespace>:arcgis-admin-serviceaccount"
- 选项 2 - 如果无法向服务帐户授予以特权方式运行容器的权限,则必须通过以 root 身份运行以下命令来手动准备每个节点:
sysctl -w vm.max_map_count=262144
- 选项 1 - ArcGIS Enterprise on Kubernetes 部署脚本可在其命名空间下创建服务帐户以运行容器。 默认服务帐户为 rcgis-admin-serviceaccount。 如果集群包含 Pod 安全策略,则必须允许服务帐户以特权方式运行容器。 对于 OpenShift,您可以通过在用户部分中添加以下内容来向该服务帐户授予访问特权安全上下文限制的权限。
准备好节点后,您必须指示部署脚本不运行特权容器,如下所示:
- 导航至 /setup/.install/arcgis-enterprise/arcgis-enterprise.properties 文件。
- 将 "ALLOWED_PRIVILEGED_CONTAINERS=${ALLOWED_PRIVILEGED_CONTAINERS:-true}" 字符串更新为 "ALLOWED_PRIVILEGED_CONTAINERS=${ALLOWED_PRIVILEGED_CONTAINERS:-false}"。
- 保存文件。
部署脚本将不会以特权方式运行初始化容器。
如果使用 Kubernetes NetworkPolicies,请确保在 ArcGIS Enterprise 命名空间中允许不间断的 Pod 到 Pod 和 Pod 到服务的通信。
此外,确保命名空间中的 Pod 有权访问 Kubernetes API 服务器。 可通过默认命名空间中名为 Kubernetes 的服务访问 API 服务器。 默认命名空间中的 Pod 使用 kubernetes.default.svc 主机名查询 API 服务器。
网络
网络要求包括完全限定域名和负载均衡器。 提供了每个项目的详细信息。
完全限定域名
ArcGIS Enterprise on Kubernetes 需要完全限定域名 (FQDN)(例如 map.company.com)。 您可以使用现有域名系统 (DNS) 创建域名,也可以使用 Cloud DNS 服务(例如 Amazon Route 53)。 您可以在部署后创建 DNS 记录,但是在部署期间必须提供其值。 在此版本中,您在部署后无法修改 FQDN。
负载均衡器
您需要使用负载均衡器将流量引入每个工作节点。 使用 AKS 或 EKS 时,可以从部署脚本配置以下负载均衡器,而无需进行任何手动配置:
- Azure 负载均衡器(公共或内部)- 可以在部署脚本中指定预配置的静态公共 IP 地址和 DNS 标注。
AWS 网络和经典负载均衡器(面向 Internet 或内部)- 可以使用其他负载均衡服务;但是,必须在每个集群节点上手动对其进行配置。
在 OpenShift 容器平台中,可以在指向入口控制器服务时配置路径。
您可以使用自我管理的负载均衡器,该负载均衡器指向入口控制器服务的 NodePort 上的工作节点。 有关详细信息,请参阅负载均衡器的部署指南的参数描述。
注:
此版本不支持 AKS 上的 Azure CNI 插件。存储
对于系统存储,ArcGIS Enterprise on Kubernetes 需要永久卷 (PV)。 您可以将其设置为动态或静态形式。 创建两种类型的 PV 时,可以使用自定义大小(较大尺寸)和标注。 ArcGIS Enterprise 的有状态的工作负载包括关系数据库管理系统以及 NoSQL 数据库。 建议使用提供低延迟的块存储设备,例如 EBS 卷、Azure 磁盘、vSphereVolume 等。
由于这些永久卷存储数据和设置,因此应使用限制性安全策略对其进行保护。 对于以基于文件的存储(例如 NFS、Azure File 或 Gluster)为基础的永久卷,请确保设置目录权限以防止未经授权的访问。 对于块存储,例如 EBS 卷、Azure 磁盘和 iSCSI,请确保块设备仅限于那些需要访问的用户。
以下是存储卷及其预期用途的说明:
- 内存中 - 存储临时系统资源。
- 项目包 - 存储大型上传文件和文件包,以支持发布工作流。
- 对象 - 存储已上传和保存的内容、托管切片和图像图层缓存以及地理处理输出。 部署需要四项内容。
- 队列 - 存储异步地理处理作业。
- 关系 - 存储托管要素数据和管理内容(例如自定义和配置设置)。 部署需要两项内容。
- 时空和索引 - 存储日志和索引以及托管要素数据,以支持实时和大数据的可视化和分析。
- 使用度量查看器 - 存储默认和自定义仪表盘,以显示 GIS 服务的使用情况。
- 使用度量数据 - 存储 GIS 服务使用情况数据。
考虑组织所需的存储要求,并相应地定义每个 PV 的大小。
静态 PV
如果要在部署之前配置静态 PV,则建议使用以下规范和标注。
提供了每个架构配置文件所需的 PV 数量。
体积 | 开发配置文件 | 标准可用性配置文件 | 增强可用性配置文件 |
---|---|---|---|
in-memory-volume | 1 | 1 | 1 |
item-packages-volume | 1 | 2 | 2 |
object-volume | 1 | 4 | 12 |
queue-volume | 1 | 2 | 2 |
relational-volume | 2 | 2 | 2 |
spatiotemporal-and-index-volume | 1 | 3 | 5 |
usage-metric-volume | 1 | 1 | 1 |
usage-metric-viewer-volume | 1 | 1 | 1 |
使用设置向导配置组织时,以下规格(卷名、大小、应用程序和层)用于卷绑定;但是,您可以根据需要自定义它们。
体积 | 大小 (GiB)(最小) | 访问模式 | 标注(默认) |
---|---|---|---|
in-memory-volume | 16 | ReadWriteOnce | arcgis/tier=storage, arcgis/app=ignite |
item-packages-volume | 16 | ReadWriteOnce | arcgis/tier=api, arcgis/app=sharing |
object-volume | 16 | ReadWriteOnce | arcgis/tier=storage, arcgis/app=minio |
queue-volume | 16 | ReadWriteOnce | arcgis/tier=queue, arcgis/app=rabbitmq |
relational-volume | 16 | ReadWriteOnce | arcgis/tier=storage, arcgis/app=postgres |
spatiotemporal-and-index-volume | 16 | ReadWriteOnce | arcgis/tier=storage, arcgis/app=elasticsearch |
usage-metric-volume | 30 | ReadWriteOnce | arcgis/tier=storage, arcgis/app=prometheus |
usage-metric-viewer-volume | 1 | ReadWriteOnce | arcgis/tier=storage, arcgis/app=grafana |
动态 PV
对于动态配置,需要 StorageClass。 使用设置向导配置组织时,默认的 StorageClass 名称为 arcgis-storage-default。
StorageClass 上的 reclaimPolicy 参数必须设置为 retain。
注:
并非所有的 VM 类型都支持 Azure 中的高级磁盘。 VM 类型支持高级磁盘时,请使用高级磁盘。- 对于 AKS,StorageClass 定义(高级 Azure 磁盘)的示例如下所示:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: arcgis-storage-default provisioner: kubernetes.io/azure-disk parameters: kind: Managed storageaccounttype: Premium_LRS reclaimPolicy: Retain allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer
- 对于 EKS,StorageClass 定义(GP2 类型 EBS 卷)的示例如下所示:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: arcgis-storage-default provisioner: kubernetes.io/aws-ebs parameters: fsType: ext4 type: gp2 reclaimPolicy: Retain allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer
您还可以使用随 AKS 或 EKS 集群提供的默认存储类。 在 AKS 中,这些存储类为默认(azure 磁盘)或托管高级存储类。 在 EKS 中,这是 GP2 存储类。
客户端工作站
部署脚本为 bash 脚本,其可从具有 bash shell 的远程客户端工作站运行。
设置客户端工作站时,需要以下内容(已提供下载链接):
- Kubectl
- 特定于环境的命令行界面 (CLI)
Kubectl 是运行部署脚本的先决条件。 使用 Kubectl 安装和设置来下载 Kubernetes 命令行工具。
在管理部署时,您可以使用特定于环境的命令行工具。 使用以下链接下载特定于环境的 CLI:
TLS 证书
ArcGIS Enterprise on Kubernetes 使用基于 NGINX 的入口控制器。 此入口控制器的作用域为命名空间,并且已被部署为仅侦听 ArcGIS Enterprise 命名空间的入口流量。 需要具有证书通用名称 FQDN 和主题备选名称的 TLS。 可以使用 CA 签名证书或自签名证书,但是出于安全原因,强烈建议您使用 CA 签名证书。这是入口控制器的默认 TLS 证书。 部署脚本可提供以下证书选项,以将 TLS 证书应用于入口流量:
- 包含私钥和证书的现有 TLS 机密
- 包含私钥和证书的 .pfx 文件
- PEM 格式的私钥和证书
- 自签名证书
ArcGIS Enterprise on Kubernetes 支持将由 Kubernetes cert-manager 颁发和管理的 TLS 证书用于入口控制器。 您必须将此证书存储在与 ArcGIS Enterprise 相同的命名空间中的 TLS 机密中。 然后,可以在部署过程中或创建 ArcGIS Enterprise 组织后引用 TLS 机密。
ArcGIS Enterprise on Kubernetes 和 ArcGIS Pro
需要 ArcGIS Pro 2.7 或更高版本才能使用 ArcGIS Enterprise on Kubernetes 的服务。 不支持以前的版本。
需要 ArcGIS Pro 2.8或更高版本才能将服务发布到 ArcGIS Enterprise on Kubernetes。
从企业级地理数据库中注册数据存储项时,地理数据库版本必须为 10.9.0.2.8 或更高版本。 地理数据库版本号是 ArcGIS Enterprise 和 ArcGIS Pro 版本号的组合。
无法将在 ArcMap 中创建的企业级地理数据库注册为数据项。