From 201b614ea6798f0ee9e75c63360eef891b36bb19 Mon Sep 17 00:00:00 2001 From: iwilltry42 Date: Sat, 15 Feb 2025 20:06:00 +0100 Subject: [PATCH] Revert "enhancement: enforcing the internal registry port matching the external one (#1550)" This reverts commit c5695177db1344bbffd84b0d0134e0bae62103ac. --- Makefile | 3 ++- cmd/cluster/clusterCreate.go | 2 +- cmd/registry/registryCreate.go | 2 +- cmd/util/ports.go | 16 ++----------- cmd/util/ports_test.go | 41 ---------------------------------- pkg/client/registry.go | 4 ---- pkg/config/transform.go | 2 +- tests/test_registry.sh | 2 +- 8 files changed, 8 insertions(+), 64 deletions(-) delete mode 100644 cmd/util/ports_test.go diff --git a/Makefile b/Makefile index 80794f231..cdd8d7d6e 100644 --- a/Makefile +++ b/Makefile @@ -66,12 +66,13 @@ K3D_HELPER_VERSION ?= # Go options GO ?= go GOENVPATH := $(shell go env GOPATH) +PKG := $(shell go work vendor) TAGS := TESTS := ./... TESTFLAGS := LDFLAGS := -w -s -X github.com/k3d-io/k3d/v5/version.Version=${GIT_TAG} -X github.com/k3d-io/k3d/v5/version.K3sVersion=${K3S_TAG} GCFLAGS := -GOFLAGS := -mod=vendor +GOFLAGS := -mod=readonly BINDIR := $(CURDIR)/bin BINARIES := k3d diff --git a/cmd/cluster/clusterCreate.go b/cmd/cluster/clusterCreate.go index 335a10460..bd11b408c 100644 --- a/cmd/cluster/clusterCreate.go +++ b/cmd/cluster/clusterCreate.go @@ -575,7 +575,7 @@ func applyCLIOverrides(cfg conf.SimpleConfig) (conf.SimpleConfig, error) { } cfg.Registries.Create.Name = fvSplit[0] if len(fvSplit) > 1 { - exposeAPI, err = cliutil.ParseRegistryPortExposureSpec(fvSplit[1]) + exposeAPI, err = cliutil.ParsePortExposureSpec(fvSplit[1], "1234") // internal port is unused after all if err != nil { return cfg, fmt.Errorf("failed to registry port spec: %w", err) } diff --git a/cmd/registry/registryCreate.go b/cmd/registry/registryCreate.go index 2bfc3cc8d..244e8f718 100644 --- a/cmd/registry/registryCreate.go +++ b/cmd/registry/registryCreate.go @@ -134,7 +134,7 @@ func parseCreateRegistryCmd(cmd *cobra.Command, args []string, flags *regCreateF } // --port - exposePort, err := cliutil.ParseRegistryPortExposureSpec(ppFlags.Port) + exposePort, err := cliutil.ParsePortExposureSpec(ppFlags.Port, k3d.DefaultRegistryPort) if err != nil { l.Log().Errorln("Failed to parse registry port") l.Log().Fatalln(err) diff --git a/cmd/util/ports.go b/cmd/util/ports.go index 88b6976e2..74e015519 100644 --- a/cmd/util/ports.go +++ b/cmd/util/ports.go @@ -36,16 +36,8 @@ import ( var apiPortRegexp = regexp.MustCompile(`^(?P(?P\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|(?P\S+):)?(?P(\d{1,5}|random))$`) -func ParsePortExposureSpec(exposedPortSpec, internalPort string) (*k3d.ExposureOpts, error) { - return parsePortExposureSpec(exposedPortSpec, internalPort, false) -} - -func ParseRegistryPortExposureSpec(exposedPortSpec string) (*k3d.ExposureOpts, error) { - return parsePortExposureSpec(exposedPortSpec, k3d.DefaultRegistryPort, true) -} - // ParsePortExposureSpec parses/validates a string to create an exposePort struct from it -func parsePortExposureSpec(exposedPortSpec, internalPort string, enforcePortMatch bool) (*k3d.ExposureOpts, error) { +func ParsePortExposureSpec(exposedPortSpec, internalPort string) (*k3d.ExposureOpts, error) { match := apiPortRegexp.FindStringSubmatch(exposedPortSpec) if len(match) == 0 { @@ -91,7 +83,7 @@ func parsePortExposureSpec(exposedPortSpec, internalPort string, enforcePortMatc } // port: get a free one if there's none defined or set to random - if submatches["port"] == "random" { + if submatches["port"] == "" || submatches["port"] == "random" { l.Log().Debugf("Port Exposure Mapping didn't specify hostPort, choosing one randomly...") freePort, err := GetFreePort() if err != nil || freePort == 0 { @@ -104,10 +96,6 @@ func parsePortExposureSpec(exposedPortSpec, internalPort string, enforcePortMatc } } - if enforcePortMatch { - internalPort = submatches["port"] - } - realPortString += fmt.Sprintf("%s:%s/tcp", submatches["port"], internalPort) portMapping, err := nat.ParsePortSpec(realPortString) diff --git a/cmd/util/ports_test.go b/cmd/util/ports_test.go deleted file mode 100644 index e27bd1765..000000000 --- a/cmd/util/ports_test.go +++ /dev/null @@ -1,41 +0,0 @@ -package util - -import ( - "strings" - "testing" - - "gotest.tools/assert" -) - -func Test_ParsePortExposureSpec_PortMatchEnforcement(t *testing.T) { - - r, err := ParsePortExposureSpec("9999", "1111") - if nil != err { - t.Fail() - } else { - assert.Equal(t, string(r.Port), "1111/tcp") - assert.Equal(t, string(r.Binding.HostPort), "9999") - } - - r, err = ParseRegistryPortExposureSpec("9999") - if nil != err { - t.Fail() - } else { - assert.Equal(t, string(r.Port), "9999/tcp") - assert.Equal(t, string(r.Binding.HostPort), "9999") - } - - r, err = ParsePortExposureSpec("random", "1") - if nil != err { - t.Fail() - } else { - assert.Assert(t, strings.Split(string(r.Port), "/")[0] != string(r.Binding.HostPort)) - } - - r, err = ParseRegistryPortExposureSpec("random") - if nil != err { - t.Fail() - } else { - assert.Equal(t, strings.Split(string(r.Port), "/")[0], string(r.Binding.HostPort)) - } -} diff --git a/pkg/client/registry.go b/pkg/client/registry.go index 4653e3ba1..54066b37d 100644 --- a/pkg/client/registry.go +++ b/pkg/client/registry.go @@ -76,10 +76,6 @@ func RegistryCreate(ctx context.Context, runtime runtimes.Runtime, reg *k3d.Regi Env: []string{}, } - if reg.ExposureOpts.Binding.HostPort != "" { - registryNode.Env = append(registryNode.Env, fmt.Sprintf("REGISTRY_HTTP_ADDR=:%s", reg.ExposureOpts.Binding.HostPort)) - } - if reg.Options.Proxy.RemoteURL != "" { registryNode.Env = append(registryNode.Env, fmt.Sprintf("REGISTRY_PROXY_REMOTEURL=%s", reg.Options.Proxy.RemoteURL)) diff --git a/pkg/config/transform.go b/pkg/config/transform.go index 3c8737da1..969f9075a 100644 --- a/pkg/config/transform.go +++ b/pkg/config/transform.go @@ -320,7 +320,7 @@ func TransformSimpleToClusterConfig(ctx context.Context, runtime runtimes.Runtim epSpecHost = simpleConfig.Registries.Create.Host } - regPort, err := cliutil.ParseRegistryPortExposureSpec(fmt.Sprintf("%s:%s", epSpecHost, epSpecPort)) + regPort, err := cliutil.ParsePortExposureSpec(fmt.Sprintf("%s:%s", epSpecHost, epSpecPort), k3d.DefaultRegistryPort) if err != nil { return nil, fmt.Errorf("failed to get port for registry: %w", err) } diff --git a/tests/test_registry.sh b/tests/test_registry.sh index 04506a89d..84c0926ce 100755 --- a/tests/test_registry.sh +++ b/tests/test_registry.sh @@ -52,7 +52,7 @@ kubectl get configmap -n kube-public local-registry-hosting -o go-template='{{in # 3. load an image into the registry info "Pushing an image to the registry..." -registryPort=$(docker inspect $registryname | jq '.[0].NetworkSettings.Ports | with_entries(select(.value | . != null)) | to_entries[0].value[0].HostPort' | sed -E 's/"//g') +registryPort=$(docker inspect $registryname | jq '.[0].NetworkSettings.Ports["5000/tcp"][0].HostPort' | sed -E 's/"//g') docker pull alpine:latest > /dev/null docker tag alpine:latest "localhost:$registryPort/alpine:local" > /dev/null docker push "localhost:$registryPort/alpine:local" || failed "Failed to push image to managed registry"