运行部署脚本

要部署 ArcGIS Enterprise on Kubernetes,您需要运行 bash 脚本以及 Kubernetes 清单。 您可以从 My Esri 下载部署包,该部署包会以 .tar.gz 文件形式提供。 在运行部署脚本之前,请查看入门说明

注:

要在交互式模式下运行部署脚本,容器注册表密码不得超过 30 个字符。 如果容器注册表密码超过 30 个字符,则可以在静默模式下运行部署脚本。 在执行此操作之前,使用 password-encrypt.sh 工具生成加密密码,移除其中的所有换行符,然后在 deploy.properties 文件中将其指定为 CONTAINER_REGISTRY_PASSWORD

以交互式模式运行部署脚本

如果在未指定配置参数文件的情况下运行 ArcGIS Enterprise on Kubernetes 部署脚本,该脚本将以交互式模式打开。 该脚本会提示您输入每个参数,并立即检查每个值的有效性。 这种方法可以快速验证部署的每个配置参数。

  1. Kubernetes 客户端计算机上,以管理员身份打开终端。
  2. 将目录更改为部署脚本所在的目录。
  3. 在终端使用以下命令格式运行部署脚本:
    ./deploy.sh
    
  4. 完成参数。

    该脚本会提示您输入以下参数(一次输入一个参数)。 如果提供的值无效,脚本将立即返回错误并提示您输入有效参数。 以下内容是用户输入的汇总:

    注:

    您无需以 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 选项。 如果使用的是 OpenShift,则可以使用路径,该路径通常由 HAProxy 或基于 Big-IP 的负载均衡器支持。
    • 命名空间 - Kubernetes 集群命名空间,将在其中部署 ArcGIS Enterprise on Kubernetes
    • 加密密钥文件 - 加密密钥文件是一个纯文本文件,用于密码的 AES-256 加密和解密。 该文件的内容为您指定的纯文本,并且不应包含密码。 该文件应保留在固定位置,并且不应更改内容。
    • 注册表主机 - 容器注册表主机的完全限定域名 (FQDN)(例如 docker.io)。
    • 映像路径 - 用于提取容器映像的映像存储库(例如 esridocker)。
    • 注册表用户名 - 指定容器注册表中帐户的用户名,该帐户可存储要从注册表中提取的权限。
      警告:

      您指定的容器注册表帐户应已关联最低权限级别,例如,仅具有下载容器映像的权限。 默认情况下,Kubernetes 将此帐户的未加密凭据作为机密存储和访问。 建议您不要指定具有推送更改、编辑元数据或管理容器注册表权限的帐户。

    • 注册表密码 - 指定容器注册表帐户的密码。
    • 完全限定域名 - 访问 ArcGIS Enterprise on Kubernetes 所需的 FQDN。 这是指负载均衡器、反向代理、边缘路由器或其他被配置为将流量路由到入口控制器的 Web 前端点。
    • 上下文路径 - 在 ArcGIS Enterprise on Kubernetes URL 中使用的上下文路径(例如 https://<FQDN>/<context path>)。
      注:

      部署完成后,您在此处指定的上下文路径将在为您的组织配置 Kubernetes Web Adaptor 上的 ArcGIS Enterprise 时使用。

    • 节点端口 - 入口控制器通过服务类型“LoadBalancer”或“NodePort”显示外部流量。 您可以指定 30000-32767 范围内的端口。 如果未指定端口,Kubernetes 会自动分配此范围内的可用端口。
    • TLS 证书 - 需要具有 FQDN 和主题备选名称的 TLS 证书(自签名证书或第三方 CA 签名证书)。 这将是入口控制器的默认 TLS 证书。

提供所有有效参数后,属性文件将被保存到当前工作目录中。 使用此属性文件来自动执行未来部署或取消部署 ArcGIS Enterprise on Kubernetes

注:

在生成属性文件后,可以在其中自定义参数以满足部署需求。 例如,如果组织必须运行非特权容器,在部署之前更新 ALLOWED_PRIVILEGED_CONTAINERS=false。 有关详细信息,请参阅下方的其他静默部署属性部分。

最后的部署步骤是创建 ArcGIS Enterprise 组织

提示:

部署脚本使用 kubectl 命令来验证先决条件,例如有效的命名空间。 如果 kubectl 命令由于网络或防火墙问题无法与集群进行通信,则部署脚本可能处于无响应状态。 如果发生这种情况,请结束 ./deploy.sh 命令并直接从终端运行 kubectl 以启动与集群的通信。

以静默模式运行部署脚本

作为以交互式模式运行部署脚本的替代方法,您可以静默部署 ArcGIS Enterprise on Kubernetes。 该部署脚本随 deploy.properties 文件提供,该文件可为您的 ArcGIS Enterprise on Kubernetes 部署提供一组提示您输入唯一值的参数。

注:
建议您运行 password-encrypt.sh 工具生成用于 deploy.properties 文件的加密密码

  1. Kubernetes 客户端计算机上,以管理员身份打开终端。
  2. 将目录更改为部署脚本和 deploy.properties 文件所在的目录。
  3. 打开 deploy.properties 文件。
  4. 有关用户输入的摘要,请参考文件中的描述性注释,并为文件中列出的每个参数提供值。

    文件分为以下部分:

    • 部署平台
    • 命名空间
    • 加密密钥文件
    • 容器注册表
    • 完全限定域名 (FQDN)
    • TLS 证书
    • 其他属性
  5. 保存文件。 或者,可以重命名文件。
  6. 在终端使用以下命令格式运行部署脚本:
    ./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="${K8S_CLUSTER_DOMAIN:-cluster.local}" - 如果您有用于服务和 Pod 的自定义 DNS(例如,organization.com),则可以使用此属性来允许 ArcGIS Enterprise on Kubernetes 使用自定义 DNS。 默认值为 cluster.local