From 98cb2a91bf6bb59ea7511be76470cb53971ef040 Mon Sep 17 00:00:00 2001 From: whitewindmills Date: Tue, 7 May 2024 11:34:53 +0800 Subject: [PATCH] Bump kind to v0.22.0 Signed-off-by: whitewindmills --- .github/workflows/cli.yaml | 2 +- .github/workflows/lint-chart.yaml | 2 +- go.mod | 2 +- go.sum | 4 ++-- hack/local-up-karmada.sh | 2 +- vendor/modules.txt | 2 +- .../kind/pkg/apis/config/defaults/image.go | 2 +- .../create/actions/kubeadminit/init.go | 11 +++++++++++ .../internal/providers/common/getport.go | 18 ++++++++++-------- .../internal/providers/docker/provision.go | 5 ++++- .../internal/providers/podman/provision.go | 5 ++++- .../kind/pkg/cmd/kind/version/version.go | 2 +- .../kind/pkg/internal/apis/config/validate.go | 5 +++++ 13 files changed, 43 insertions(+), 19 deletions(-) diff --git a/.github/workflows/cli.yaml b/.github/workflows/cli.yaml index 6f46ecd20..5359709e4 100644 --- a/.github/workflows/cli.yaml +++ b/.github/workflows/cli.yaml @@ -36,7 +36,7 @@ jobs: go-version-file: go.mod - uses: helm/kind-action@v1.10.0 with: - version: "v0.20.0" + version: "v0.22.0" - name: run karmadactl init test run: | export CLUSTER_VERSION=kindest/node:${{ matrix.k8s }} diff --git a/.github/workflows/lint-chart.yaml b/.github/workflows/lint-chart.yaml index 7a8309347..23e244600 100644 --- a/.github/workflows/lint-chart.yaml +++ b/.github/workflows/lint-chart.yaml @@ -3,7 +3,7 @@ name: Chart Lint env: HELM_VERSION: v3.11.2 - KIND_VERSION: v0.20.0 + KIND_VERSION: v0.22.0 KIND_NODE_IMAGE: kindest/node:v1.29.0 K8S_VERSION: v1.29.0 diff --git a/go.mod b/go.mod index 28cd99190..9f3af39d1 100644 --- a/go.mod +++ b/go.mod @@ -55,7 +55,7 @@ require ( sigs.k8s.io/cluster-api v1.5.0 sigs.k8s.io/controller-runtime v0.16.3 sigs.k8s.io/custom-metrics-apiserver v1.29.0 - sigs.k8s.io/kind v0.20.0 + sigs.k8s.io/kind v0.22.0 sigs.k8s.io/mcs-api v0.1.0 sigs.k8s.io/metrics-server v0.6.1-0.20230706083104-796fc0f832c1 sigs.k8s.io/structured-merge-diff/v4 v4.4.1 diff --git a/go.sum b/go.sum index ac6cdcf2d..276bf7137 100644 --- a/go.sum +++ b/go.sum @@ -1510,8 +1510,8 @@ sigs.k8s.io/custom-metrics-apiserver v1.29.0/go.mod h1:4XXz92s/SEmP3L2nlUu6lMWor sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/kind v0.8.1/go.mod h1:oNKTxUVPYkV9lWzY6CVMNluVq8cBsyq+UgPJdvA3uu4= -sigs.k8s.io/kind v0.20.0 h1:f0sc3v9mQbGnjBUaqSFST1dwIuiikKVGgoTwpoP33a8= -sigs.k8s.io/kind v0.20.0/go.mod h1:aBlbxg08cauDgZ612shr017/rZwqd7AS563FvpWKPVs= +sigs.k8s.io/kind v0.22.0 h1:z/+yr/azoOfzsfooqRsPw1wjJlqT/ukXP0ShkHwNlsI= +sigs.k8s.io/kind v0.22.0/go.mod h1:aBlbxg08cauDgZ612shr017/rZwqd7AS563FvpWKPVs= sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 h1:W6cLQc5pnqM7vh3b7HvGNfXrJ/xL6BDMS0v1V/HHg5U= diff --git a/hack/local-up-karmada.sh b/hack/local-up-karmada.sh index d0dadb138..2cd923eb7 100755 --- a/hack/local-up-karmada.sh +++ b/hack/local-up-karmada.sh @@ -79,7 +79,7 @@ util::verify_go_version util::verify_docker # install kind and kubectl -kind_version=v0.20.0 +kind_version=v0.22.0 echo -n "Preparing: 'kind' existence check - " if util::cmd_exist kind; then echo "passed" diff --git a/vendor/modules.txt b/vendor/modules.txt index cb3e46bb8..97309e430 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1822,7 +1822,7 @@ sigs.k8s.io/custom-metrics-apiserver/pkg/registry/external_metrics ## explicit; go 1.18 sigs.k8s.io/json sigs.k8s.io/json/internal/golang/encoding/json -# sigs.k8s.io/kind v0.20.0 +# sigs.k8s.io/kind v0.22.0 ## explicit; go 1.16 sigs.k8s.io/kind/pkg/apis/config/defaults sigs.k8s.io/kind/pkg/apis/config/v1alpha4 diff --git a/vendor/sigs.k8s.io/kind/pkg/apis/config/defaults/image.go b/vendor/sigs.k8s.io/kind/pkg/apis/config/defaults/image.go index d546929d5..da3864fae 100644 --- a/vendor/sigs.k8s.io/kind/pkg/apis/config/defaults/image.go +++ b/vendor/sigs.k8s.io/kind/pkg/apis/config/defaults/image.go @@ -18,4 +18,4 @@ limitations under the License. package defaults // Image is the default for the Config.Image field, aka the default node image. -const Image = "kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72" +const Image = "kindest/node:v1.29.2@sha256:51a1434a5397193442f0be2a297b488b6c919ce8a3931be0ce822606ea5ca245" diff --git a/vendor/sigs.k8s.io/kind/pkg/cluster/internal/create/actions/kubeadminit/init.go b/vendor/sigs.k8s.io/kind/pkg/cluster/internal/create/actions/kubeadminit/init.go index cc587940e..ad25c42a3 100644 --- a/vendor/sigs.k8s.io/kind/pkg/cluster/internal/create/actions/kubeadminit/init.go +++ b/vendor/sigs.k8s.io/kind/pkg/cluster/internal/create/actions/kubeadminit/init.go @@ -142,6 +142,17 @@ func (a *action) Execute(ctx *actions.ActionContext) error { } } + // Kubeadm will add `node.kubernetes.io/exclude-from-external-load-balancers` on control plane nodes. + // For single node clusters, this means we cannot have a load balancer at all (MetalLB, etc), so remove the label. + if len(allNodes) == 1 { + labelArgs := []string{"--kubeconfig=/etc/kubernetes/admin.conf", "label", "nodes", "--all", "node.kubernetes.io/exclude-from-external-load-balancers-"} + if err := node.Command( + "kubectl", labelArgs..., + ).Run(); err != nil { + return errors.Wrap(err, "failed to remove control plane load balancer label") + } + } + // mark success ctx.Status.End(true) return nil diff --git a/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/common/getport.go b/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/common/getport.go index 5c50da94c..41f9c5108 100644 --- a/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/common/getport.go +++ b/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/common/getport.go @@ -21,27 +21,29 @@ import ( ) // PortOrGetFreePort is a helper that either returns the provided port -// if valid or returns a new free port on listenAddr -func PortOrGetFreePort(port int32, listenAddr string) (int32, error) { +// if valid or returns a new free port on listenAddr and a cleanup function +func PortOrGetFreePort(port int32, listenAddr string) (int32, func(), error) { // in the case of -1 we actually want to pass 0 to the backend to let it pick if port == -1 { - return 0, nil + return 0, nil, nil } // in the case of 0 (unset) we want kind to pick one and supply it to the backend if port == 0 { return GetFreePort(listenAddr) } // otherwise keep the port - return port, nil + return port, nil, nil } // GetFreePort is a helper used to get a free TCP port on the host -func GetFreePort(listenAddr string) (int32, error) { +// returns the free port and a cleanup function, the cleanup function must be called +// after all free ports have been determined to ensure the same port is not returned +// multiple times +func GetFreePort(listenAddr string) (int32, func(), error) { dummyListener, err := net.Listen("tcp", net.JoinHostPort(listenAddr, "0")) if err != nil { - return 0, err + return 0, nil, err } - defer dummyListener.Close() port := dummyListener.Addr().(*net.TCPAddr).Port - return int32(port), nil + return int32(port), func() { dummyListener.Close() }, nil } diff --git a/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/docker/provision.go b/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/docker/provision.go index 6c644a365..3a6e1a70c 100644 --- a/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/docker/provision.go +++ b/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/docker/provision.go @@ -386,10 +386,13 @@ func generatePortMappings(clusterIPFamily config.ClusterIPFamily, portMappings . } // get a random port if necessary (port = 0) - hostPort, err := common.PortOrGetFreePort(pm.HostPort, pm.ListenAddress) + hostPort, releaseHostPortFn, err := common.PortOrGetFreePort(pm.HostPort, pm.ListenAddress) if err != nil { return nil, errors.Wrap(err, "failed to get random host port for port mapping") } + if releaseHostPortFn != nil { + defer releaseHostPortFn() + } // generate the actual mapping arg protocol := string(pm.Protocol) diff --git a/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/podman/provision.go b/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/podman/provision.go index c240a2929..5ed1c6b26 100644 --- a/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/podman/provision.go +++ b/vendor/sigs.k8s.io/kind/pkg/cluster/internal/providers/podman/provision.go @@ -399,10 +399,13 @@ func generatePortMappings(clusterIPFamily config.ClusterIPFamily, portMappings . } // get a random port if necessary (port = 0) - hostPort, err := common.PortOrGetFreePort(pm.HostPort, pm.ListenAddress) + hostPort, releaseHostPortFn, err := common.PortOrGetFreePort(pm.HostPort, pm.ListenAddress) if err != nil { return nil, errors.Wrap(err, "failed to get random host port for port mapping") } + if releaseHostPortFn != nil { + defer releaseHostPortFn() + } // generate the actual mapping arg protocol := string(pm.Protocol) diff --git a/vendor/sigs.k8s.io/kind/pkg/cmd/kind/version/version.go b/vendor/sigs.k8s.io/kind/pkg/cmd/kind/version/version.go index 9f010fdda..d1e4b921b 100644 --- a/vendor/sigs.k8s.io/kind/pkg/cmd/kind/version/version.go +++ b/vendor/sigs.k8s.io/kind/pkg/cmd/kind/version/version.go @@ -54,7 +54,7 @@ func DisplayVersion() string { } // versionCore is the core portion of the kind CLI version per Semantic Versioning 2.0.0 -const versionCore = "0.20.0" +const versionCore = "0.22.0" // versionPreRelease is the base pre-release portion of the kind CLI version per // Semantic Versioning 2.0.0 diff --git a/vendor/sigs.k8s.io/kind/pkg/internal/apis/config/validate.go b/vendor/sigs.k8s.io/kind/pkg/internal/apis/config/validate.go index 68185d157..2eabaac67 100644 --- a/vendor/sigs.k8s.io/kind/pkg/internal/apis/config/validate.go +++ b/vendor/sigs.k8s.io/kind/pkg/internal/apis/config/validate.go @@ -152,6 +152,11 @@ func validatePortMappings(portMappings []PortMapping) error { } for _, portMapping := range portMappings { + if portMapping.HostPort == -1 || portMapping.HostPort == 0 { + // Port -1 and 0 cause a random port to be selected, thus duplicates are allowed + continue + } + addr := net.ParseIP(portMapping.ListenAddress) addrString := addr.String()