使用组织的容器注册表

当您将组织的容器注册表用于 ArcGIS Enterprise on Kubernetes 时,必须在执行新的部署、更新或升级操作之前使用 Esri 容器镜像完成准备工作。 为此,您可以使用软件附带的注册表工具将 Esri Docker Hub 镜像推送到您组织的容器注册表中。

了解注册表工具

ArcGIS Enterprise on Kubernetes 部署包包含一组用于将图像传输到您组织的容器注册表的工具。

这些工具位于您提取部署包的目录中的 setup/tools/registry-tools 下,其中包括以下内容:

  • image-download.sh - 下载所有容器镜像到指定的存储设备,作为 .tar.gz 档案。
  • image-upload.sh - 将容器镜像从存储设备上传到您的容器注册表。
  • image-transfer.sh - 在两个注册表之间直接传输图像。 如果客户端工作站可以访问两个注册表,这比使用 image-download.shimage-upload.sh 更快。
  • create-offline-manifest.sh - 下载版本清单并将其导入到您的组织中,允许离线访问更新和升级。

registry-tools 文件夹还包含 registry-tools.properties.template 文件。 此模板属性文件可用于 image-download.shimage-upload.shimage-transfer.sh 工具。 要获取有关属性文件和注册表工具的详细信息,请参阅此文件夹中的 Readme.md 文件。

当客户端计算机可以访问 Docker Hub 和组织的注册表时,准备注册表

如果您的客户端计算机可以访问 Docker Hub 和您组织的注册表,则可以使用 image-transfer.sh 工具为新部署、更新或升级准备注册表。

要准备您的注册表,请完成以下步骤:

  1. 通过 My Esri 获取要部署的 ArcGIS Enterprise on Kubernetes 软件版本。
  2. 下载部署脚本并将其提取到您的客户端计算机。

    为了准备升级,请下载新版本的部署脚本以获取最新的图像。

  3. 打开终端并切换到 setup/tools/registry-tools 目录。
  4. 如果您的注册表要求您预先创建镜像存储库,例如在 Amazon Elastic Container Registry (ECR) 中,请运行以下命令来获取所需镜像存储库的列表:
    /setup/tools/registry-tools/image-transfer.sh -l
    
  5. 通过参考发行说明或运行以下命令查看可用的图像标签,确定您要部署的软件版本的相应版本标签:

    /setup/tools/registry-tools/image-transfer.sh -s
    

  6. 使用位于 registry-tools 文件夹中的模板或创建单独属性文件,其中应包括以下参数:
    DOWNLOAD_REGISTRY="docker.io/esridocker"
    DOWNLOAD_USER="<username>"
    DOWNLOAD_PASS="<password>"
    CURRENT_VERSION="<current_version_tag>"
    DOWNLOAD_TAG="<version_tag>"
    UPLOAD_REGISTRY="<registry_host>/<organization>"
    UPLOAD_USER="<username>"
    UPLOAD_PASS="<password>"
    UPLOAD_TAG"="<version_tag>"
    DOWNLOAD_DIR="</path/to/download/directory>"
    ENCRYPTION_KEYFILE"</path/to/keyfile.txt>"
    

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

    $ echo 'My Encryption Text!' >> /path/to/keyfile.txt
    
  7. 使用以下命令运行脚本:
    ./image-transfer.sh -f </properties/file/path>
    

    由于该脚本会将所有标记的镜像传输到您的容器注册表,因此完成该操作需要花费一些时间。 如果传输中断,请重新运行脚本,恢复下载。

    提示:

    image_transfer.sh 工具完成后,图像仍然存在于容器运行时缓存中。 为了在成功完成后释放空间,建议清理 Docker 缓存中不需要的项目。 您可以通过运行 docker system prunedocker image rm 来执行此操作。

当您组织的注册表与互联网断开连接时,请准备您的注​​册表

如果您组织的注册表与互联网断开连接,您可以使用 image-download.shimage-upload.sh 工具为新的部署、更新或升级准备注册表。

要准备您的注册表,请完成以下步骤:

  1. 通过 My Esri 获取要部署的 ArcGIS Enterprise on Kubernetes 软件版本。
  2. 将部署脚本下载并提取到运行下载工具的客户端计算机和运行上传工具的客户端计算机。

    建议使用相同版本的部署脚本。 为了准备升级,请下载新版本的部署脚本以获取最新的图像。

  3. 在运行下载工具的客户端计算机上,打开终端并切换到 setup/tools/registry-tools 目录。
  4. 如果您的注册表要求您预先创建镜像存储库,例如在 Amazon Elastic Container Registry (ECR) 中,请运行以下命令来获取所需镜像存储库的列表:
    /setup/tools/registry-tools/image-download.sh -l
    
  5. 通过参考发行说明或运行以下命令查看可用的图像标签,确定您要部署的软件版本的相应版本标签:

    /setup/tools/registry-tools/image-download.sh -s
    

  6. 如果未使用属性文件,请使用以下命令格式运行 image-download.sh 工具:
    ./image-download.sh -r docker.io/esridocker -u <username> -p <password> -d </path/to/download/directory> -t <version_tag>
    
  7. 如果使用属性文件,请使用位于 registry-tools 文件夹中的模板或创建单独属性文件,其中应包括以下参数:
    DOWNLOAD_REGISTRY="<docker.io/esridocker>"
    DOWNLOAD_USER="<username>"
    DOWNLOAD_PASS="<password>"
    DOWNLOAD_TAG="<version_tag>"
    DOWNLOAD_DIR="</path/to/download/directory>"
    ENCRYPTION_KEYFILE="</path/to/keyfile.txt>"
    

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

    $ echo 'My Encryption Text!' >> /path/to/keyfile.txt
    

    1. 使用以下命令运行脚本:
      ./image-download.sh -f </properties/file/path>
      

      由于该脚本将从 Esri 资料档案库下载所有标记的镜像,因此完成该操作需要花费一些时间。 如果下载中断,请重新运行脚本以恢复下载。

      提示:

      image_download.sh 工具完成后,图像仍然存在于容器运行时缓存中。 为了在成功完成后释放空间,建议清理 Docker 缓存中不需要的项目。 您可以通过运行 docker system prunedocker image rm 来执行此操作。

  8. 按照您所在组织的流程将图像移动到断开连接的客户端机器。

    这台机器必须有权访问您的私人注册表。

  9. 在具有访问容器注册表权限的客户端计算机上,打开终端并切换到 setup/tools/registry-tools 目录。
  10. 如果未使用属性文件,请使用以下命令格式运行 image-upload.sh 工具:
    ./image-upload.sh -r <registry_host>/<organization> -u <username> -p <password> -d </path/to/download/directory> -t <version_tag>
    
  11. 如果使用属性文件,请使用位于 registry-tools 文件夹中的模板或创建单独属性文件,其中应包括以下参数:
    UPLOAD_REGISTRY="<registry_host>/<organization>"
    UPLOAD_USER="<username>"
    UPLOAD_PASS="<password>"
    UPLOAD_TAG="<version_tag>"
    DOWNLOAD_DIR="</path/to/download/directory>"
    ENCRYPTION_KEYFILE="</path/to/keyfile.txt>"
    
    1. 使用以下命令运行脚本:
      ./image-upload.sh -f <properties file path>
      

      由于该脚本会将所有标记的镜像上传到您的容器注册表,因此完成该操作需要花费一些时间。 如果上传中断,请重新运行脚本以恢复上传。

      注:

      image-upload.sh 工具完成后,图像仍然存在于容器运行时缓存中。 为了在成功完成后释放空间,建议清理 Docker 缓存中不需要的项目。 您可以通过运行 docker system prunedocker image rm 来执行此操作。

为更新或升级准备注册表

如果您在应用最新更新或升级组织之前准备注册表,请使用属性文件并设置 CURRENT_VERSION 属性,确保注册表工具仅下载或传输所需的镜像。 完成上述部分中的步骤 1-4,并填写属性文件后,请执行以下步骤:

  1. 登录到 Admin API,确定您组织的当前版本,并将版本和内部版本组合。

    例如,对于版本 11.4.0 和内部版本 6144,CURRENT_VERSION 为 11.4.0.6144。

  2. 在属性文件中设置 CURRENT_VERSION 属性。
  3. 如果准备应用最新更新,请运行 image-transfer.shimage-download.sh 工具。
    1. 如果您的客户端工作站同时可以访问 Docker Hub 和目标组织注册表,请使用以下格式运行命令:
      ./image-transfer.sh -f <properties_file> --update
      
    2. 如果您的客户端工作站可以访问 Docker Hub 但无法访问目标组织注册表,请使用以下格式运行命令:
      ./image-download.sh -f <properties_file> --update
      
  4. 如果您准备将组织升级到下一个发布版本,请运行 image-transfer.shimage-download.sh 工具。
    1. 如果您的客户端工作站同时可以访问 Docker Hub 和目标组织注册表,请使用以下格式运行命令:
      ./image-transfer.sh -f <properties_file> --upgrade
      
    2. 如果您的客户端工作站可以访问 Docker Hub 但无法访问目标组织注册表,请使用以下格式运行命令:
      ./image-download.sh -f <properties_file> --upgrade
      
  5. 注:
    如果您使用了 image-download.sh 工具,还需要将镜像传输到可以访问组织注册表的客户端工作站,并运行 image-upload.sh 工具,指向复制的镜像存档所在的目录。