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!
Discover more from Learners Store
Subscribe to get the latest posts sent to your email.