Use your organization's container registry

ArcGIS 11.5 | |  Help archive

When using your organization's container registry with ArcGIS Enterprise on Kubernetes, you must prepare it with the Esri container images prior to new deployments, updates, or upgrades. To do so, you can use the registry tools that are included with the software to push Esri's Docker Hub images to your organization's container registry.

Understand registry tools

The ArcGIS Enterprise on Kubernetes deployment package includes a set of tools that are used to transfer images to your organization's container registry.

These tools are found under /setup/tools/registry-tools in the directory where you extracted the deployment package and include the following:

  • image-download.sh—Downloads all container images to your specified storage device as .tar.gz archives.
  • image-upload.sh—Uploads container images from the storage device to your container registry.
  • image-transfer.sh—Transfers images directly between two registries. This is faster than using image-download.sh and image-upload.sh if the client workstation can access both registries.
  • create-offline-manifest.sh—Downloads the version manifest and imports it into your organization, allowing offline access to updates and upgrades.

The registry-tools folder also contains the registry-tools.properties.template file. This template properties file can be used with the image-download.sh, image-upload.sh, and image-transfer.sh tools. Refer to the Readme.md file in this folder for more information on the properties file and registry tools.

Prepare your registry when your client machine has access to Docker Hub and your organization's container registry

If your client machine has access to Docker Hub and your organization's registry, you can prepare your registry for a new deployment, update, or upgrade by using the image-transfer.sh tool.

Complete the following steps:

  1. From My Esri, obtain the software version of ArcGIS Enterprise on Kubernetes that you intend to deploy.
  2. Download and extract the deployment script to your client machine.

    To prepare for an upgrade, download the new version of the deployment script to get the latest images.

  3. Open a terminal and change directories to the /setup/tools/registry-tools directory.
  4. If your registry requires you to pre-create the image repositories, for example in Amazon Elastic Container Registry (ECR), run the following command to get a list of required image repositories:
    ./image-transfer.sh -l
    
  5. Obtain relevant version information:
    • If preparing for a new deployment, identify the corresponding version tag for the software release you intend to deploy by referring to the release notes or by running the following command to view the available image tags:
      ./image-transfer.sh -s
      

      You will use these tags when specifying the DOWNLOAD_TAGS property.

    • If preparing for an upgrade or update, identify the current version of your organization, which combines the version and build. Locate this information by signing into ArcGIS Enterprise Manager, scrolling to the bottom of the Overview page, and clicking About this organization.

      For example, for version 11.4.0 and build 6144, the CURRENT_VERSION would be 11.4.0.6144.

  6. Use the template located in the registry-tools folder or create a separate properties file and include these parameters:
    DOWNLOAD_REGISTRY="docker.io/esridocker"
    DOWNLOAD_USER="<username>"
    DOWNLOAD_PASS="<password>"
    CURRENT_VERSION="<current_version_tag>"
    DOWNLOAD_TAGS="<version_tag>"
    UPLOAD_REGISTRY="<registry_host>/<repository_prefix>"
    UPLOAD_USER="<username>"
    UPLOAD_PASS="<password>"
    UPLOAD_TAGS="<version_tag>"
    DOWNLOAD_DIR="</path/to/download/directory>"
    ENCRYPTION_KEYFILE="</path/to/keyfile.txt>"
    

    For details on some of these properties, review the following:

    • CURRENT_VERSION—The current version of your organization identified in step 5, used when preparing for updates and upgrades. If preparing for a new deployment, this property will be skipped.
    • DOWNLOAD_TAGS and UPLOAD_TAGS—Used for new deployments. If preparing for updates or upgrades, these properties will be skipped.
    • UPLOAD_REGISTRY—The container registry that you will upload images to. Provide the registry host and, if applicable, the repository prefix associated with your registry. The registry host is the fully qualified domain name of the container registry host. The repository prefix is the image repository used to store container images.
    • ENCRYPTION_KEYFILE—The encryption keyfile is a plain text file used for AES-256 encryption and decryption of passwords. The content of this file is text that you specify and should not contain passwords. This file should remain in a fixed location and the contents should not be changed, for example: 
      $ echo 'My Encryption Text!' >> </path/to/keyfile.txt>
      
  7. Run the script using the command relevant to your workflow:
    • Preparing for a new deployment
      ./image-transfer.sh -f </path/to/properties/file>
      
    • Preparing for an update
      ./image-transfer.sh -f </path/to/properties/file> --update
      
    • Preparing for an upgrade
      ./image-transfer.sh -f </path/to/properties/file> --upgrade
      

    For details on related flags, review the following:

    • --update—Transfers the container images needed to apply the latest update.
    • --upgrade—Transfers container images needed to upgrade to the latest release of ArcGIS Enterprise on Kubernetes.
    • --view—Use with --update or --upgrade to view the accumulated image list without downloading.
    Because the script transfers multiple images to your container registry, it takes some time to complete. If a transfer is interrupted, rerun the script to resume it.

    Tip:

    After the image_transfer.sh tool completes, the images still exist within the container runtime cache. To free up space after it has completed successfully, it is recommended that you clean up items not needed in the Docker cache. You can do this by running docker system prune or docker image rm.

Prepare your registry that is disconnected from the internet

If your organization's registry is disconnected from the internet, you can prepare your registry for a new deployment, update, or upgrade by using the image-download.sh and image-upload.sh tools.

Complete the following steps:

  1. From My Esri, obtain the software version of ArcGIS Enterprise on Kubernetes that you intend to deploy.
  2. Download and extract the deployment scripts to the client machine running the download tool and the client machine running the upload tool.

    It is recommended that you use the same version of the deployment scripts. To prepare for an upgrade, download the new version of the deployment scripts to get the latest images.

  3. On the client machine running the download tool, open a terminal and change directories to the /setup/tools/registry-tools directory.
  4. If your registry requires you to pre-create the image repositories—for example, in Amazon Elastic Container Registry (ECR)—run the following command to get a list of required image repositories:
    ./image-download.sh -l
    
  5. Obtain relevant version information:
    • If preparing for a new deployment, identify the corresponding version tag for the software release you intend to deploy by referring to the release notes or by running the following command to view the available image tags:
      ./image-download.sh -s
      

      You will use these tags when specifying the DOWNLOAD_TAGS property.

    • If preparing for an upgrade or update, identify the current version of your organization, which combines the version and build. Locate this information by signing into ArcGIS Enterprise Manager, scrolling to the bottom of the Overview page, and clicking About this organization.

      For example, for version 11.4.0 and build 6144, the CURRENT_VERSION would be 11.4.0.6144.

  6. If you are preparing for a new deployment and not using the properties file, run the image-download.sh tool using the following command format:
    ./image-download.sh -r docker.io/esridocker -u <username> -p <password> -d </path/to/download/directory> -t <version_tag>
    
  7. If you are using the properties file, use the template located in the registry-tools folder or create a separate properties file and include these parameters:
    DOWNLOAD_REGISTRY="docker.io/esridocker"
    DOWNLOAD_USER="<username>"
    DOWNLOAD_PASS="<password>"
    CURRENT_VERSION="<current_version_tag>"
    DOWNLOAD_TAGS="<version_tag>"
    DOWNLOAD_DIR="</path/to/download/directory>"
    ENCRYPTION_KEYFILE="</path/to/keyfile.txt>"
    

    For details on some of these properties, review the following:

    • CURRENT_VERSION—The current version of your organization identified in step 5, used when preparing for updates and upgrades. If preparing for a new deployment, this property will be skipped.
    • DOWNLOAD_TAGS—Used for new deployments. If preparing for updates or upgrades, this property will be skipped.
    • ENCRYPTION_KEYFILE—The encryption keyfile is a plain text file used for AES-256 encryption and decryption of passwords. The content of this file is text that you specify and should not contain passwords. This file should remain in a fixed location and the contents should not be changed, for example: 
      $ echo 'My Encryption Text!' >> </path/to/keyfile.txt>
      
    1. Run the script using the command relevant to your workflow:
      • Preparing for a new deployment
        ./image-download.sh -f </path/to/properties/file>
        
      • Preparing for an update
        ./image-download.sh -f </path/to/properties/file> --update
        
      • Preparing for an upgrade
        ./image-download.sh -f </path/to/properties/file> --upgrade
        

      For details on related flags, review the following:

      • --update—Transfers the container images needed to apply the latest update.
      • --upgrade—Transfers container images needed to upgrade to the latest release of ArcGIS Enterprise on Kubernetes.
      • --view—Use with --update or --upgrade to view the accumulated image list without downloading.

      Because the script downloads multiple images from the Esri repository, it takes some time to complete. If a download is interrupted, rerun the script to resume it.

      Tip:
      After the image_download.sh tool completes, the images still exist within the container runtime cache. To free up space after it has completed successfully, it is recommended that you clean up items not needed in the Docker cache. You can do this by running docker system prune or docker image rm

  8. Follow your organization's processes for moving images to your disconnected client machine.

    This machine must have access to your private registry.

  9. On the client machine with access to your container registry, open a terminal and change directories to the /setup/tools/registry-tools directory.
  10. If you are not using the properties file, run the image-upload.sh tool using the following command format:
    ./image-upload.sh -r <registry_host>/<repository_prefix> -u <username> -p <password> -d </path/to/download/directory> -t <version_tag>
    
  11. If you are using the properties file, use the template located in the registry-tools folder or create a separate properties file and include these parameters:
    UPLOAD_REGISTRY="<registry_host>/<repository_prefix>"
    UPLOAD_USER="<username>"
    UPLOAD_PASS="<password>"
    UPLOAD_TAGS="<version_tag>"
    DOWNLOAD_DIR="</path/to/download/directory>"
    ENCRYPTION_KEYFILE="</path/to/keyfile.txt>"
    

    For details on some of these properties, review the following:

    • UPLOAD_REGISTRY—The container registry that you will upload images to. Provide the registry host and, if applicable, the repository prefix associated with your registry. The registry host is the fully qualified domain name of the container registry host. The repository prefix is the image repository used to store container images. If preparing for an update or upgrade, ensure you specify the directory of the copied image archives.
    • UPLOAD_TAGS—Used when preparing new deployments. If preparing for updates or upgrades, this property will be skipped.
    1. Run the script using the command relevant to your workflow:
      • Preparing for a new deployment
        ./image-upload.sh -f </path/to/properties/file>
        
      • Preparing for an update or upgrade
        ./image-upload.sh -f </path/to/properties/file> -t all
        

      Specifying all for the -t option will upload all the images you downloaded earlier using the --update or --upgrade flags.

      Because the script uploads all tagged images to your container registry, it takes some time to complete. If an upload is interrupted, rerun the script to resume it.

      Note:

      After the image-upload.sh tool completes, the images still exist within the container runtime cache. To free up space after it has completed successfully, it's recommended that you clean up items not needed in the Docker cache. You can do this by running docker system prune or docker image rm.