Files
soleprint/rig/docs/notes/kind-config.md
2026-09-22 05:15:49 -03:00

2.1 KiB

ctrl/k8s/kind-config.yaml.tpl

Why a template

The cluster: one node by default — add nodes or port mappings by editing the file, then make cluster reset.

It is a TEMPLATE rather than a plain kind-config.yaml because a rig (or an overlay) is copied and renamed to make a second environment, and both the cluster name and the host port follow the folder. A checked-in literal would make every copy collide on both — which is exactly why every other project here, with its literal kind-config.yaml, has only one of itself. ctrl/cluster.sh renders it with sed — not envsubst, which is gettext-base and absent from a minimal Debian, and rig's whole premise is that Docker is the only prerequisite.

A kind config is fixed at creation: to change the cluster, edit the file, then make cluster reset. lib/config.sh reads the node count back out of it, so nothing restates it.

An overlay's own kind config

An overlay may carry its own kind-config.yaml.tpl (see overlay.md); it replaces this whole file, rendered the same way, so start from a copy of this one. Keep the containerd config_path patch: make check reports its absence whenever a registry mode needs it. A project that builds its own cluster through rig can also pass any file as KIND_CONFIG=<path>.

Substituted variables

Substituted by ctrl/cluster.sh: CLUSTER, NODE_IMAGE, HTTP_PORT, HOST_WORKDIR (rig's folder), OVERLAY_DIR (the overlay's folder, for mounts). The header comment names them without the ${...} braces so that line survives the substitution.

Node count

The node count is READ BACK from this file by lib/config.sh, so this YAML is the source of truth for it — there is no second place to update.

containerdConfigPatches

Point containerd at a certs.d directory. registry.sh drops per-host hosts.toml files in there afterwards, so switching registry mode never requires recreating the cluster.

extraPortMappings

One NodePort bridged to the host; an in-cluster gateway owns it. There is deliberately no ingress controller — they pin a narrow window of k8s versions, and running a trailing-edge control plane is the point.