Host Multiple Services in EKS with One LoadBalancer Using NGINX Ingress and Cloudflare
When managing Kubernetes workloads on AWS EKS, using a LoadBalancer for each service can quickly become expensive and inefficient. A cleaner, scalable, and more cost-effective solution is to use an Ingress Controller like NGINX to expose multiple services via a single LoadBalancer. This blog will walk you through how I set up Ingress in my EKS cluster using Helm, configured host-based routing, and mapped domains through Cloudflare.
#
Prerequisites- AWS EKS Cluster set up
kubectl
,helm
, andaws-cli
configured- Services already running in EKS
- Cloudflare account to manage DNS
Get started with EKS in the AWS EKS User Guide.
#
Step 1: Deploy NGINX Ingress Controller using Helm
This will install the NGINX Ingress Controller and expose it through a LoadBalancer service. You can get the external ELB DNS using:
Note the EXTERNAL-IP
of the nginx-ingress-controller
—this is your public ELB DNS.
Learn more about NGINX Ingress at the official Kubernetes documentation.
#
Step 2: Create Your Ingress YAML for Host-Based Routing
Below is an example Ingress manifest to expose a service using a custom domain:
Apply the file using:
#
Step 3: Configure Domain in Cloudflare
Go to your Cloudflare dashboard and create a CNAME record:
- Name:
metube-app-622604
(or any subdomain you want) - Target: your NGINX LoadBalancer DNS (e.g.,
a1b2c3d4e5f6g7.elb.amazonaws.com
) - Proxy status: Proxied ✅
Wait for DNS propagation (~1–5 minutes), and then your service will be available via the custom domain you configured.
Understand DNS management in Cloudflare with the Cloudflare DNS docs.
#
Verify the SetupTry accessing the domain in your browser:
You should see the application running from port 8081
of the backend service.
#
Reference DocumentFor more detailed steps and examples, check out this shared doc:
🔗 Ingress and DNS Setup Guide
#
Benefits of This Setup- Cost-effective: One LoadBalancer for all services.
- Scalable: Add new routes/domains by just updating the Ingress.
- Secure: Easily integrate SSL with Cert-Manager or Cloudflare.
- Customizable: Full control over routing, headers, and rewrites.
#
ConclusionExposing multiple services in EKS using a single LoadBalancer with NGINX Ingress can streamline your infrastructure and reduce costs. Just remember:
- Use Helm to install and manage the NGINX Ingress Controller
- Configure host-based routing to serve multiple domains through one point
- Use Cloudflare DNS to map custom domains to your LoadBalancer
- Regularly test and validate access for each new service
With just a few commands and configurations, you can build a scalable and efficient ingress setup—ready for production.
Learn how to add and manage EKS clusters with Nife’s AWS EKS integration guide.
Learn how to add standalone Kubernetes clusters with Nife’s standalone cluster setup guide.