An Air Gap Is a Pipeline, Not a Wall
An air gap is a one-way artifact pipeline, not just a blocked network. This explainer follows six stages, from mirroring dependencies outside to operating inside with no egress.
Red HatAjay KanseProblem & solution
Scaling OpenShift Dev Spaces in air-gapped environments requires addressing four friction points: third-party monitoring agents, rootless container runtimes, custom install namespaces, and admission webhooks. Dynatrace OneAgent sidecar conflicts are resolved by labeling all Dev Spaces namespaces with dynatrace.com/inject: “false” to prevent init container injection. Rootless Podman inside workspace pods needs user namespace UID/GID ranges respecting a 65,536 UID ceiling; UDI 3.22 requires a manual script with a corrected range, while UDI 3.26 handles mapping automatically. Stale admission webhooks from a previous operator install namespace must be manually deleted before reinstalling into a different namespace to avoid conflicting definitions. A readiness checklist includes mirroring operator catalogs, deploying an internal Open VSX server with PostgreSQL, configuring PKI trust via ConfigMap, and disabling the default devfile registry.
The post is the final part of a 3-part series on running governed cloud development environments on Red Hat OpenShift. It focuses on production caveats and technical resolutions for scaling OpenShift Dev Spaces in air-gapped environments, covering sidecar conflicts, rootless Podman, stale webhooks, and a readiness checklist.
The post provides specific technical resolutions for each friction point, including YAML configuration snippets, shell scripts, and a table of common symptoms and fixes. It also includes a verification checklist for air-gapped readiness.
Dynatrace OneAgent sidecar conflicts with OpenShift Dev Spaces workspace pods can be resolved by labeling all relevant namespaces with dynatrace.com/inject: “false” to prevent init container injection.
Rootless Podman inside workspace pods requires careful user namespace UID/GID range configuration; the hard ceiling of 65,536 UIDs means old scripts using large ranges (e.g., 2,147,483,646) fail, and the fix depends on the UDI image version.
When reinstalling the OpenShift Dev Spaces Operator into a different namespace, stale ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects from the previous install must be manually deleted to avoid conflicting webhook definitions.
Label all OpenShift Dev Spaces namespaces (openshift-devspaces, devspaces-checluster, devspaces-openvsx, and -devspaces sandbox namespaces) with dynatrace.com/inject: "false" to prevent the Dynatrace admission webhook from injecting init containers that conflict with workspace pod security contexts.
The script used a UID/GID subordinate range of 2,147,483,646, which exceeds the Linux user namespace hard ceiling of 65,536 UIDs. In 3.26, stricter enforcement surfaces this latent issue. For UDI 3.22, use a range respecting the ceiling; for UDI 3.26, no manual subuid/subgid script is needed as the image handles mapping automatically.
Before reinstalling, manually delete the ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects left behind by the previous install. Otherwise, both old and new webhook configurations remain registered and conflict, causing setup failures.
Summaries are generated from the original by a language model. Check the original before relying on it.
See the idea
An air gap is a one-way artifact pipeline, not just a blocked network. This explainer follows six stages, from mirroring dependencies outside to operating inside with no egress.
Keep reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
One useful email. Unsubscribe anytime.