workspace-syncer is the companion capstone project for The Kubernetes Platform Engineer Interview Guide.
It implements a small Kubernetes controller that synchronizes ConfigMaps from a tenant source namespace into a managed target namespace declared by a Workspace custom resource.
This project assumes a local Kubernetes platform engineering workstation. In practice, these are tools a Kubernetes Platform Engineer is usually expected to have already installed:
- Go 1.26.4 or newer
- Docker
- kubectl
- kind
- make
The make crd target installs controller-gen locally into bin/ when it is not already present.
make buildRegenerate the Workspace CustomResourceDefinition after changing the API types or Kubebuilder markers:
make crdmake crd
kubectl apply -f config/crd/workspace.yaml
make runIn another terminal:
make apply-examples
kubectl get workspace team-a -o yaml
kubectl get configmap app-settings -n managed-team-a -o yamlmake kind-create
make docker-build
make kind-load
make deploy
make apply-examplesInspect:
kubectl get pods -n workspace-syncer-system
kubectl logs -n workspace-syncer-system deploy/workspace-syncer
kubectl get workspace team-a -o yamlmake delete-examples
make undeployTo delete the local kind cluster:
make kind-deleteThe project demonstrates:
- CRD API design
- spec/status separation
- controller-runtime reconciliation
- finalizers
- status conditions
- source-to-target translation
- ownership metadata
- no-op write avoidance
- RBAC
- out-of-cluster and in-cluster execution
- kind deployment