// hands-on-labs
Stop reading. Start shipping.
Every lab is a complete, copy-pasteable exercise: objective, architecture, real commands, expected output, troubleshooting and cleanup. Laptop-friendly — kind, minikube and free tiers.
beginner ~60 min
CI/CD with GitHub Actions
Create a GitHub Actions workflow that tests a Node.js app on every push and publishes a Docker image to GHCR on merges to main.
GitHub ActionsNode.jsDockerGitHub Container Registry
$ run lab
beginner ~45 min
Docker Build and Push
Build a multi-stage, multi-architecture Docker image with buildx and publish it to Docker Hub with semantic tags.
DockerDocker BuildxDocker HubPython
$ run lab
beginner ~60 min
Kubernetes Deployment with Helm
Install, upgrade, and roll back an application on a local Kubernetes cluster using Helm charts and custom values files.
KubernetesHelmkindkubectl
$ run lab
beginner ~60 min
SonarQube Code Scan
Stand up SonarQube locally, analyze a project with sonar-scanner including test coverage, and make the build fail on a quality gate breach.
SonarQubesonar-scannerDockerPython
$ run lab
beginner ~75 min
Terraform AWS EC2
Provision and destroy a Free Tier EC2 instance with a security group using Terraform, and read its public IP from an output.
TerraformAWS EC2AWS CLIHCL
$ run lab
beginner ~45 min
Trivy Container Scan
Use Trivy to find vulnerabilities and secrets in a container image, fix them by changing the base image, and fail builds on HIGH or CRITICAL findings.
TrivyDockerSBOMCycloneDX
$ run lab
intermediate ~90 min
Argo CD GitOps Deployment
Deploy an application via Argo CD from a Git repository with automated sync and self-healing enabled, then observe drift correction.
Argo CDKuberneteskindGitOps
$ run lab
intermediate ~90 min
LLM RAG Application Basics
Implement document chunking, embedding, vector search, and grounded answer generation in a small Python RAG application backed by Chroma.
PythonChromaDBSentence TransformersAnthropic API
$ run lab
intermediate ~90 min
MLOps Pipeline Basics
Train and compare scikit-learn models with MLflow tracking, promote the best run to the Model Registry, and serve it for real-time predictions.
MLflowscikit-learnPythonpandas
$ run lab
intermediate ~75 min
OpenTelemetry Tracing
Auto-instrument a Flask app with OpenTelemetry, route spans through an OTel Collector pipeline, and view the resulting traces in Jaeger.
OpenTelemetryJaegerPythonFlask
$ run lab
intermediate ~90 min
Prometheus and Grafana Monitoring
Stand up Prometheus, Grafana, and Alertmanager on a local cluster and build one PromQL query, one dashboard panel, and one firing alert.
PrometheusGrafanaAlertmanagerHelm
$ run lab
advanced ~90 min
Chaos Engineering Experiment
Install Chaos Mesh, run a pod-kill experiment against a replicated NGINX service under load, and prove availability holds via a steady-state check.
Chaos MeshKuberneteskindHelm
$ run lab