Context
PR #3856 migrated the dev cluster registry from a host-side container (localhost:50000) to an in-cluster Kubernetes deployment accessed via a Contour Ingress at registry.localtest.me.
Problem
The registry Ingress uses ingressClassName: contour-external, but Contour is only installed when --serving=true (the default). With --serving=false, no Ingress controller exists, so the host cannot reach the registry.
Before #3856: The registry was a host-side container on localhost:50000 — always reachable regardless of --serving.
After #3856: Host registry access requires Contour → requires --serving=true.
The help text (cmd/cluster.go:109-110) documents --serving=false --eventing=false as a valid "minimal cluster (just Kubernetes + registry)" use case, implying the registry should be functional.
Empirical test results (from func cluster create --serving=false --eventing=false):
- Registry deployment:
1/1 Available inside the cluster ✅
- Ingress object: exists but has no ADDRESS (no controller to reconcile it) ❌
contour-external namespace: does not exist ❌
curl http://registry.localtest.me/v2/: Connection reset by peer ❌
- In-cluster containerd mirrors via
hostPort:5000: work fine ✅
Note: hack/cluster.sh doesn't have this problem because it always installs serving + Contour unconditionally.
Suggested fixes (pick one)
- (a) Document it — note that
--serving=false means no host push, only in-cluster access
- (b) Always install Contour — decouple Contour installation from
--serving so the registry Ingress always has a controller
- (c) Fallback port mapping — add a Kind
extraPortMappings entry that maps a host port to the registry's hostPort:5000, bypassing Ingress entirely
/kind bug
Context
PR #3856 migrated the dev cluster registry from a host-side container (
localhost:50000) to an in-cluster Kubernetes deployment accessed via a Contour Ingress atregistry.localtest.me.Problem
The registry Ingress uses
ingressClassName: contour-external, but Contour is only installed when--serving=true(the default). With--serving=false, no Ingress controller exists, so the host cannot reach the registry.Before #3856: The registry was a host-side container on
localhost:50000— always reachable regardless of--serving.After #3856: Host registry access requires Contour → requires
--serving=true.The help text (
cmd/cluster.go:109-110) documents--serving=false --eventing=falseas a valid "minimal cluster (just Kubernetes + registry)" use case, implying the registry should be functional.Empirical test results (from
func cluster create --serving=false --eventing=false):1/1 Availableinside the cluster ✅contour-externalnamespace: does not exist ❌curl http://registry.localtest.me/v2/: Connection reset by peer ❌hostPort:5000: work fine ✅Note:
hack/cluster.shdoesn't have this problem because it always installs serving + Contour unconditionally.Suggested fixes (pick one)
--serving=falsemeans no host push, only in-cluster access--servingso the registry Ingress always has a controllerextraPortMappingsentry that maps a host port to the registry'shostPort:5000, bypassing Ingress entirely/kind bug