This tutorial deploys a CoderProvisioner for an existing CoderControlPlane managed by coder-k8s.
Estimated time: 5 minutes.
Complete Deploy a Coder Control Plane first.
This tutorial assumes the setup from that guide:
CoderControlPlanecodercontrolplane-sampleexists in namespacecoderand isReady.- Operator access is enabled and ready (default behavior):
.status.operatorAccessReady=true.
Quick check:
kubectl get codercontrolplane codercontrolplane-sample -n coder \
-o jsonpath='{.status.phase}{"\n"}{.status.operatorAccessReady}{"\n"}'Expected output:
Ready
true
CoderProvisioner requires external provisioner entitlement in the referenced Coder deployment.
kubectl get codercontrolplane codercontrolplane-sample -n coder \
-o jsonpath='{.status.externalProvisionerDaemonsEntitlement}{"\n"}'Expected values to proceed: entitled or grace_period.
If the value is not_entitled, update the control-plane license before continuing.
Apply the sample manifest:
kubectl apply -f "https://raw.githubusercontent.com/coder/coder-k8s/main/config/samples/coder_v1alpha1_coderprovisioner.yaml"kubectl get coderprovisioner coderprovisioner-sample -n coder
kubectl get coderprovisioner coderprovisioner-sample -n coder -o jsonpath='{.status.phase}{"\n"}'
kubectl get coderprovisioner coderprovisioner-sample -n coder -o jsonpath='{range .status.conditions[*]}{.type}={.status} {.reason}{"\n"}{end}'Verify generated resources:
kubectl get deployment provisioner-coderprovisioner-sample -n coder
kubectl get sa coderprovisioner-sample-provisioner -n coder
kubectl get role provisioner-coderprovisioner-sample -n coder
kubectl get rb provisioner-coderprovisioner-sample -n coder
kubectl get secret coderprovisioner-sample-provisioner-key -n coderExpected: status.phase=Ready, DeploymentReady=True, and a ready provisioner pod.
kubectl delete coderprovisioner coderprovisioner-sample -n coderTo tear down the full stack, follow cleanup in Deploy a Coder Control Plane.