Skip to main content

kindctl

Use repo/worktree-scoped kind clusters without touching the global kubeconfig. Trigger when users mention kind cluster, local k8s, local Kubernetes, spin up a cluster, Kubernetes-in-Docker, multi-repo kind, or multi-worktree cluster work.

Quellinformationen

Repository
sozercan/kindctl
Letzte Quellaktivität
20. Juli 2026 um 16:10
Erkannte Sprache von SKILL.md
Englisch
Sterne
4
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
kindctl
description
Use repo/worktree-scoped kind clusters without touching the global kubeconfig. Trigger when users mention kind cluster, local k8s, local Kubernetes, spin up a cluster, Kubernetes-in-Docker, multi-repo kind, or multi-worktree cluster work.
# kindctl Use this skill whenever work involves a local `kind` cluster, local k8s/Kubernetes, Kubernetes-in-Docker, or repo/worktree-specific test clusters. ## Mental model - `kind` clusters are global to the Docker daemon. - `~/.kube/config` is a shared mutable global and must not be used for kindctl-managed clusters. - `kindctl` derives a cluster name from the current repo/worktree path and stores its kubeconfig in `~/.kube/kind/<name>.kubeconfig`. - The current directory is enough: random repos and git worktrees do not need to know anything special. ## Golden rule for agents Never run bare `kubectl` or `helm` against a kindctl-managed cluster. Prefer: ```sh /Users/sozercan/projects/kindctl/bin/kindctl kubectl get nodes /Users/sozercan/projects/kindctl/bin/kindctl exec -- helm list ``` Do not run: ```sh kubectl get pods kubectl config use-context kind-something kind create cluster ``` ## Installation From the skill repository: ```sh make install-skill # symlink this repo to ~/.claude/skills/kindctl make install-cli # optional: symlink bin/kindctl to ~/.local/bin/kindctl ``` The skill itself should invoke `bin/kindctl` by absolute path or by resolving the skill directory. Do not rely on shell aliases. ## Commands ```sh kindctl create [--config F] [--tag T] [--k8s-version vX.Y.Z] kindctl delete [--tag T] kindctl kubectl [--tag T] <args...> kindctl exec [--tag T] -- <cmd...> kindctl path [--tag T] kindctl ctx [--tag T] kindctl env [--tag T] kindctl load [--tag T] <image> kindctl hibernate [--tag T] kindctl resume [--tag T] kindctl list [--workspace|--all] kindctl doctor kindctl prune --workspace [--yes] kindctl prune --dead [--yes] kindctl nuke [--yes] ``` If `kindctl` is not on `PATH`, use the absolute path: ```sh /Users/sozercan/projects/kindctl/bin/kindctl <command> ``` ## Recipes ### Create and use a repo cluster ```sh kindctl create kindctl kubectl get nodes kindctl kubectl get pods -A ``` ### Use a second cluster for the same repo ```sh kindctl create --tag e2e kindctl kubectl --tag e2e get nodes ``` Use the same `--tag` on every command that targets that cluster. ### Load a local image ```sh docker build -t myapp:dev . kindctl load myapp:dev kindctl kubectl set image deployment/myapp myapp=myapp:dev ``` ### Run helm, k9s, or other tools safely ```sh kindctl exec -- helm list -A kindctl exec -- k9s ``` ### Ingress For ingress, commit `.kind/cluster.yaml` in the target repo with explicit `extraPortMappings`. Example: ```yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes: - role: control-plane extraPortMappings: - containerPort: 80 hostPort: 8080 protocol: TCP ``` Only one running cluster can bind a given host port. Use `kindctl hibernate` on other clusters or choose distinct host ports. ### Hibernate/resume after a work session or reboot ```sh kindctl hibernate kindctl resume kindctl doctor ``` ### Recover from failed setup If `.kind/setup.sh` fails, the cluster is preserved and registry status is `failed`. ```sh kindctl doctor kindctl exec -- kubectl get pods -A kindctl delete # if you want to recreate cleanly kindctl create ``` ### Delete safely ```sh kindctl delete ``` Bulk cleanup is registry-scoped and asks for confirmation unless `--yes` is passed: ```sh kindctl prune --workspace kindctl prune --dead kindctl nuke ``` ## Repo-specific `.kind/` Optional repo files: ```text .kind/cluster.yaml # native kind config: nodes, Kubernetes version, ports, mounts .kind/setup.sh # post-create setup: CRDs, ingress, namespaces, local images ``` Inside `.kind/setup.sh`, bare `kubectl` is okay because kindctl sets `KUBECONFIG` for that one hook process. Outside that hook, use `kindctl kubectl` or `kindctl exec`. ## Invariant No skill instruction should read, write, merge, or switch `~/.kube/config`. Every operation must use `kindctl` or a scoped kubeconfig path produced by `kindctl`.
Auf GitHub ansehen