This repository contains Kubernetes challenges for the Kubeasy platform. Each challenge is designed to teach specific Kubernetes concepts through hands-on exercises.
challenges/
├── .github/
│ ├── scripts/ # Synchronization scripts for Supabase
│ └── workflows/ # GitHub Actions workflows
├── access-pending/ # RBAC security challenge
├── partial-outage/ # Network policies challenge
├── probes-drift/ # Health checks challenge
└── test-challenge/ # Example challenge structure
Each challenge folder contains:
challenge.yaml
- Challenge metadata and descriptionmanifests/
- Kubernetes manifests for the challengeimage/
- Custom Docker images (if needed)policies/
- Admission controller policiesstatic/
- Static validation filesdynamic/
- Dynamic challenge components
Each challenge.yaml
file must include:
title: Challenge Title
description: |
Detailed description of the challenge
theme: category-name
difficulty: beginner|intermediate|advanced
estimated_time: 15
initial_situation: |
Description of the starting state
objective: |
What the user needs to accomplish
Challenges are automatically synchronized with the Supabase database when:
- A
challenge.yaml
file is added, modified, or deleted - Changes are pushed to the
main
branch
The synchronization process:
- Validates challenge data format
- Updates the Supabase database
- Creates GitHub labels for new challenges
- Creates GitHub discussions for community interaction
- Handles deletions automatically
To add a new challenge:
- Create a new folder with a descriptive name
- Add a
challenge.yaml
file with required metadata - Include necessary Kubernetes manifests
- Test your challenge locally
- Submit a pull request (validation will run automatically)
All challenges are automatically validated when you create a pull request:
- YAML syntax - Ensures proper formatting
- Required fields - Validates all mandatory metadata
- Data constraints - Checks difficulty levels, estimated times, etc.
- File structure - Warns about missing manifests or content
- Quality suggestions - Provides recommendations for improvement
The validation will:
- ✅ Pass: Add a success comment to your PR
- ❌ Fail: Block the PR until issues are fixed
You can run validation locally:
cd .github/scripts
npm install
node validate-challenges.js "your-challenge-folder"
All automation scripts are located in .github/scripts/
. See the scripts README for more details.