An installation pulls its platform images from the mirror

The platform's container images — the portal and its database migration — used to be pulled from the upstream Azure Container Registry by every installation, which meant every installation held an upstream registry credential beside the plugin-registry key it already had. The read-through mirror one installation serves at /v2 removes that second credential: a caller authenticates with its instance key, and the mirror holds the one upstream credential for everyone.

This release makes the mirror the source of platform images for every installation except the one serving it — that instance cannot serve the image that boots it, so it stays on the upstream permanently (A Container Registry in Memex).

In the chart, three values describe a consumer: selfUpdate.registry names the mirror host, portal.imagePullSecret names the pull credential its pods use for it — rendered on the portal Deployment and the migration Job, so a roll can never leave the Job unable to pull — and the mirror instance's own configuration lives under containerImages, rendered key by key and off unless set. A chart can now also create an installation's persistent volumes (persistence.<name>.create: true, with size and storage class required and the claims kept on uninstall), so a newly provisioned installation starts with real storage rather than an empty directory that vanishes on restart.

In the self-updater, a registry that is not an Azure Container Registry is listed through the OCI Distribution API with the installation's plugin-registry key — the same handshake any registry client speaks, every page of a paginated listing followed, and a refused credential reported as an error rather than mistaken for "nothing newer". An installation on the upstream registry behaves exactly as before.

In the operator, hosting-pull-secret turns the instance key in Key Vault into the pull credential its namespace needs — creating the namespace first, since it runs before the release is deployed — and never prints the key. The operator image itself is now published on every merge, so a fix to a lifecycle script reaches the Jobs that run it instead of only the repository.

Reconnecting…
The server was updated. Reloading the page to pick up the latest version.