KubeLab
Embark on your Kubernetes Journey through Hands-on Practice
Welcome to KubeLab! Our advanced web-based platform offers a rich set of interactive labs, specifically crafted for Kubernetes workshops. We aim to revolutionize your learning experience by making it more interactive, engaging, and practical. Our labs will help you grasp and apply complex Kubernetes concepts in a real-world context.
KubeLab is a proud offering by Natron Tech, and if you're interested in a tailor-made Kubernetes services or workshops for your company, do not hesitate to reach out to us!
KubeLab is built using:
Please note: This project is still in its early stages, and we're diligently working to enhance your experience. However, bugs might appear, and your patience and feedback will be greatly appreciated.
You can access the cloud version of KubeLab at kubelab.ch. This version is hosted by us. As of security reasons, we do not let you to sign up for the cloud version. If you want to use KubeLab for your company, please contact us at [email protected]. Also, when you want to host a KubeLab instance for your company, we can provide you with a hosted version of KubeLab.
KubeLab features a smooth in-browser terminal, letting you execute commands and interact with your Kubernetes cluster in real-time, without needing any additional setup or software.
KubeLab comes with a vscode-based code editor, allowing you to edit and run code directly from your browser. The editor supports syntax highlighting, code completion, and more. Watch out for the code editor button in the bottom left corner of your screen.
Every learning session on KubeLab has its own isolated Kubernetes cluster. This design ensures a secure and dedicated learning environment, enabling you to experiment with Kubernetes without impacting others.
With KubeLab, you can define your own labs and exercises. Check out our workshops here. All the labs and exercises follow the same structure and can be easily created and shared.
The structure of a lab with an exercise is as follows:
kubelab-workshops/kubernetes-basics # Example workshop
└── 01_introduction # Name of the lab
├── 01_get_kubectl_version # Name of the exercise
│ ├── bootstrap.sh # The script that will be executed when the exercise starts
│ ├── check.sh # The script that will be executed to check if the exercise is solved
│ ├── docs.md # The text that will be displayed to the user
│ ├── hint.md # The hint that will be displayed to the user
│ └── solution.md # The solution that will be displayed to the user
└── docs.md # The text that will be displayed to the user for the lab
KubeLab offers a workshop mode, allowing you to hold your own Kubernetes workshops. Each user can have the workshop
set to true
and a company
assigned. This will allow you to filter the users by company and see their progress. Then you can create a user with the role admin
and when you log in with this user you can see the dashboards of all the companies. The users then also have an addional request for help
button in the UI which will send a real-time notification to the dashboard.
Interested in contributing to KubeLab? Please make sure you have the following prerequisites:
Please refer to our detailed development guides for the backend and frontend to get started. For contributing, please read our CONTRIBUTING.md for information on code conduct and the process for submitting pull requests.
To get started, ensure that you have a Kubernetes cluster (v1.27+).
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: kubelab-ch-wildcard-cert
namespace: cert-manager
spec:
secretName: kubelab-ch-wildcard-cert
issuerRef:
name: letsencrypt
kind: ClusterIssuer
dnsNames:
- "*.kubelab.ch"
secretTemplate:
annotations:
reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: ""
reflector.v1.k8s.emberstack.com/reflection-auto-enabled: "true"
reflector.v1.k8s.emberstack.com/reflection-auto-namespaces: ""
create
authentication for the labs
and exercises
collections in Pocketbase. (This is because you wan't to use the kubelab-fill
script to fill the labs and exercises collections.)
.env.example
)create
authentication for the labs
and exercises
collections in Pocketbase again.users
collection and set the role
to user
.The following environment variables are required for KubeLab to function properly:
Variable Name | Default | Description |
---|---|---|
LOCAL |
false |
Set to true if you're running KubeLab locally. It will take your local kubeconfig under .kube/config |
KUBELAB_AGENT_IMAGE |
ghcr.io/natrontech/kubelab-agent:latest |
The image for the agent |
CODE_SERVER_IMAGE |
ghcr.io/natrontech/kubelab-code-server:latest |
The image for the code-server |
ALLOWED_HOSTS |
* |
The allowed hosts for the backend |
RESOURCE_NAME |
kubelab |
The name of the resource |
AGENT_INGRESS_CLASS |
nginx |
The ingress class for the agent |
PODS_LIMIT |
70 |
The maximum number of pods allowed per session |
STORAGE_LIMIT |
50Gi |
The maximum storage allowed per session |
VCLUSTER_CHART_VERSION |
0.16.4 |
The version of the vcluster chart |
VCLUSTER_VALUES_FILE_PATH |
./vcluster-values.yaml |
The path to the vcluster values file |
CronTick |
* * * * * |
The cron tick which creates user sessions for each lab and exercise |
TlsSecretName |
kubelab-tls |
The name of the TLS secret which will be for each agent ingress instance (use a wildcard certificate) |
Begin your Kubernetes journey with KubeLab today!