Operate with restricted or no internet egress
Some clusters run where tenant workloads have no direct path to the internet. a private datacenter VLAN, a 1:1-NAT edge, or a deliberately restricted egress policy. Kube-DC is built to keep working there: both image planes it depends on have an on-cluster source that is default-on for new installs, so a tenant VM or Pod does not need WAN egress to fetch its image.
This page is the map. The mechanics live in the linked operator guides.
The two image planes
| Plane | On-cluster source (default-on) | Detailed guide |
|---|---|---|
| Container images | registry-depot (zot, an S3-backed registry) + the RKE2 embedded registry mirror (spegel) that P2P-shares pulled layers across nodes | installation-overview.md "What the Fleet installs" |
| VM and OS images | cdi-os-mirror, a weekly mirror of upstream OS images into the on-cluster S3 bucket (cdi-os-images on the local RGW), so CDI HTTP-source imports stay on-cluster | managing-os-images.md, os-image-operations.md |
Both are scaffolded automatically by kube-dc bootstrap init (the
image-acceleration writer); an older fleet-starter missing a piece is skipped
with a warning rather than failing the install.
Both planes depend on object storage
The on-cluster image sources are S3-backed. registry-depot and
cdi-os-mirror both write to the cluster's Rook RGW. That is the load-bearing
dependency to understand for restricted-egress clusters:
- If object storage is healthy, images flow on-cluster and tenants need no egress to boot a VM or start a Pod from a mirrored image.
- If object storage is degraded or absent, neither mirror has anywhere to serve from. A tenant with no NAT and no working RGW then has no image source at all. This is the "green install, VM will not boot" trap.
On a restricted-egress cluster, object storage is not optional. It is the substrate the image planes stand on. The installer now verifies the raw OSD block devices exist and are empty before install, precisely because a silently failed OSD takes object storage down, and with it both image planes.
Known limitation. There is no object-storage-free image route today: a local-path-backed golden-image path (for clusters that run VMs without Rook) is tracked as a follow-up, not shipped. Until then, a VM-capable restricted-egress cluster needs a working RGW.
Tenant internet egress still needs a live gateway
For workloads that do need outbound internet (for example, pulling an image that is not
mirrored, or a tenant app calling an external API), tenant egress leaves through
EXT_NET_GATEWAY. That gateway must be a live L2 neighbor that answers ARP. An
address that is merely inside the ext CIDR but silent on ARP produces a clean
install with black-holed tenant egress. See
networking-external.md "The egress gateway must answer
ARP".
What the installer checks for you
kube-dc bootstrap init runs two advisory (fail-open) preflight probes that
catch the most common restricted-egress traps before they become a green install
with a dead data path:
- Egress-gateway ARP probe: warns if
EXT_NET_GATEWAYdoes not answer ARP on the ext interface (tenant internet egress would black-hole). - OSD block-device check: warns if a configured Rook OSD device is missing or already carries data (object storage, and with it both image planes, would never come up).
Both only warn, and neither blocks the install. Read the output. On a restricted-egress cluster a warning here is usually the difference between a working cluster and a silently broken one.
Checklist for a restricted-egress install
- Confirm object storage is real: raw OSD devices attached and empty (the
installer probes this; verify by hand with
lsblkif unsure). - Confirm
EXT_NET_GATEWAYanswers ARP (the installer probes this). - Confirm the OS-image mirror has run at least once so the images tenants will
boot are present in
cdi-os-images. See managing-os-images.md "Running the refresh manually". - For Windows, confirm the golden image is imported and snapshotted on the cluster. See os-image-operations.md, "Distribution".