Local Kubernetes preview

Updated Jul 27, 2026

Developers can run a local Kubernetes preview when a supported container engine, Kubernetes provider, Helm, kubectl, and uv are installed:

make local-k8s-up
make local-k8s-status
make local-k8s-logs
make local-k8s-down

The default preview uses Docker plus k3d, builds the backend image, imports it into the local cluster, applies a runtime session signing Secret, and installs the Wildside Helm chart. It is reachable through loopback ingress at http://127.0.0.1:8088.

Rootless Podman users can use kind instead:

WILDSIDE_CONTAINER_ENGINE=podman WILDSIDE_K8S_PROVIDER=kind make local-k8s-up

The kind path creates the cluster without host-port mappings. Use make local-k8s-status after deployment to print the provider-specific kube context and the kubectl port-forward command for the Helm service.

Useful overrides:

Variable Default Description
WILDSIDE_CONTAINER_ENGINE docker Container engine used for local image builds and imports. Set to podman for the rootless kind flow.
WILDSIDE_K8S_PROVIDER k3d Local Kubernetes provider. Use k3d for the default Docker-backed preview, or kind for rootless Podman.
WILDSIDE_K8S_CLUSTER wildside-preview Provider-neutral cluster name. Overrides the legacy WILDSIDE_K3D_CLUSTER alias when both are set.
WILDSIDE_K8S_PORT 8088 Host-port ingress binding for the k3d flow only. The kind flow uses kubectl port-forward instead.
WILDSIDE_K8S_NAMESPACE wildside Kubernetes namespace used by Helm, kubectl, and the local session Secret.
WILDSIDE_HELM_RELEASE wildside Helm release name for the local preview chart install.
WILDSIDE_IMAGE wildside-backend:local Tagged backend image name built, imported, and passed to Helm.

WILDSIDE_K3D_CLUSTER and WILDSIDE_K3D_PORT remain legacy aliases when the provider-neutral names are unset. WILDSIDE_K3D_PORT follows WILDSIDE_K8S_PORT and is used only for the k3d host-port ingress binding.

Set WILDSIDE_KIND_NODE_IMAGE only when testing a different kind node image. The default is kindest/node:v1.31.0, which satisfies the chart's Kubernetes version range.

WILDSIDE_IMAGE must include a tag. The preview helper splits the value into the Helm chart's image.repository and image.tag settings. For rootless Podman plus kind, the helper saves the image to a temporary archive and loads that archive into kind using the image name Kubernetes will pull.

Kube contexts are named {provider}-{cluster}. The default context is k3d-wildside-preview; Podman plus kind with the default cluster uses kind-wildside-preview.

The local session key is generated when missing, created as the wildside-session-key Secret, reused on later deploys, and mounted by the chart at /var/run/secrets/wildside-session/session_key.

Nile Valley owns shared preview and GitOps automation. The local preview in this repository is for developer validation of the Wildside chart and runtime contract.

This guide records user-visible server behaviour for Wildside application programming interface (API) consumers. It focuses on contracts that clients can rely on when calling the backend.