”Reachable” is not the check that matters
This is the one thing to take from this page.Registering one
- Dashboard
- API
- MCP
Registries → Add registry, then Test before relying on it.
What the form asks
Each row then offers Test (the push probe), Check charts (which of the chart versions the platform needs are stocked; read-only, copies nothing), Mirror charts and Pre-pull images.
Registries are referenced by name, not by id. A supervisor declares which registry it uses by naming it, so the credentials stay in the catalogue Celum reads server-side rather than on a cluster-scoped resource anyone with read access could see. A name that matches no registered registry is normally rejected — because the resolver would otherwise fall back silently and a saved-but-inert choice is invisible to whoever saved it.
Mirroring an estate that cannot reach the internet
Two halves, and they are separate because charts and images travel differently. Charts.POST /api/registries/{id}/mirror-charts copies the platform catalogue’s charts into the registry. A chart is stocked on demand at install time too, but only when the stock check succeeded and found it missing — on a read error Celum deliberately does not push, and lets Flux pull instead. That asymmetry exists because a read failure once forced a write, and a pull-only credential then turned a recoverable “version not found” loop into a hard install failure.
Images. GET /api/registries/required-images lists every image the platform needs to bring a cluster up, with a count — the list to mirror before onboarding an air-gapped supervisor. POST /api/registries/{id}/prepull pulls them into the registry, asynchronously; poll the job.
Pointing the nodes at a mirror is a third thing again, configured per supervisor rather than here: the containerd mirror declaration maps each upstream to a proxy-cache project. The credential for it is matched by host against these registered registries, so register the mirror here first — an unmatched host silently yields an anonymous pull, which works on a registry whose proxy projects allow anonymous read and fails on the first one that does not.
Guest clusters inherit all of this, and nothing about it is declared twice. What a guest’s nodes and add-ons resolve to, which charts are redirected and which are deliberately withheld, and why “pull through local Harbor” being supervisor-only does not contradict any of it — Registry mirroring in depth maps every channel end to end.
Image buckets
The page’s second tab, Image buckets, holds the S3 / MinIO bucket connections the Image library imports disk images and ISOs from. A connection has:- a supervisor, which gets the connection’s credentials as a Secret in its image-library namespace;
- a name, and optionally a site, which makes it the default bucket for supervisors on that site;
- a content label, free text shown on the row and used to pre-filter the object picker (it enforces nothing);
- the endpoint URL, the bucket, and an access key ID and secret key, held by the platform.
create_image_bucket, update_image_bucket.
What commonly goes wrong
Related
Charts & the mirror
Which registry a supervisor resolves to, and the audit for releases installed before it was declared.
Platform onboarding
Where a supervisor declares its chart and image sources — the first step, before anything is installed.
App catalog
Third-party charts, which carry their own repository URL.
Image library
VM golden images — a different kind of artefact, stored as PVCs rather than in a registry.
Registry mirroring in depth
Every channel end to end — what guests inherit, what is Harbor-specific, and the two credential traps.