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
{{ message }}
Repository navigation
bug: Kubernetes E2E rewrites local images to GHCR #3696
As a contributor, I want ephemeral Kubernetes E2E runs to use the images built and imported locally, so that tests run without requiring unpublished images in GHCR.
Problem Statement
On main, e2e/with-kube-gateway.sh decomposes an unqualified local image such as openshell/gateway:e2e-<cluster> into Helm values with an empty per-image registry. The chart then falls back to global.image.registry=ghcr.io/nvidia, so the cert-generation Job requests ghcr.io/nvidia/openshell/gateway:e2e-<cluster> instead of the imported local image.
This behavior was observed after the image override changes in #3341.
Impact / Why This Matters
Ephemeral k3d E2E tasks fail during Helm installation before any tests run. Contributors can work around the failure by overriding the registry or clearing the chart-wide registry, but the default local workflow should use the images it just built and imported.
Acceptance Criteria
Ephemeral Kubernetes E2E uses unqualified locally built and imported gateway, sandbox, and supervisor images without adding the released chart registry.
Qualified registry overrides and published-image CI workflows continue to resolve correctly.
Automated coverage verifies the rendered image reference for an unqualified local image.
Reproduction Steps
Check out main at 4cd1351e1 or later.
Ensure Docker is running.
Run mise run e2e:kubernetes.
Observe the locally built/imported image openshell/gateway:e2e-<cluster>.
Observe Helm fail because the cert-generation Job requests the nonexistent GHCR tag.
Environment
OpenShell: 4cd1351e1
OS: macOS arm64, Darwin 25.6.0
Docker: 29.6.2
k3d: v5.9.0
k3s: v1.35.5-k3s1
Helm: v4.2.4
Logs
Failed to pull image "ghcr.io/nvidia/openshell/gateway:e2e-<cluster>":
... ghcr.io/nvidia/openshell/gateway:e2e-<cluster>: not found
Error: INSTALLATION FAILED: failed pre-install:
resource Job/openshell/openshell-certgen not ready
registry omitted because the chart should inherit global.registry
vs.
registry intentionally empty because this is an unqualified local image
The current E2E path loses that distinction, so Helm's normal fallback to global.image.registry=ghcr.io/nvidia wins.
For the local-image lane I would prefer explicitly clearing the global registry for that render rather than relying on an empty per-image value that the chart interprets as "inherit".
This issue has had no activity for 14 days and is now marked stale. It may be closed in 14 days if there is no further activity. Comment or remove the state:stale label to keep it open.
Activity
kvnloo commentedon Sep 27, 2026
I think the important distinction here is:
registry omitted because the chart should inherit global.registryvs.
registry intentionally empty because this is an unqualified local imageThe current E2E path loses that distinction, so Helm's normal fallback to
global.image.registry=ghcr.io/nvidiawins.For the local-image lane I would prefer explicitly clearing the global registry for that render rather than relying on an empty per-image value that the chart interprets as "inherit".
Regression shape:
openshell/gateway:e2e-local-> renders exactlyopenshell/gateway:e2e-local;registry.example.com/openshell/gateway:test-> remains fully qualified;ghcr.io/nvidia;That tests the final rendered image references, which is the contract the k3d import actually depends on.
If accepted, this looks like a small E2E/chart-boundary fix.
danehans commentedon Sep 29, 2026
/assign
github-actions commentedon Oct 15, 2026
This issue has had no activity for 14 days and is now marked stale. It may be closed in 14 days if there is no further activity. Comment or remove the state:stale label to keep it open.
TaylorMutch commentedon Oct 20, 2026
Closing as completed by #3991