with one click
kind-dev
Per-workspace KIND clusters for coder-k8s dev + demos.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Per-workspace KIND clusters for coder-k8s dev + demos.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Sub-agent powered code reviews spanning correctness, tests, consistency, and fit
Index + offline snapshot of coder/coder documentation (progressive disclosure).
Guidelines for creating and managing Pull Requests in this repo
| name | kind-dev |
| description | Per-workspace KIND clusters for coder-k8s dev + demos. |
Load this skill only when you need a real Kubernetes cluster (KIND) during development or demos.
Prefer a per-workspace name to avoid collisions:
export CLUSTER_NAME="coder-k8s-${MUX_WORKSPACE_NAME:-dev}"
./hack/kind-dev.sh up
kubectl --context kind-${CLUSTER_NAME} get nodes
./hack/kind-dev.sh up defaults to KIND_NODE_IMAGE=kindest/node:v1.34.0. Override it when needed:
KIND_NODE_IMAGE=kindest/node:v1.32.0 ./hack/kind-dev.sh up
If the cluster already exists and you change KIND_NODE_IMAGE, recreate it first:
./hack/kind-dev.sh down
KIND_NODE_IMAGE=kindest/node:v1.32.0 ./hack/kind-dev.sh up
# up already switches your current context; run ctx again if needed.
./hack/kind-dev.sh ctx
GOFLAGS=-mod=vendor go run . --app=controller
./hack/kind-dev.sh load-image
kubectl --context kind-${CLUSTER_NAME} apply -f config/e2e/deployment.yaml
kubectl --context kind-${CLUSTER_NAME} -n coder-system wait --for=condition=Available deploy/coder-k8s --timeout=120s
k9s --context kind-${CLUSTER_NAME}
./hack/kind-dev.sh down
Nix tools available:
nix develop -c kubectl version --client
nix develop -c kind version
nix develop -c k9s version
Script sanity:
bash -n hack/kind-dev.sh
Bootstrap smoke test (deterministic cluster name):
CLUSTER_NAME=coder-k8s-dev ./hack/kind-dev.sh up
test "$(kubectl config current-context)" = "kind-coder-k8s-dev"
kubectl --context kind-coder-k8s-dev get crd codercontrolplanes.coder.com
kubectl --context kind-coder-k8s-dev get clusterrole manager-role
kubectl --context kind-coder-k8s-dev -n coder-system get sa coder-k8s
Optional in-cluster controller smoke test:
CLUSTER_NAME=coder-k8s-dev ./hack/kind-dev.sh load-image
kubectl --context kind-coder-k8s-dev apply -f config/e2e/deployment.yaml
kubectl --context kind-coder-k8s-dev -n coder-system wait --for=condition=Available deploy/coder-k8s --timeout=120s
Skill file exists:
test -f .mux/skills/kind-dev/SKILL.md
Cleanup:
CLUSTER_NAME=coder-k8s-dev ./hack/kind-dev.sh down
Use explicit kubectl --context kind-${CLUSTER_NAME} commands whenever possible to avoid acting on the wrong cluster.