After this lesson, you will be able to: Deploy a multi-service application to a local Kubernetes cluster using Helm, with resource limits, health checks, and a rolling update strategy.
Passion project for the K8s sub-track per Curriculum-Upgrade.md. Take the multi-service stack from do-docker-passion (or any equivalent) and ship it to K8s with a Helm chart you wrote.
kind is fine; GKE Autopilot free-trial is even better.
Local: kind create cluster --config kind-config.yaml (config below)
Cloud (optional): GKE Autopilot free trial gives a real LB + cert provisioning
Verify: kubectl get nodes (Ready)
Install add-ons via Helm: ingress-nginx, cert-manager (if cloud), kube-prometheus-stack
Map host ports so Ingress is reachable from your laptop browser.
kind: ClusterapiVersion: kind.x-k8s.io/v1alpha4nodes:- role: control-planekubeadmConfigPatches:- |kind: InitConfigurationnodeRegistration:kubeletExtraArgs:node-labels: "ingress-ready=true"extraPortMappings:- containerPort: 80hostPort: 80- containerPort: 443hostPort: 443
helm create scaffolds the template.
helm create myapp
Customize templates/deployment.yaml: add real probes (readinessProbe + livenessProbe)
Add templates/service.yaml: ClusterIP for app + StatefulSet/Service for Postgres
Add templates/ingress.yaml: route /api → api service, / → web service
Add templates/configmap.yaml + templates/secret.yaml for env vars
values.yaml has every config: image tags, replica counts, resources, hostname
Validate: helm template ./myapp ; helm lint ./myapp
One-command install. Then verify everything.
helm install myapp ./myapp -n myapp --create-namespace
Watch: kubectl get pods -n myapp -w
Wait for all pods Ready (probes succeed)
Verify Service: kubectl get svc -n myapp
Verify Ingress: kubectl get ingress -n myapp
Browse to the host (localhost in kind; the LB IP in cloud)
Watch a rollout: kubectl set image deployment/web web=myapp:1.1 -n myapp ; kubectl rollout status
Rollback: helm rollback myapp -n myapp
README + architecture diagram. This is the artefact.
README.md at the chart root: how to install, what values to set, what the architecture is
Architecture diagram: services, Ingress, Service mesh (if any), DB. Excalidraw → PNG.
For each Pod: what's its job, what does it depend on, what are its probes
Link the live URL (if using cloud)
License + Contributing
Hard-coded values in templates. Defeats Helm. Missing readiness probes. The rolling deploy drops requests. Database in K8s without a backup story. Don't claim 'production-grade' without one. Skipping the architecture diagram. Hiring managers skim READMEs. No verification step, never running `helm template` before applying. Big YAML, easy typo.
Sign in and purchase access to unlock this lesson.