This is meant to replicate a useless machine (see YouTube) as a Kubernetes operator. It's meant to show how to use KubeBuilder to:
- Create a CRD
- Create a controller
- Get and set fields in a resource
- Get, create, and delete resources
- Use a controller to watch a different resource type
In practice, here's what it does:
- A machine resource can have three types: useful, useless, or playful
- A useful machine is allowed to exist
- A useless machine gets immediately deleted
- A playful machine goes towards the off switch, comes back, goes
again (etc.) until it finally turns itself off
- Watch its status with
watch -n0.5 kubectl get machine
- Watch its status with
To run it, install Tilt and tilt up
.
Relevant links:
- Best practices for building Kubernetes Operators and stateful apps
- KubeBuilder
- Useless machine videos: here and here
- Tilt
- Printer Columns for KubeBuilder