Scripts and manifests to deploy the Educates training platform, with example Kubernetes workshops, on a pre-provisioned cluster.
Assumes the cluster nodes already exist (e.g. provisioned via Talos + terraform/tofu) and handles everything from there: CNI, Gateway API, storage, ingress, and the Educates platform itself.
- (Optional): Talos Linux: cluster nodes provisioned outside this repo
- Cilium: CNI, kube-proxy replacement, Gateway API dataplane
- Gateway API + Contour: ingress/gateway
- Kyverno: policy mutation for the default Educates NetworkPolicy
- Educates: the workshop/training portal itself
bootstrap-cluster.sh: end-to-end script that installs everything below onto an already-provisioned clusterk8s/: cluster-level manifests (CNI config, storage class, ingress, RBAC, Kyverno policy); see k8s/README.mdeducates/: Educates platform config plus example workshops; see educates/README.md
- A running Kubernetes cluster (nodes up, kubeconfig available); this repo does not provision nodes
kubectl,helm, and theeducatesCLI- The
ciliumHelm repo added:helm repo add cilium https://helm.cilium.io/ - A container registry to publish workshop images to
- Environment variables
PULL_PASSWORDandREGISTRY_USERNAMEset for the registry pull secret created bybootstrap-cluster.sh
export KUBECONFIG=/path/to/your/kubeconfig
export PULL_PASSWORD=...
export REGISTRY_USERNAME=...
./bootstrap-cluster.shThis installs Cilium, the Gateway API CRDs, local-path storage, the k8s/
manifests, and the Educates platform, then publishes and deploys the
lab-pod-crash workshop as a smoke test.
Before running for real, replace the placeholder values in
educates/config.yaml (ingress domain, TLS secret)
and each workshop's resources/workshop.yaml (image registry path) with your
own.
Example Educates workshops under educates/, each teaching a discrete
Kubernetes concept:
| Workshop | Topic |
|---|---|
| lab-configsecret | ConfigMaps & Secrets |
| lab-pod-crash | Debugging a crashing Pod |
| lab-ingress | Ingress routing |
| lab-docker-creation | Writing Dockerfiles |
| lab-pod-pvc | Troubleshooting PersistentVolumeClaims |
See educates/README.md for how to create, publish, and deploy a new workshop.

