Let’s ship it with Kubernetes
Mahdi Bahreini — Backend Developer, Fast Bundle
~60 min • GCP / GKE Context
All communication goes through the API Server
Everything talks to the API Server — nodes and pods never communicate directly
Pod → Deployment → Lifecycle
↓ next: What is a Pod?
Smallest deployable unit
Important: Pods are ephemeral — you don't manually manage pods in production.
We don't create Pods directly — we use Deployments.
Declarative: replicas: 3 + image: app:v1 → Kubernetes ensures it.
Key operations you'll use every day
Relates to: How we deploy backend API • How we deploy frontend service
replicas: 3 → replicas: 5 — K8s adds 2 podsSame image, more or fewer copies — instant
image: app:v1 → image: app:v2maxSurge, maxUnavailableHow we deploy backend API and frontend — no maintenance window
kubectl rollout undo deployment/myappSafety net for every deployment
Set it and forget it — K8s keeps your app running
Service & Ingress
↓ next: The Problem (pod networking)
Dynamic IPs
Ephemeral
So how do frontend and backend talk to each other?
frontend → backend via service DNS (e.g. backend.default.svc.cluster.local)
<NodeIP>:<30000-32767> — same LANapi.fastbundle.com) and path (e.g. /api)User → Ingress → Service → Pods
ConfigMaps, Secrets, Volumes
↓ next: Why not hardcode config?
ConfigMap
Secret
❌ DB_URL inside image • API keys in code
✅ Same image → dev/stage/prod with different config
Best practice: Same image, different config per environment
GCP: Backed by GCP Persistent Disk • Managed automatically in GKE
Pods feed from:
ConfigMap •
Secret •
Volume
What we'll do next: Containerize services • First deployment • Dev namespace
Optional: Hands-on workshop next session
Mahdi Bahreini — Backend Developer, Fast Bundle
Questions?