No description
Find a file
Paul Harkink 1ccccde18d docs: README, vm-setup guide, and final presentation outline
- README.md: quick start, exercise table, stack versions, solution branches
- docs/vm-setup.md: VirtualBox + Vagrant setup, verification, troubleshooting
- docs/presentation/final-talk.md: 20-min talk outline (architecture, why GitOps, what's next)
2026-02-28 15:36:25 +01:00
apps feat(ex06): bonus monitoring — Prometheus + Grafana via kube-prometheus-stack 2026-02-28 15:34:47 +01:00
docs docs: README, vm-setup guide, and final presentation outline 2026-02-28 15:36:25 +01:00
manifests feat(ex06): bonus monitoring — Prometheus + Grafana via kube-prometheus-stack 2026-02-28 15:34:47 +01:00
scripts feat(ex04): Tekton pipeline — GitOps image-tag bump loop 2026-02-28 15:32:39 +01:00
.gitignore feat(ex01): ArgoCD bootstrap — Vagrantfile, helm install, app-of-apps 2026-02-28 15:24:42 +01:00
README.md docs: README, vm-setup guide, and final presentation outline 2026-02-28 15:36:25 +01:00
Vagrantfile feat(ex01): ArgoCD bootstrap — Vagrantfile, helm install, app-of-apps 2026-02-28 15:24:42 +01:00

Kubernetes GitOps Workshop

A hands-on 2.54 hour workshop teaching real-world cluster operations using ArgoCD, MetalLB, Ingress-Nginx, and Tekton — all on a local single-node k3s cluster.


Quick start

Requirements

1. Start the VM

git clone https://github.com/innspire/ops-demo.git
cd ops-demo
vagrant up          # first run: ~1015 min
vagrant ssh
cd /vagrant

See docs/vm-setup.md for verification steps and troubleshooting.

2. Bootstrap ArgoCD

./scripts/bootstrap.sh

Then follow the exercises in order.


Exercises

# Exercise Guide Type Est. Time
01 Bootstrap ArgoCD docs/01-argocd-bootstrap.md Core 30 min
02 Deploy podinfo via GitOps docs/02-deploy-podinfo.md Core 30 min
03 MetalLB + Ingress-Nginx docs/03-metallb-ingress.md Core 45 min
04 Tekton pipeline docs/04-tekton-pipeline.md Core 45 min
05 App upgrade + reflection docs/05-app-upgrade.md Core 15 min
06 Prometheus + Grafana docs/06-monitoring.md Bonus 60 min

Beginners: aim for Exercises 0103 (~1h45m). Everyone else: target 0105 for the full core loop.


Stack

Component Purpose Version
k3s Kubernetes v1.31.4
ArgoCD GitOps engine v2.13.x (chart 7.7.11)
MetalLB Bare-metal LoadBalancer v0.14.9
Ingress-Nginx HTTP routing chart 4.12.0
Tekton CI pipeline v0.65.1
podinfo Demo app 6.6.2 → 6.7.0
kube-prometheus-stack Observability (bonus) chart 68.4.4

Solution branches

Stuck on an exercise? Each solution branch is cumulative — it contains the complete working state up to and including that exercise.

# View a specific file without checking out the branch
git fetch origin
git show origin/solution/03-metallb-ingress:manifests/networking/metallb/metallb-config.yaml
Branch State
solution/01-argocd-bootstrap ArgoCD running
solution/02-deploy-podinfo podinfo synced via ArgoCD
solution/03-metallb-ingress LAN access via MetalLB + Ingress
solution/04-tekton-pipeline Full GitOps CI loop
solution/05-app-upgrade podinfo at v6.7.0
solution/06-monitoring Prometheus + Grafana running

Network layout

Your laptop
    │
    │ 192.168.56.x (VirtualBox host-only)
    ▼
VM: 192.168.56.10
    │
    └── MetalLB pool: 192.168.56.200192.168.56.220
            │
            └── 192.168.56.200  →  Ingress-Nginx
                    │
                    ├── podinfo.192.168.56.200.nip.io
                    ├── argocd.192.168.56.200.nip.io
                    └── grafana.192.168.56.200.nip.io  (bonus)