The server room was silent, except for the hum of machines sealed from the outside world. No internet. No cloud. No room for mistakes.
Air-gapped deployment is the ultimate test of control. Every byte, every connection, every container must be moved with precision. When you run workloads in an isolated network, the usual playbook for integrations collapses. Sidecar injection—so simple in connected clusters—becomes a harder problem. You can’t pull images from a public registry. You can’t fetch configs on demand. You can’t rely on external control planes.
Here’s the reality: in an air-gapped Kubernetes environment, sidecar injection must be fully self-contained. That means you build, store, and serve the sidecar images inside the air-gapped network. You package your injector’s logic so it can run offline, using only private registries and local manifests. You rewrite your deployment flows to avoid external calls. Even seemingly trivial details, like webhook certificate rotation, must be handled without a heartbeat to the public internet.
The process starts with preloading all sidecar images before the system goes dark. Your CI/CD pipeline pushes these to your private registry. Then you deploy the injector as a service inside the cluster, configured to read from those offline sources. The mutating webhook must be pointed only at internal endpoints you control, and the manifests must reference image URLs that resolve inside the gap. Every moving part needs tight version control because patching in an air-gapped setup means full redeploys, not quick pulls.