要部署 ArcGIS Enterprise on Kubernetes,您需要运行 bash 脚本以及 Kubernetes 清单。 您可以从 My Esri 下载部署包,该部署包会以 .tar.gz 文件形式提供。 在运行部署脚本之前,请查看入门说明。
注:
要在交互式模式下运行部署脚本,容器注册表密码不得超过 30 个字符。 如果容器注册表密码超过 30 个字符,则可以在静默模式下运行部署脚本。 在执行此操作之前,使用 password-encrypt.sh 工具生成加密密码,移除其中的所有换行符,然后在 deploy.properties 文件中将其指定为 CONTAINER_REGISTRY_PASSWORD。
以交互式模式运行部署脚本
如果在未指定配置参数文件的情况下运行 ArcGIS Enterprise on Kubernetes 部署脚本,该脚本将以交互式模式打开。 该脚本会提示您输入每个参数,并立即检查每个值的有效性。 这种方法可以快速验证部署的每个配置参数。
- 在 Kubernetes 客户端计算机上,以管理员身份打开终端。
- 将目录更改为部署脚本所在的目录。
- 创建加密密钥文件。
加密密钥文件是一个纯文本文件,用于密码的 AES-256 加密和解密。 该文件的内容为您指定的纯文本,并且不应包含密码。 该文件应保留在固定位置,并且不应更改内容。
- (可选)在命名空间中创建 TLS 密钥。
- 在终端使用以下命令格式运行部署脚本:
./deploy.sh
- 完成参数。
该脚本会提示您输入以下参数(一次输入一个参数)。 如果提供的值无效,脚本将立即返回错误并提示您输入有效参数。 以下内容是用户输入的汇总:
注:
您无需以 root 用户身份运行此脚本。
- 部署平台 - ArcGIS Enterprise on Kubernetes 使用入口将传入流量路由至集群中的服务。 如果您要在 Amazon Web Services EKS 或 Microsoft Azure Kubernetes Service (AKS) 等云提供商托管的 Kubernetes 服务中执行部署操作,则云提供商可以使用负载均衡器服务在外部显示入口控制器。 在这种情况下,ArcGIS Enterprise on Kubernetes 会在部署流程中配置负载均衡器。
- 负载均衡器 - 在部署过程中,ArcGIS Enterprise on Kubernetes 可以使用 Azure 负载均衡器(外部和内部)、AWS 网络负载均衡器(NLB 外部)和 AWS 网络负载均衡器(NLB 外部和 NLB 内部)配置所选云负载均衡器。 每个选项均会提示您指定负载均衡器的 IP。 在此版本中,只有 Azure 负载均衡器才支持此选项;AWS EKS 不支持负载均衡器 IP 选项。 要通过预先存在的入口控制器使用第 7 层负载均衡功能,必须指明您不想使用云负载均衡器。
- 集群级入口控制器 - 集群级入口控制器可用于将流量路由到 ArcGIS Enterprise on Kubernetes 部署,从而允许组织使用第 7 层负载均衡功能。 要允许创建集群内 NGINX 入口控制器服务作为类型 ClusterIP,请在询问关于使用集群级入口控制器时回答 yes。
- 命名空间 - Kubernetes 集群命名空间,将在其中部署 ArcGIS Enterprise on Kubernetes。
- 加密密钥文件 - 您在步骤 3 中创建的加密密钥文件。
- 注册表主机 - 容器注册表主机的完全限定域名 (FQDN)(例如 docker.io)。
- 镜像路径 - 用于提取容器镜像的镜像存储库(例如 esridocker)。
- 注册表用户名 - 指定容器注册表中帐户的用户名,该帐户可存储要从注册表中提取的权限。
警告:
您指定的容器注册表帐户应已关联最低权限级别,例如,仅具有下载容器镜像的权限。 默认情况下,Kubernetes 将此帐户的未加密凭据作为机密存储和访问。 建议您不要指定具有推送更改、编辑元数据或管理容器注册表权限的帐户。
- 注册表密码 - 指定容器注册表帐户的密码。
- 完全限定域名 - 访问 ArcGIS Enterprise on Kubernetes 所需的 FQDN。 这是指负载均衡器、反向代理、边缘路由器或其他被配置为将流量路由到入口控制器的 Web 前端点。
- 上下文路径 - 在 ArcGIS Enterprise on Kubernetes URL 中使用的上下文路径(例如 https://<FQDN>/<context path>)。
注:
部署完成后,您在此处指定的上下文路径将在为您的组织配置 ArcGIS Enterprise on Kubernetes Web Adaptor 时使用。
- 节点端口 - 入口控制器通过服务类型“LoadBalancer”或“NodePort”显示外部流量。 您可以指定 30000-32767 范围内的端口。 如果未指定端口,Kubernetes 会自动分配此范围内的可用端口。
- TLS 证书 - 需要具有 FQDN 和主题备选名称的 TLS 证书(自签名证书或第三方 CA 签名证书)。 这将是入口控制器的默认 TLS 证书。
- 回答询问您是要部署还是保存属性文件的提示。
如果需要自定义属性文件中的任何参数(包括其他静默部署属性),则应退出部署脚本并更新磁盘上的文件。 其他属性的常见示例包括更新 ALLOWED_PRIVILEGED_CONTAINERS=false 以仅运行非特权容器或者更新 K8S_AVAILABILITY_TOPOLOGY_KEY=topology.kubernetes.io/zone 以支持多可用性区域集群部署。
提供所有有效参数后,属性文件将被保存到当前工作目录中。 使用此属性文件来自动执行未来部署或取消部署 ArcGIS Enterprise on Kubernetes。
最后的部署步骤是创建 ArcGIS Enterprise 组织。
提示:
部署脚本使用 kubectl 命令来验证先决条件,例如有效的命名空间。 如果 kubectl 命令由于网络或防火墙问题无法与集群进行通信,则部署脚本可能处于无响应状态。 如果发生这种情况,请结束 ./deploy.sh 命令并直接从终端运行 kubectl 以启动与集群的通信。
以静默模式运行部署脚本
作为以交互式模式运行部署脚本的替代方法,您可以静默部署 ArcGIS Enterprise on Kubernetes。 该部署脚本随 deploy.properties 文件提供,该文件可为您的 ArcGIS Enterprise on Kubernetes 部署提供一组提示您输入唯一值的参数。
- 在 Kubernetes 客户端计算机上,以管理员身份打开终端。
- 将目录更改为部署脚本和 deploy.properties 文件所在的目录。
- 打开 deploy.properties 文件。
- 有关用户输入的摘要,请参考文件中的描述性注释,并为文件中列出的每个参数提供值。
文件分为以下部分:
- 部署平台
- 命名空间
- 加密密钥文件
- 容器注册表
- 完全限定域名 (FQDN)
- TLS 证书
- 其他属性
- 保存文件。 或者,可以重命名文件。
- 在终端中,运行 password-encrypt.sh 工具以生成用于 deploy.properties 文件的加密密码。
- 在终端使用以下命令格式运行部署脚本:
./deploy.sh -f <user_properties>
通过 deploy.properties 文件获得 <user properties> 内容。
在部署 ArcGIS Enterprise on Kubernetes 之前,部署脚本将验证您的系统是否满足最低系统要求,以及是否为 deploy.properties 文件中列出的每个参数提供了有效的输入。
最后的部署步骤是创建 ArcGIS Enterprise 组织。
其他静默部署属性
deploy.properties 文件包含可在静默部署时使用的其他属性。 提供了每个属性的默认值。
ALLOWED_PRIVILEGED_CONTAINERS=true - 如果您无法运行权限容器,将此值设置为 false。 如果这样做,则还需要以根用户身份运行 # "sysctl -w vm.max_map_count=262144" 命令,才能在集群的所有结点上将 vm.max_map_count 增加到 262144。
CONTAINER_IMAGE_PULL_POLICY="Always" - 在启动新容器后,将由 ImagePullPolicy 决定是否从容器注册表中提取新容器镜像。 默认值为 "Always",将在每次启动容器时提取新镜像。 如果希望仅在不存在镜像时提取新镜像,将此值设置为 "IfNotPresent"。
INGRESS_HSTS_ENABLED=false - HTTP 严格传输安全 (HSTS) 为组织的 Web 流量增加了一个安全性图层。 默认情况下,HSTS 协议选项设为 false。 要打开 HSTS,将此值设置为 true。
INGRESS_SSL_PROTOCOLS="TLSv1.2 TLSv1.3" - 设置要使用的 SSL 协议。 默认值为 "TLSv1.2 TLSv1.3"。 如果必须允许其他 TLS 版本,在此进行指定。
INGRESS_SSL_CIPHERS="ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-CHACHA20-POLY1305:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA" - 此属性用于设置要启用的 SSL 密码列表。 如果需要其他 SSL 密码,在此进行指定。
K8S_CLUSTER_DOMAIN="cluster.local" - 如果您拥有用于服务和 Pod 的自定义集群域后缀(例如,organization.com),则可以使用此属性以允许 ArcGIS Enterprise on Kubernetes 使用您的集群域后缀。 默认值为 cluster.local。
K8S_AVAILABILITY_TOPOLOGY_KEY="kubernetes.io/hostname" - 如果您正在部署 ArcGIS Enterprise on Kubernetes 并且 Kubernetes 集群跨三个或更多可用性区域,请将 "kubernetes.io/hostname" 替换为 "topology.kubernetes.io/zone" 或者您的自定义域拓扑标注。 有关多可用性区域部署的详细信息,请参阅多可用性区域 Kubernetes 集群管理。
INGRESS_SERVICE_USE_CLUSTER_IP=false - 要通过预先存在的入口控制器使用第 7 层负载均衡功能,必须将此值设置为 true。 将此值设置为 true 时将覆盖已为 INGRESS_TYPE 参数设置的值。
在部署属性文件中更新组织集群的必要参数后,可以使用以下命令部署 ArcGIS Enterprise on Kubernetes:
./deploy.sh -f <user_properties>