DEV Community

Srinivas Ettedi
Srinivas Ettedi

Posted on

Ingress and ingress controller

What is Ingress?
In simple terms, Ingress is an API object in Kubernetes that manages external access to your services, typically over HTTP/HTTPS. Instead of exposing each service with a separate Load Balancer or Node Port, Ingress lets you define rules to route traffic based on hostnames, paths, etc.

Example:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app-service
port:
number: 80

⚙️ What is an Ingress Controller?
Ingress is just a set of rules. To enforce those rules, you need an Ingress Controller — a specialized LoadBalancer running inside your cluster. It listens to changes in Ingress resources and updates its config accordingly.

Popular Ingress Controllers:

NGINX Ingress Controller (most widely used)

Traefik

HAProxy

Istio Gateway (if you're using service mesh)

🚦Why Use Ingress?
✅ Centralized traffic management

✅ SSL/TLS termination (HTTPS)

✅ Path-based or host-based routing

✅ Easy integration with Let's Encrypt (via cert-manager)

✅ Clean URLs and security policies

🔐 Pro Tip: Secure Your Ingress
Use TLS with certificates (automated via cert-manager)

Limit access with annotations or network policies

Use external authentication (OAuth2 proxy, SSO)

Enable rate-limiting and Web Application Firewall (WAF)

🛠 Common Issues
❌ Ingress resource created but not working? Check if an Ingress Controller is deployed!

🔄 Changed Ingress config not updating? Look at the controller logs (kubectl logs ).

📶 404 errors? Check your paths, service names, and port definitions.

Top comments (0)