Objectives & prerequisites
Learning objectives
- Install Crossplane on a local Kubernetes cluster.
- Install the Crossplane Kubernetes Provider and grant it the RBAC it needs to act on the cluster.
- Declare a CompositeResourceDefinition (XRD) for a new
XHelloWorldPicoAPI. - Author a Composition (pipeline mode, using
function-patch-and-transform) that turns an XR into a real KubernetesJob. - Create a Composite Resource (XR) carrying the same greeting value you used in the Hello Pico lab and verify the composed
JobprintsHello, Pico!from inside the cluster.
Prerequisites
- Completion of the Hello Pico lab — the greeting value in this lab reuses the same
Hello, Pico!string. - Completion of the Crossplane · Part 1 · 01 Composing Hello Pico on Kubernetes lesson (or equivalent familiarity with Provider, XRD, Composition, XR, and Managed Resource).
Environment
Supported OS: macOS (Apple Silicon or Intel), Linux, or WSL.
Required shell:
bash3.2+ orzsh5.0+.Required tools (all invoked directly by the walkthrough):
dockerv20.10+ (minikube’s driver, and container runtime).minikubev1.34+ (v1.38.1 is the reference pin used to author this lab).kubectlv1.31+ (or newer; minikube ships one;brew install kubectlworks too).helmv3.14+ (v3.16+ recommended; used to install Crossplane).bashand standard POSIX utilities (grep,cat,mkdir,cp).
PATH expectation:
docker,minikube,kubectl, andhelmmust all resolve onPATHafter install.Estimated time: 60–90 minutes (of which the cluster start and Crossplane install account for roughly 5–10 minutes).
Cleanup step (also repeated at the end of the walkthrough):
minikube delete --profile crossplane-lab rm -rf build/hello-world-pico-on-kubernetes work/hello-pico-on-kubernetes
Install commands
If any tool above is missing, install it using its upstream instructions before starting the walkthrough. On macOS with Homebrew:
brew install --cask docker
brew install minikube kubectl helmOn Linux, follow the upstream install guides:
- Docker Engine — https://docs.docker.com/engine/install/
- minikube — https://minikube.sigs.k8s.io/docs/start/
- kubectl — https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
- helm — https://helm.sh/docs/intro/install/
Confirm each tool resolves before you begin:
command -v docker && docker version --format 'client: {{.Client.Version}}'
command -v minikube && minikube version --short
command -v kubectl && kubectl version --client --output=yaml | head -3
command -v helm && helm version --shortPinned versions (reference)
The walkthrough was authored and verified against these versions. Newer versions are expected to work; older versions may not support the Pipeline composition mode or the referenced provider APIs.
- Crossplane chart: v2.3.4
- Provider Kubernetes: v0.18.0 (
xpkg.crossplane.io/crossplane-contrib/provider-kubernetes:v0.18.0) - Function Patch and Transform: v0.9.0 (
xpkg.crossplane.io/crossplane-contrib/function-patch-and-transform:v0.9.0) - Kubernetes API version in minikube: v1.31.0
One-time setup (optional)
The walkthrough uses a dedicated minikube profile named crossplane-lab so it does not interfere with other clusters. If you prefer to use your existing minikube cluster, drop --profile crossplane-lab from every command. If you use a Kubernetes distribution other than minikube (kind, k3d, docker-desktop), all kubectl, helm, and crossplane steps below still apply.