运行部署脚本

要部署 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. 创建加密密钥文件。

    加密密钥文件是一个纯文本文件,用于密码的 AES-256 加密和解密。 该文件的内容为您指定的纯文本,并且不应包含密码。 该文件应保留在固定位置,并且不应更改内容。

  4. (可选)在命名空间中创建 TLS 密钥。
  5. 在终端使用以下命令格式运行部署脚本:
    ./deploy.sh
    
  6. 完成参数。

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

    注:

    您无需以 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 证书。

  7. 回答询问您是要部署还是保存属性文件的提示。

    如果需要自定义属性文件中的任何参数(包括其他静默部署属性),则应退出部署脚本并更新磁盘上的文件。 其他属性的常见示例包括更新 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 部署提供一组提示您输入唯一值的参数。

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

    文件分为以下部分:

    • 部署平台
    • 命名空间
    • 加密密钥文件
    • 容器注册表
    • 完全限定域名 (FQDN)
    • TLS 证书
    • 其他属性
  5. 保存文件。 或者,可以重命名文件。
  6. 在终端中,运行 password-encrypt.sh 工具以生成用于 deploy.properties 文件的加密密码
  7. 在终端使用以下命令格式运行部署脚本:
    ./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>