A selection of katas for Kubernetes (k8s).
The exercises are ordered in the way we think it makes sense to introduce Kubernetes concepts.
You can find a summary of many of the commands used in the exercises in the cheatsheet.md.
❗ The katas expect that you have access to a kubernetes cluster. Please have a look at the Setup section if that is not the case. There are plenty of free and easy options.
- intro
- desired-state
- manifests
- accessing-your-application
- services
- deployments-ingress
- rolling-updates
- configmaps-secrets
- persistent-storage
There are several ways to get a free Kubernetes cluster for running the exercises.
Amazon, Google, Microsoft and Oracle provide various degrees of free managed clusters.
Alternatively, you can set up a local cluster with Docker Desktop or Kind.
Once you have access to a cluster, the following exercises will help you get setup for running the katas.
- setup-kubectl-linux - Skip if
you've already installed
kubectl
and have access to a cluster. - setup-namespace - Skip if you've already created a personal namespace and set it as your default.
On Linux, using bash, run the following commands:
echo "source <(kubectl completion bash)" >> ~/.bashrc
. ~/.bashrc
The commands above will enable kubectl autocompletion when you start a new bash session and source (reload) bashrc i.e. enable kubectl autocompletion in your current session.
See: Kubernetes.io - Enabling shell autocompletion for more info.
A collection of useful commands to use throughout the exercises:
kubectl api-resources # List resource types
kubectl explain <resource> # Show information about a resource
kubectl explain deployment
# List resources in cluster
kubectl get <resource> # In current namespace
kubectl get <resource> -n <namespace> # In specific namespace
kubectl get <resource> --all-namespaces # In all namespaces
kubectl get <resource> -o wide # Add extended information
kubectl get <resource> -o yaml # output in YAML format
kubectl get <resource> -o json # output in JSON format
# Example
kubectl get pods [-n abc|--all-namespaces] [-o wide|yaml|json]
See:
kubectl - Cheat Sheet
for a more extended overview of the kubectl
command.