Getting Started
Install the Kubeasy CLI, set up your local environment, and solve your first challenge.
This guide walks you through everything you need to start using Kubeasy — from installing the CLI to completing your first challenge.
Prerequisites
- Docker (or a compatible container runtime) — required by Kind to run the local Kubernetes cluster
- kubectl — the Kubernetes CLI (install guide)
Install the CLI
Choose the installation method that works best for your system.
Install script (Linux, macOS)
curl -fsSL https://raw.githubusercontent.com/kubeasy-dev/kubeasy-cli/main/install.sh | bashHomebrew (macOS, Linux)
brew install kubeasy-dev/tap/kubeasyNPM (cross-platform)
npm install -g kubeasyScoop (Windows)
scoop bucket add kubeasy https://github.com/kubeasy-dev/scoop-bucket
scoop install kubeasyManual download
Download the latest binary for your platform from the GitHub Releases page, make it executable, and add it to a directory in your PATH.
# Example for Linux amd64
chmod +x kubeasy-linux-amd64
sudo mv kubeasy-linux-amd64 /usr/local/bin/kubeasyVerify installation
kubeasy versionmacOS security warning
If macOS prevents opening the binary with "developer cannot be verified", run:
xattr -d com.apple.quarantine /usr/local/bin/kubeasy
Generate an API key
- Go to kubeasy.dev and sign in or create an account
- Navigate to your Profile page
- Generate a new API key and copy it
Authenticate
kubeasy loginYou'll be prompted to enter your API key. It is stored securely:
- macOS: System Keychain
- Windows: Windows Credential Manager
- Linux: Secret Service (falls back to
~/.config/kubeasy-cli/credentials)
For CI/CD environments, set KUBEASY_API_KEY as an environment variable instead.
Set up the local environment
kubeasy setupThis creates a local Kubernetes cluster using Kind and installs all the infrastructure components that challenges depend on. Run it once per machine.
What gets installed:
| Component | Version | Purpose |
|---|---|---|
| Kind cluster | Kubernetes v1.35.0 | Local Kubernetes environment |
| Kyverno | v1.17.1 | Policy engine for bypass prevention |
| local-path-provisioner | v0.0.35 | PersistentVolume storage |
| nginx-ingress | v1.15.0 | Ingress controller |
| Gateway API CRDs | v1.5.1 | Gateway API support |
| cert-manager | v1.20.0 | TLS certificate management |
| kubeasy-ca | — | Self-signed CA for cert-manager |
| cloud-provider-kind | v0.10.0 | LoadBalancer support |
Setup typically takes 1–3 minutes depending on your connection speed.
$ kubeasy setup
Creating Kind cluster 'kubeasy' (Kubernetes v1.35.0) [18s]
Installing infrastructure components [52s]
Environment ready! Start a challenge with:
kubeasy challenge start <slug>Browse available challenges
Visit kubeasy.dev/challenges to browse all available challenges. Each listing shows the difficulty, estimated time, and theme.
You can also preview a challenge's details before starting:
kubeasy challenge get pod-evictedStart your first challenge
kubeasy challenge start pod-evictedThis command:
- Creates a dedicated namespace (
pod-evicted) in the cluster - Pulls the challenge OCI artifact and deploys all resources
- Waits for the initial setup to complete
- Switches your
kubectlcontext to the challenge namespace
$ kubeasy challenge start pod-evicted
Challenge: Pod Evicted
Creating namespace
Deploying challenge
Kubectl context configured
Challenge environment is ready!
Namespace: pod-evictedYour kubectl is now pointing at the challenge namespace. Start investigating:
kubectl get pods
kubectl describe pod <pod-name>
kubectl logs <pod-name>
kubectl get events --sort-by='.lastTimestamp'Solve the challenge
There's no walkthrough. Read the challenge description, explore the cluster state, and figure out what's wrong. Use any tools you're comfortable with — kubectl, Lens, k9s.
The description tells you what's broken (symptoms). The objective tells you what a successful outcome looks like. The root cause is yours to discover.
Submit your solution
kubeasy challenge submit pod-evictedThe CLI runs all validation objectives against the cluster:
$ kubeasy challenge submit pod-evicted
Condition Validation
pod-running: PASSED - All condition checks passed
Event Validation
no-crash-events: PASSED - No forbidden events found
All validations passed!
Congratulations! Challenge 'pod-evicted' completed! +50 XPIf some objectives fail, the output tells you exactly which ones and why. Fix the remaining issues and submit again.
Clean up
# Remove resources AND reset your progress on the platform
kubeasy challenge reset pod-evicted
# Remove local resources only (keeps your progress)
kubeasy challenge clean pod-evictedNext steps
- How It Works — understand the technical architecture
- Challenge Types — learn the difference between fix, build, and migrate
- CLI Reference — full reference for all commands
- Troubleshooting — solutions to common issues