You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Local kind (deployah cluster up) cannot pull private or freshly built images the way a laptop Docker daemon can. The usual kind workflow is: build or have myapp:dev on the host, then load it into the nodes so pods do not hit a remote registry.
Deployah already implements that in internal/localkube (LoadImage / LoadImageArchive + imageref.Open), but nothing in the CLI calls it. Developers fall back to kind load docker-image or push to a real registry. --sync-registry-auth only helps authenticated pulls, not host-daemon → node load.
Goals
First-class CLI to load one or more image refs into the Deployah local cluster.
# Load from local Docker/Podman daemon (or tar / pullable ref)
deployah cluster load-image myapp:dev
deployah cluster load-image myapp:dev ghcr.io/acme/api:1.2.0 ./api.tar
# Optional: every component image in the spec for an environment
deployah cluster load-image --from-spec -e local
Problem
Local kind (
deployah cluster up) cannot pull private or freshly built images the way a laptop Docker daemon can. The usual kind workflow is: build or havemyapp:devon the host, then load it into the nodes so pods do not hit a remote registry.Deployah already implements that in
internal/localkube(LoadImage/LoadImageArchive+imageref.Open), but nothing in the CLI calls it. Developers fall back tokind load docker-imageor push to a real registry.--sync-registry-authonly helps authenticated pulls, not host-daemon → node load.Goals
Manager.LoadImage(daemon /.tar/ remote → node archive load).:latest/imagePullPolicy(loaded images must not be re-pulled away).image:refs from adeployah.yamlfor an environment (dev convenience).registry.mode: kindLoad.Non-goals
--sync-registry-auth); complementary.Proposed design
User experience (v1)
Aliases worth considering:
deployah cluster load,deployah image load.Behavior
cluster up/ status).Manager.LoadImage(resolution order already: file → daemon → registry).resolving-image,loading-image).imagePullPolicywhen tag islatest.--from-spec: parse spec + env, collect uniquecomponents.*.imageafter substitution, load each.Spec / platform (optional; can follow)
No schema required for the CLI. Later (with #26 / #27):
v1 can stop at the explicit
load-imagecommand; auto-load on deploy can land with build work.Phase 2 (optional follow-up): local registry container
Some teams want
localhost:5000/app:taganddocker pushinstead ofkind load:cluster up --registry(or always).localhost:5000+ insecure config.Track Phase 2 here or split later if scope grows.
Failure modes
deployah cluster up.imageref.ErrImagePullwith:latest+Always→ documentIfNotPresent/ digests / non-latest tags.Alternatives considered
kind load docker-imageonly. Breaks one-binary / no-kind-CLI story; Deployah already embeds the load path.--sync-registry-auth+ push to a remote registry. Works for CI-like flows; slow for tight local loops.Compatibility and migration
deployah cluster.kindLoad), localkubeLoadImageAPIs, skills catalog (proposal: Agent Skills catalog and deployah skills install #28).Test plan
LoadImagewith expected cluster name and refsdocker build -t myapp:dev .→deployah cluster load-image myapp:dev→ deploy withimage: myapp:devsucceeds without registry.tarimagePullPolicy/ tag guidance--from-specsmoke with multi-component projectChecklist