We use analytics cookies.We use cookies to analyze site traffic and improve your experience.
Loading...
System Design Masterclass · Kubernetes Containers
Free preview: the first 2 parts of this 7-part lesson.
Already bought the course? Sign in to read the whole lesson.
this lesson is part of
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design courseread the rest of this lesson in
System Design Masterclass
Unlock this lesson and the 751 other paid lessons
$25 once, by PayPal
See the System Design coursein Kubernetes Containers
This lesson is part of the full System Design Masterclass. Unlock it along with 769 other lessons for a one-time payment.
One-time payment by card or PayPal
Get Lifetime AccessOne-time payment: UPI, card or netbanking
Get Lifetime Access18 Foundation lessons are free, no payment needed. Try them now
It is easy and good
“It is really nice and good Please join the course”
The simplest way to expose a service to the internet is type: LoadBalancer. Each service gets its own cloud . Easy, until you have 20 microservices. That's 20 load balancers, each costing ~$20/month, with 20 different public IP addresses, 20 SSL certificates to manage, and 20 DNS records to maintain.
An Ingress Controller is a single entry point, one load balancer, that routes traffic to different services based on the URL path or hostname. api.example.com goes to the API service. app.example.com goes to the web app. api.example.com/payments goes to the payments service. One load balancer, one IP, one wildcard SSL certificate.
It's the same concept as a reverse proxy (Nginx, HAProxy) but managed through Kubernetes-native YAML manifests, with automatic and TLS certificate management.
Two pieces:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: main-ingress
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts: ["api.example.com", "app.example.com"]
secretName: tls-secret
rules:
- host: api.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: api-service
port:
number: 80
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80
| Ingress Controller | Backed By | Best For |
|---|---|---|
| ingress-nginx | Nginx | General purpose, most popular |
| Traefik | Traefik | Auto-discovery, middleware support |
| AWS ALB Controller | AWS ALB | Native AWS integration |
| Istio Gateway | Envoy | environments |
| Contour | Envoy | Multi-team, policy-driven |