Skip to main content
Latest · v1.7.0released today

Install SnowOps Labs

Clone the latest release, run the installer, and labctl init builds the rest. No Go or Node needed, and no sudo for labctl itself.

Prefer to watch? The setup video walks through the same steps.

What you need

  • Docker with at least 2 CPUs and 4 GB of memory. 6 GB for Kafka, a service mesh or GitOps.
  • About 10 GB of free disk for images and the cluster.
  • macOS (Apple Silicon or Intel), Linux, or Windows with WSL2.

kubectl, helm and k3d are installed for you. Before a scenario starts, labctl checks it fits in Docker and tells you what to stop or resize if it doesn’t. Memory per scenario

Install

Three steps to a running lab

Apple Silicon or Intel. You don't need Docker Desktop: labctl init installs colima (a small Docker VM) with Homebrew and starts it at 2 CPU / 4 GB. If you already use Docker Desktop, the lab uses that instead. Full macOS guide

1

Clone the latest release and install labctl

Your lab is a clone of the repository: every manifest, values file, scenario and fault is a file you can open and change. install.sh downloads the labctl that matches your clone into ~/.local/bin and checks its checksum. No sudo.

shell
git clone --branch stable https://github.com/sagar2395/snowopslabs.git
cd snowopslabs
./install.sh
2

Build the lab

Installs kubectl, helm, k3d and colima with Homebrew, starts Docker, creates the cluster and installs Traefik, Prometheus and Grafana. If Homebrew is missing it installs that too, which is the one step that asks for your password. The first run downloads a few hundred MB and takes five to ten minutes. If something is wrong, it stops and tells you how to fix it.

shell
labctl init
3

Run a scenario, then break something

shell
labctl ui                                    # dashboard at http://localhost:3939
labctl scenario up observability-sre --deploy-prereqs
labctl scenario verify observability-sre
labctl incident inject crashloop-bad-config --deploy-prereqs
labctl incident status                       # hints, and whether you fixed it
Upgrade

Moving to a new release

Keep your own changes on a branch of your clone. Upgrading is a merge, so your edits stay, and git stops you if one conflicts.

Upgrade

shell
git fetch origin
git merge origin/stable      # your changes are kept
./install.sh                 # the labctl that matches

Uninstall

shell
labctl teardown              # delete the cluster
rm -rf ~/.snowops ~/.local/bin/labctl
rm -rf snowopslabs           # your clone, once you're done with it
Release v1.7.0

Release files

install.sh downloads the right one of these for you. They are here if you want to fetch or verify a binary by hand; labctl still needs a clone of the same release to run.

SHA-256 checksums for every file:checksums.txt
Release notes

What changed

New features and fixes in the latest releases, newest first. The full commit list is on each GitHub release.

v1.7.0

Latest

New

  • codespaces: run the lab in GitHub Codespaces from one button
  • run the lab in GitHub Codespaces; fix blank .env lines hiding the profile's value

Fixed

  • config: a blank .env line no longer hides the profile's value
  • docs-check: prose check works on macOS
View on GitHub

v1.6.0

Fixed

  • cli: incident inject deploys the apps a fault lists as prerequisites
  • gitops-cicd: run the self-heal drill once the rollout has finished
  • incident: checks reach the ingress on a non-80 port
  • observability-sre: grade a fired alert from every sample since activation
  • platform: clear a helm release stuck in a pending state
  • platform: install external-secrets on a lab that already has Prometheus
  • platform: traefik binds the ingress node's host ports on kind
  • scenario: return copies from Engine.List so it never writes the cache
  • scenarios: declare the ingress and monitoring stack the checks read
  • secrets-management: install Prometheus before External Secrets
  • traffic: k6 opens a new connection per request
  • ui: settle a job that ends before it is tracked; test: snapshot on the fixture lab
  • Fixing issues with CrashLookBackOff Incident
  • Grafana dashboard fix for applicaion request metrics
  • platform: traefik binds the ingress node's host ports on kind; the nightly e2e passes again
  • incidents: consolidated incident, dashboard and traffic fixes
  • the bugs the first nightly cluster-suite and test-health runs found
View on GitHub

v1.5.0

New

  • capacity: admit scenarios and faults only when the lab has room
  • capacity: measured footprints, advice that frees what it names, agents given back
  • ingress: labctl init moves an existing lab to *.localhost URLs
  • ingress: per-lab *.localhost URLs that reach this lab from this machine
  • install: learners clone the stable branch and install the matching labctl
  • onboarding: fail loudly on an undersized or unreachable lab
  • onboarding: install tools per OS without sudo
  • onboarding: ports follow the cluster; init keeps an existing lab
  • release: release acceptance - walk the live lab as a learner before a release
  • release: ship the lab content with labctl and install both in one step
  • state: keep lab state per cluster outside the clone; find the lab from anywhere
  • Refractor comments

Fixed

  • api,build: unmatched /api/v2 requests answer problem+json; cli-install records the lab
  • content: hints and scripts work from any directory
  • content: no hosts-file step in scenarios; TLS check works on *.localhost
  • init: repair Grafana that cannot query Prometheus; keep move-domain apply-safe
  • install: name the real problem when a release has no bundled content
  • k3d: bring back a lab whose server came back with another IP
  • k3d: find added agents by the name k3d gives them
  • lint: use strings.Cut for the helm repo name
  • onboarding: ignore evicted pods on init; let WSL users choose native Docker
  • platform: say how to pick a provider when a category has several
  • prereqs: stop on missing platform components, install them with --deploy-prereqs
  • wsl: end-to-end fixes from a full run on Windows (WSL2)
View on GitHub

v1.4.0

New

  • testing and improving scenarios

Fixed

  • ci: make the kind e2e wait for rollouts and walk the promotion d…
View on GitHub

v1.3.0

New

  • documentation as source of truth; remove the unversioned /api
  • end-to-end review harnesses for scenarios, incidents and learning

Fixed

  • observability: make the whole metrics/logs/traces pipeline actually deliver data
View on GitHub

Get updates

New scenarios and faults, release notes, and news about hosted labs if and when there is some. A few emails a month at most.

We'll email you about new releases, new lab content and paid offerings such as hosted labs, courses and workshops. Unsubscribe any time.