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.

Informations de source

Dépôt
sozercan/kindctl
Dernière activité de la source
20 juillet 2026 à 16:10
Langue détectée de SKILL.md
anglais
Étoiles
4
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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`.
Voir sur GitHub