Prepare an External Platform Image Registry
For new production deployments, you can use a customer-managed external image registry as the central image source for Core, managed clusters, and Extensions. The registry must contain the complete target-version payload before you start the installer.
When an external registry is selected, the installer does not deploy the platform built-in Registry and does not copy missing images or packages into the external registry. Complete both upload modes on this page before running setup.sh.
TOC
Understand the Registry RolesRegistry RequirementsRequired Capabilities and AccessProduction RecommendationsPrepare the Target-Version PayloadStart the InstallerValidate the External Registry ConfigurationPrepare the Registry Before an UpgradeTroubleshootingUnderstand the Registry Roles
The following registry roles are independent:
This page configures the platform image source used by components and clusters. It does not configure an image service for application workloads.
The platform built-in Registry remains supported for existing environments and non-production evaluation. This page does not describe an online migration from the built-in Registry to an external registry.
Registry Requirements
Required Capabilities and Access
Before uploading the target-version payload, confirm that the registry:
- Supports the standard container image push and pull operations performed by the Core Package tools.
- Uses an address in the form
<host-or-IP>[:port], for exampleregistry.example.com:5000. Do not includehttp://orhttps://in the installer registry address. - Is reachable through the required firewalls, proxies, and network routes from the installation node and every cluster node that pulls platform images.
- Provides upload credentials that can create or update the required repository paths and push images. Credentials passed to
setup.shmust have pull permission. The upload and pull credentials may belong to different accounts; when you authenticatesetup.sh, provide its username and password together. - Has enough available storage for the target-version Core and Extension payload that you upload.
Production Recommendations
For a production registry:
- Use HTTPS with a certificate that is valid for the registry address. Ensure that the installation node and every cluster node that pulls platform images trust the issuing CA.
- Use a stable DNS name that resolves from the installation node and all cluster nodes.
- Plan capacity for every required CPU architecture and for the versions retained for upgrade, rollback, and node recovery.
- Provide availability, monitoring, backup, and recovery appropriate to your environment. Registry availability is required when new Pods start, nodes are replaced, clusters are created or upgraded, and Extensions are installed or upgraded.
- Configure retention so it does not delete manifests or digests still referenced by installed platform versions, clusters, or Extensions.
consumes the external registry but does not install, upgrade, back up, monitor, or repair it. Follow your registry vendor's administration documentation for those operations.
Prepare the Target-Version Payload
Use the Core Package that exactly matches the Distribution Version and CPU architecture that you will install. Do not reuse a payload from another version or architecture.
-
Complete Download, extract the Core Package, and change to its
installer/directory. -
Copy the required Aligned Extension packages into
plugins/as described in Installing. Theallupload mode processes the packages currently present in this directory. -
Set the registry address and upload credentials in the current shell. Read the password without writing it into shell history:
For a registry that allows anonymous push, set both
REGISTRY_USERNAMEandREGISTRY_PASSWORDto empty values. -
From the extracted
installer/directory, run both upload modes. You can run the commands in either order, but both must finish successfully:The modes overlap, but neither replaces the other:
alluploads the product image, the cluster version operator image, and every*.tgzpackage currently inplugins/. It does not upload the installer artifact.necessaryuploads the product image, the cluster version operator image, the installer artifact, and the bootstrap plugins required to create theglobalcluster. It does not upload every package inplugins/.
-
In the registry administration interface or API, confirm that the newly uploaded repositories and manifests are present and are not immediately eligible for cleanup.
Start the Installer
Start the installer from the same extracted installer/ directory. The following example reuses the upload credentials. If your registry uses a separate pull account, replace REGISTRY_USERNAME and REGISTRY_PASSWORD with credentials that have pull permission before running setup.sh.
For an authenticated registry, provide the username and password together:
For a registry that permits anonymous pull, omit both --username and --password:
Add other required installer options to the same command, such as --ip-family ipv6 for an IPv6 single-stack global cluster. Continue with Installing and keep Image Repository set to External with the same address and pull credentials used for setup.sh.
After setup.sh no longer needs the shell variable, remove the password from the current shell:
Validate the External Registry Configuration
After installation completes, run the following checks from an administrative machine with access to the global cluster.
Confirm that ProductBase records the expected address and marks the registry as external:
The output must contain the configured address followed by true.
For an authenticated registry, confirm that the pull Secret exists without printing its contents:
Confirm that the global cluster records the same registry address. Check only whether the password annotation exists; do not print its value:
Confirm that every discovered artifact is ready. No output is expected from this command:
Confirm that the Extension catalog was created and that running Pods are not blocked by image pulls:
The Pod command must produce no output. Complete the remaining installation checks in Validation.
Prepare the Registry Before an Upgrade
An environment installed with an external registry keeps using that registry during upgrades. Before every upgrade:
- Download and extract the Core Package for the exact target Distribution Version and architecture.
- Prepare the required target-version Aligned packages as described in Pre-Upgrade Preparation.
- From the target Core Package's
installer/directory, run bothres/upload.sh allandres/upload.sh necessaryagainst the external registry, using the commands on this page. - Use
violet pushto publish the other Aligned and Agnostic Extension packages required for the upgrade. See Upload Packages. - Repeat the artifact, ModulePlugin, registry reachability, and image-pull checks before opening the maintenance window.
When ProductBase.spec.registry.external is true, upgrade.sh automatically skips image synchronization. Do not interpret a successful skip as confirmation that the target payload exists. Upload and validate the target Core and Extension payload before continuing with Upgrade the global cluster.