AWS

Deploy NGINX Ingress Controller on AWS EKS with HTTP and TCP Routing via Single LoadBalancer

Step-by-step guide to deploying NGINX Ingress Controller on AWS EKS to route HTTP and TCP services through a single LoadBalancer. Includes DNS setup with Cloudflare, Helm deployment, and YAML examples.

Nida Sahar
Nida Sahar
4 min read
Deploy NGINX Ingress Controller on AWS EKS with HTTP and TCP Routing via Single LoadBalancer

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, and aws-cli configured
  • Services already running in EKS
  • Cloudflare account to manage DNS

Get started with EKS in the AWS EKS User Guide.


Step 1: Install NGINX Ingress Controller on EKS using Helm

Diagram showing Helm deployment of NGINX Ingress Controller on EKS.

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

helm install nginx-ingress ingress-nginx/ingress-nginx \
  --namespace ingress-nginx --create-namespace \
  --set controller.service.type=LoadBalancer

This will install the NGINX Ingress Controller and expose it through a LoadBalancer service. You can get the external ELB DNS using:

kubectl get svc -n ingress-nginx

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

Team collaborating on Kubernetes Ingress YAML configuration for host routing.

Below is an example Ingress manifest to expose a service using a custom domain:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: pubggpiro9ypjn-ing
  namespace: pubggpiro9ypjn
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - host: metube-app-622604.clb2.nifetency.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: service-f35714cd-4cb5-4f7e-b9db-4daa699640b3
            port:
              number: 8081

Apply the file using:

kubectl apply -f your-ingress.yaml

Step 3: Configure DNS for NGINX Ingress with Cloudflare

DevOps engineer configuring Cloudflare DNS records for NGINX Ingress routing.

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 NGINX Ingress Routing and Domain Configuration

Try accessing the domain in your browser:

http://metube-app-622604.clb2.nifetency.com

You should see the application running from port 8081 of the backend service.


Reference Document

For more detailed steps and examples, check out this shared doc:
🔗 Ingress and DNS Setup Guide


Benefits of Using NGINX Ingress with Single LoadBalancer

  • 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.

Conclusion: Efficient Multi-Service Exposure in EKS with NGINX

Exposing 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.


Deploy on Nife

Ready to deploy? Check out the Nife documentation:

From the team at Nife

Deploy your next app in minutes, not days.

Nife is a multi-cloud edge platform that lets you deploy, scale, and manage applications globally without the infrastructure headache.