Kubernetes Workshop – Overview
Overview
This workshop covers the path from container orchestration fundamentals to secure, production-oriented platform operations.
The workshop focuses on:
- Kubernetes architecture
- declarative resources
- workloads
- networking
- storage
- scheduling
- observability
- GitOps
- multi-tenancy
- security hardening
- incident response
The content can be used as a learning path, workshop material, reference documentation, or foundation for internal training.
Quickstart
This quickstart takes you from choosing a lab environment to starting the first exercise.
Use the Workshop Material
The material is available in the Orthevs Wiki. Practice modules can be downloaded as ZIP files from the workshop page.
Select a Lab Environment
Choose a suitable environment for your labs:
| Environment | Description | Documentation |
|---|---|---|
| WSL | For Windows systems using Ubuntu on WSL | Set up Ubuntu on WSL |
| VM | For local or remote Ubuntu VMs | Set up Ubuntu in a VM |
| Bare Metal | For direct installation on physical hardware | Set up Ubuntu on bare metal |
| Existing Cluster | For prepared Kubernetes test clusters | Prepare cluster access |
Provision the Lab Environment
Install the required base tools with the existing setup files:
If a provisioning script exists, check it in dry-run mode first:
chmod +x scripts/provision_kubernetes.sh
./scripts/provision_kubernetes.sh --dry-run
sudo ./scripts/provision_kubernetes.sh
Verify the Cluster
After setup, verify that kubectl points to your Kubernetes cluster:
kubectl version --client
kubectl cluster-info
kubectl get nodes
kubectl get namespaces
If you work locally with kind, minikube, or k3d, use the existing environment and command documentation:
Start the Workshop
Start with the curriculum and then continue through the workshop levels:
Recommended order:
docs/ -> workshops/ -> examples/ -> exercises/ -> assessments/
Audience
This workshop is intended for:
- developers
- DevOps engineers
- system engineers
- platform engineers
- SREs
- cloud engineers
- tech leads
- security engineers
The goal is to understand Kubernetes conceptually, operate it in realistic environments, and secure it properly.
Learning Path
| Level | Focus | Outcome |
|---|---|---|
| Fundamentals | architecture, control plane, nodes, pods, deployments, services, namespaces, labels, selectors, kubectl |
You understand the core concepts and can create and inspect simple resources. |
| Intermediate | workloads, ConfigMaps, Secrets, probes, requests/limits, HPA, ingress, DNS, storage, scheduling, Helm, Kustomize | You can operate typical application workloads declaratively. |
| Professional | cluster architecture, distributions, etcd, lifecycle, CNI/CSI, observability, GitOps, add-ons, multi-tenancy, autoscaling, cost management, backup | You understand Kubernetes as a platform and can classify operational concerns. |
| Advanced + Security | threat modeling, RBAC, service accounts, API server, etcd security, Pod Security Standards, NetworkPolicies, admission control, image security, runtime security, incident response | You can operate Kubernetes more securely and analyze typical attack and failure scenarios. |
Structure
Workshop Structure
All workshop repositories use the same base structure. Only the technical subject matter changes.
.
├── assessments/
├── docs/
├── examples/
├── exercises/
├── media/
│ └── pics/
├── scripts/
├── workshops/
├── LICENSE.md
└── README-EN.md
| Path | Purpose |
|---|---|
docs/ |
reference documentation, environment guides, provisioning, certifications, and additional concepts |
workshops/*-DE.md |
German workshop levels |
workshops/*-EN.md |
English workshop levels |
exercises/ |
exercises, tasks, and deliverables by level |
assessments/ |
knowledge checks, exam questions, and final assessment |
examples/ |
YAML examples, tooling labs, and local demonstrations |
scripts/ |
helper scripts for setup, validation, or provisioning |
media/pics/ |
images and visual material |
Prerequisites
You need at least:
- Linux, macOS, or WSL shell
- basic container knowledge
- basic YAML knowledge
gitkubectl- access to a Kubernetes lab environment
Optional but useful:
- kind
- minikube
- k3d
- Helm
- Kustomize
- stern
- k9s
- kubectx
- kubens
- Trivy
- Kyverno
Link Convention
Internal links in this overview lead to the related workshop material. External links point to official project pages.
Examples:
[Read the curriculum](docs/curriculum-kubernetes-EN.md)
[Start Fundamentals](workshops/01-fundamentals-kubernetes-EN.md)
[Set up Ubuntu on WSL](docs/environment-wsl-kubernetes-EN.md)
Official Documentation
Tools and Projects
- kubernetes/kubernetes
- kubernetes-sigs/kind
- kubernetes/minikube
- k3s-io/k3s
- helm/helm
- kubernetes-sigs/kustomize
- cilium/cilium
- projectcalico/calico
- prometheus-operator/kube-prometheus
- grafana/loki
- argoproj/argo-cd
- fluxcd/flux2
- kyverno/kyverno
- open-policy-agent/gatekeeper
- falcosecurity/falco
- aquasecurity/trivy
Language and Code Convention
- Markdown content is maintained in German and English, separated by language.
- The German version uses direct
duwording. - Code, commands, file names, variables, and code comments stay in English.
- Production clusters, secrets, tokens, private keys, and customer data must not be used in labs.
- Example values must be clearly recognizable as dummy values.
- Workshop files should follow consistent technical naming.
Working Mode
Create a Branch
Do not work directly on main or master. Use a descriptive branch with username and topic:
git checkout -b workshop/<username>/<topic>
Example:
git checkout -b workshop/alex/kubernetes-networking-lab
Changes should be reviewed through a pull request or merge request.
Security and Credential Notes
- Do not commit passwords.
- Do not commit tokens or API keys.
- Do not commit SSH private keys.
- Do not commit
.envfiles with real secrets. - Do not commit kubeconfig files with production credentials.
- Do not use customer data or production cluster dumps.
- Use dummy values in example configurations.
- Check
.gitignorebefore adding new examples.
Run Scripts
Check provisioning in dry-run mode first:
chmod +x scripts/provision_kubernetes.sh
./scripts/provision_kubernetes.sh --dry-run
If the output is plausible, run provisioning:
sudo ./scripts/provision_kubernetes.sh
sudo is only required for package installation. Scripts must not execute destructive reset actions without explicit confirmation.
Internal Workshop Links
License
Unless stated otherwise, the educational material is licensed under CC BY-NC-SA 4.0. Commercial use is not permitted.
Important: images and visual media under media/, especially media/pics/, are excluded. These images were created by Anastasios Karasakalidis and may only be displayed as part of this workshop. Separate use, redistribution, modification, or republication is not allowed without prior written permission.
Contact: anastasios.karasakalidis@orthevs.com