█
LastWrite
  • > Curriculum
  • > Pricing
  • > For Educators
  • > About
  • > Contact
Log InGet Started

Questions, concerns, bug reports, or suggestions? We read every message, write to us at [email protected].

More ways to reach us →
LastWrite

Structured computer science lessons for aspiring developers and security professionals.

[email protected]

(201) 785-7951

Mon–Fri, 9 AM–5 PM EST

Learn

  • Curriculum
  • Pricing

Company

  • About
  • For Educators & Schools
  • Contact Us

Legal

  • Terms of Service
  • Privacy Policy
© 2026 LastWrite. All rights reserved.
Curriculum/DevOps and Infrastructure/Kubernetes/Passion Project: Multi-Service Helm Chart
180 minAdvanced

Passion Project: Multi-Service Helm Chart

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.

Prerequisites:Observability

Milestone 1 — Spin up a real cluster

kind is fine; GKE Autopilot free-trial is even better.

  1. 1

    Local: kind create cluster --config kind-config.yaml (config below)

  2. 2

    Cloud (optional): GKE Autopilot free trial gives a real LB + cert provisioning

  3. 3

    Verify: kubectl get nodes (Ready)

  4. 4

    Install add-ons via Helm: ingress-nginx, cert-manager (if cloud), kube-prometheus-stack

kind-config.yaml (extras for Ingress)

Map host ports so Ingress is reachable from your laptop browser.

tsx
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
- containerPort: 443
hostPort: 443

Milestone 2 — Author the Helm chart

helm create scaffolds the template.

  1. 1

    helm create myapp

  2. 2

    Customize templates/deployment.yaml: add real probes (readinessProbe + livenessProbe)

  3. 3

    Add templates/service.yaml: ClusterIP for app + StatefulSet/Service for Postgres

  4. 4

    Add templates/ingress.yaml: route /api → api service, / → web service

  5. 5

    Add templates/configmap.yaml + templates/secret.yaml for env vars

  6. 6

    values.yaml has every config: image tags, replica counts, resources, hostname

  7. 7

    Validate: helm template ./myapp ; helm lint ./myapp

Milestone 3 — Deploy

One-command install. Then verify everything.

  1. 1

    helm install myapp ./myapp -n myapp --create-namespace

  2. 2

    Watch: kubectl get pods -n myapp -w

  3. 3

    Wait for all pods Ready (probes succeed)

  4. 4

    Verify Service: kubectl get svc -n myapp

  5. 5

    Verify Ingress: kubectl get ingress -n myapp

  6. 6

    Browse to the host (localhost in kind; the LB IP in cloud)

  7. 7

    Watch a rollout: kubectl set image deployment/web web=myapp:1.1 -n myapp ; kubectl rollout status

  8. 8

    Rollback: helm rollback myapp -n myapp

Milestone 4 — Documentation

README + architecture diagram. This is the artefact.

  1. 1

    README.md at the chart root: how to install, what values to set, what the architecture is

  2. 2

    Architecture diagram: services, Ingress, Service mesh (if any), DB. Excalidraw → PNG.

  3. 3

    For each Pod: what's its job, what does it depend on, what are its probes

  4. 4

    Link the live URL (if using cloud)

  5. 5

    License + Contributing

💡 How to talk about this in an interview

Walk through the Helm chart: 'here's the values.yaml that parameterizes per env'. Show the deployment rollout live (set image, watch the pods churn, confirm zero downtime). Show the probes; explain why readiness vs liveness. Show the architecture diagram. Ten minutes of demo = interview-ready DevOps story.

Common mistakes only candidates with offers avoid

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.

Sign in to purchase
←Observability
Back to Kubernetes
Kubernetes Job Readiness→