When beginners open a project repository, they often see files like:
ingress.yaml
or:
my-app-ingress.yml
and immediately get confused:
🤔 What is ingress?
🤔 Why do we need it?
🤔 What does this file do?
🤔 Is it mandatory?
🤔 What happens if we don’t use it?
If you are completely new to:
- Kubernetes
- DevOps
- deployments
- infrastructure
don’t worry.
This guide explains everything in a very simple way with real-world examples.
First Understand the Problem
Imagine you built a React or Node.js application.
Now you deployed it inside Kubernetes.
Question:
🤔 How will users access your application from the internet?
Because Kubernetes containers are running internally.
Users outside cannot directly access them.
This is where:
Ingress
comes into the picture.
What is Ingress?
Ingress is:
A way to expose your application to the outside world.
In simple words:
👉 It helps internet users access your application.
Real-World Analogy
Imagine:
- Your application = a house
- Kubernetes cluster = a big apartment building
- Users = visitors
Without ingress:
❌ Visitors don’t know:
- where to go
- which room belongs to which application
Ingress acts like:
security guard + receptionist
It:
- receives requests
- checks the URL
- sends users to correct application
What is an Ingress File?
An ingress file is usually:
ingress.yaml
It contains rules that tell Kubernetes:
- which domain should go where
- which route should open which service
- how incoming traffic should be handled
Example Ingress File
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: my-app-ingressspec: rules: - host: myapp.com http: paths: - path: / pathType: Prefix backend: service: name: my-app-service port: number: 80
What This File Means
This says:
If user visits myapp.com,send request to my-app-service
What Problem Does Ingress Solve?
Without ingress:
every application may need:
- separate public IP
- separate load balancer
- direct exposure
This becomes:
- expensive
- difficult to manage
- hard to scale
Ingress Solves This
Ingress provides:
- centralized routing
- domain-based routing
- path-based routing
- SSL handling
- traffic management
Real Example
Suppose you have:
| Application | URL |
|---|---|
| React App | myapp.com |
| Admin Panel | myapp.com/admin |
| API Server | myapp.com/api |
Ingress can route all these properly.
Without Ingress
You may need:
3 separate load balancers3 public IPs
With Ingress
One ingress handles everything.
How Request Flows
Request Flow
User opens website ↓Ingress receives request ↓Checks rules ↓Forwards request to correct service ↓Application responds
Important Thing to Understand
Ingress does NOT directly connect to pods.
Flow is:
Ingress → Service → Pods
Beginner-Friendly Architecture
Internet User ↓Ingress ↓Kubernetes Service ↓Pods/Containers
What is a Service?
A service is another Kubernetes component that:
- connects to pods
- provides stable networking
Ingress talks to services.
Services talk to pods.
Why We Need Ingress
✅ 1. Domain Routing
Example:
myapp.comapi.myapp.comadmin.myapp.com
✅ 2. Path Routing
Example:
/api/admin/profile
✅ 3. SSL/HTTPS Support
Ingress can handle:
HTTPSTLSSSL certificates
✅ 4. Centralized Traffic Management
One place to manage all traffic.
✅ 5. Cost Reduction
Instead of many load balancers:
👉 one ingress can handle multiple apps.
What Happens If We Don’t Use Ingress?
Your app may still work.
BUT:
you may need:
- NodePort
- LoadBalancer service
- direct exposure
Problems Without Ingress
❌ More Public IPs Needed
❌ More Expensive
Cloud load balancers cost money.
❌ Harder Traffic Management
❌ Difficult SSL Handling
❌ Difficult Multi-App Routing
Difference Between Service and Ingress
| Service | Ingress |
|---|---|
| Internal communication | External access |
| Connects to pods | Routes internet traffic |
| Exposes app inside cluster | Exposes app outside cluster |
What is Ingress Controller?
This is VERY important.
Ingress file alone does nothing.
You also need:
Ingress Controller
What Does It Do?
It actually:
- reads ingress rules
- handles traffic
- applies routing
Popular Ingress Controllers
- NGINX Ingress Controller
- Traefik
- HAProxy
- AWS ALB Ingress Controller
Without Ingress Controller
Ingress file exists…
BUT:
❌ routing will NOT work.
Real Beginner Confusion
Many beginners think:
Creating ingress.yaml is enough
❌ Wrong.
You also need:
- ingress controller installed
Example Real Repository Structure
project/ ├── src/ ├── deployment.yaml ├── service.yaml ├── ingress.yaml
Why YAML Files?
Kubernetes uses YAML files to define infrastructure.
These files describe:
- deployments
- services
- ingress rules
- volumes
- configs
Important Kubernetes Files
| File | Purpose |
|---|---|
| deployment.yaml | Creates pods |
| service.yaml | Exposes pods internally |
| ingress.yaml | Exposes application externally |
Simple Full Flow
Full Architecture
User ↓Ingress ↓Service ↓Pod ↓Application
Best Practices
✅ Use Ingress for Production Apps
✅ Use HTTPS
Always secure traffic.
✅ Organize Routes Clearly
✅ Use One Ingress for Multiple Apps
Saves cost.
Common Beginner Mistakes
❌ Forgetting Ingress Controller
Most common issue.
❌ Wrong Service Name
Ingress routes fail.
❌ Wrong Port Number
Traffic not forwarded properly.
❌ DNS Not Configured
Domain won’t work.
Final Summary
✔ Ingress exposes applications to internet users
✔ It routes traffic to correct services
✔ Helps manage domains and paths
✔ Reduces infrastructure complexity
✔ Requires an ingress controller to work
✔ Commonly defined using ingress.yaml file
💡 Found this helpful? Subscribe for beginner-friendly DevOps and Kubernetes guides explained in simple language. Happy Coding!