Air-gapped environments present unique challenges when deploying Kubernetes workloads, including managing network isolation while maintaining cluster functionality. A key part of this puzzle is setting up ingress in these air-gapped deployments. While ingress controllers in standard Kubernetes setups enable external connectivity, air-gapped environments demand fine-tuned solutions to ensure external access without compromising the disconnected nature of the system.
This blog post breaks down how to set up Kubernetes ingress in air-gapped deployments with both precision and simplicity. By the end, you'll have actionable insights for implementing robust ingress configurations in your air-gapped clusters.
What Makes Air-Gapped Deployments Different for Ingress?
In air-gapped environments, the key constraint is the absence of direct internet access. No automatic downloads, updates, or external connections can be assumed. For Kubernetes ingress, this means:
- No direct outbound connections – cloud-native solutions like managed load balancers and DNS providers are off the table.
- Private or manual management of ingress endpoints – you need to handle TLS certificates, routes, and DNS resolution within the confines of the isolated network.
- Controlled package distribution – container images, binaries, and updates must be manually brought into the environment.
These conditions fundamentally reshape how ingress controllers are configured and deployed.
Core Requirements for Air-Gapped Kubernetes Ingress
When deploying ingress in an air-gapped Kubernetes environment, you need a solution that supports:
- Internal Load Balancers: Use solutions that work entirely within your network, such as MetalLB for bare-metal or self-contained environments.
- Static IP Assignment: Ensure ease of routing by reserving static IP addresses for ingress endpoints.
- Self-Managed TLS Certificates: Use a solution like cert-manager configured for private certificate authorities or manual certificate loading.
- Customizable DNS: Rely on internal or manually configured DNS servers for host-based routing.
Understanding these requirements is a good starting point for implementing ingress. Now let’s explore a practical configuration.
Step-by-Step: Deploying Kubernetes Ingress in an Air-Gapped Cluster
Below is an example setup using popular tools that align with air-gapped constraints.
1. Install Kubernetes in Your Air-Gapped System
First, ensure you’ve bootstrapped Kubernetes using air-gapped-friendly images. Tools like kubeadm allow you to specify preloaded images stored locally in your private registry.