Skip to content

Commit da4ee45

Browse files
authored
Merge pull request #996 from openshift-cloud-team/k8s-bump-1.35
Update Kubernetes dependencies to v0.35.1; go1.25.8
2 parents f95b4ff + 104a212 commit da4ee45

File tree

1,977 files changed

+65751
-58933
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,977 files changed

+65751
-58933
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ _artifacts/
88
_rundir/
99
_tmp/
1010
/bin/
11+
__pycache__/

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM --platform=${BUILDPLATFORM} golang:1.24.13 AS builder
1+
FROM --platform=${BUILDPLATFORM} golang:1.25.8 AS builder
22

33
# golang envs
44
ARG TARGETARCH
@@ -17,7 +17,7 @@ COPY providers/ providers/
1717

1818
RUN CGO_ENABLED=0 go build -o /go/bin/cloud-controller-manager ./cmd/cloud-controller-manager
1919

20-
FROM registry.k8s.io/build-image/go-runner:v2.4.0-go1.25.6-bookworm.0
20+
FROM registry.k8s.io/build-image/go-runner:v2.4.0-go1.25.8-bookworm.0
2121
COPY --from=builder --chown=root:root /go/bin/cloud-controller-manager /cloud-controller-manager
2222
CMD ["/cloud-controller-manager"]
2323
ENTRYPOINT ["/cloud-controller-manager"]

dev/tools/update-golang

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ import subprocess
66
import re
77
import argparse
88

9-
# The file paths to update.
9+
# Root marker used to verify script execution location.
1010
# Assumes the script is run from the root of the repository.
11-
WORKSPACE_PATH = "WORKSPACE"
11+
ROOT_MARKER_PATH = "go.work"
12+
GO_RUNNER_TAGS_URL = "https://registry.k8s.io/v2/build-image/go-runner/tags/list"
13+
GO_RUNNER_GO_SEGMENT_RE = re.compile(r"-go\d+(?:\.\d+){1,2}-")
1214

1315
def find_go_files():
1416
"""Finds all go.mod and go.work files in the repository."""
@@ -46,6 +48,37 @@ def get_latest_go_version():
4648
return version
4749
raise RuntimeError("Could not find a stable Go release.")
4850

51+
def get_go_runner_tags():
52+
"""Fetches go-runner tags from the registry API."""
53+
print(f"Fetching go-runner tags from {GO_RUNNER_TAGS_URL}...")
54+
with urllib.request.urlopen(GO_RUNNER_TAGS_URL) as response:
55+
if response.status != 200:
56+
raise RuntimeError(
57+
f"Failed to fetch go-runner tags: HTTP {response.status}"
58+
)
59+
payload = json.loads(response.read().decode())
60+
tags = payload.get("tags", [])
61+
if not tags:
62+
raise RuntimeError("No tags returned from go-runner registry API.")
63+
64+
return tags
65+
66+
def resolve_go_runner_tag(current_tag, go_version):
67+
"""Resolves the go-runner tag for the target Go version."""
68+
target_tag, replacements = GO_RUNNER_GO_SEGMENT_RE.subn(
69+
f"-go{go_version}-", current_tag, count=1
70+
)
71+
if replacements != 1:
72+
raise RuntimeError(f"Unsupported go-runner tag format: {current_tag}")
73+
74+
if target_tag not in get_go_runner_tags():
75+
raise RuntimeError(
76+
f"go-runner image tag not found for Go {go_version}: {target_tag}"
77+
)
78+
79+
print(f"Using go-runner tag {target_tag} for Go {go_version}")
80+
return target_tag
81+
4982
def _replace_file_contents(file_path, fn):
5083
"""Replaces the contents of a file with the result of a function, applied line-by-line."""
5184
if not os.path.exists(file_path):
@@ -72,11 +105,19 @@ def _replace_file_contents(file_path, fn):
72105

73106
def update_go_file(file_path, new_version):
74107
"""Updates the go and toolchain directives in a go.mod or go.work file."""
108+
parts = new_version.split(".")
109+
if len(parts) < 2:
110+
raise ValueError(f"Invalid Go version '{new_version}'. Expected at least major.minor.")
111+
# The `go` directive should express the minimum supported Go line,
112+
# so we keep it at `major.minor.0` for modules that depend on this repo.
113+
# Exact patch pinning belongs in `toolchain` and runtime/build image config.
114+
go_directive_version = f"{parts[0]}.{parts[1]}.0"
115+
75116
def fn(line):
76117
stripped = line.lstrip()
77118
# Replace lines like `go 1.22.3`
78119
if stripped.startswith("go "):
79-
return f"go {new_version}\n"
120+
return f"go {go_directive_version}\n"
80121
# Replace lines like `toolchain go1.22.3`
81122
if stripped.startswith("toolchain go"):
82123
return f"toolchain go{new_version}\n"
@@ -92,6 +133,15 @@ def update_dockerfile(file_path, go_version):
92133
# Replace lines like `FROM golang:1.24.1` or `FROM --platform=... golang:1.24.1 AS builder`
93134
if line.lstrip().startswith("FROM ") and "golang:" in line:
94135
return re.sub(r"golang:[0-9.]+", f"golang:{go_version}", line)
136+
# Replace runtime image tags like:
137+
# `FROM registry.k8s.io/build-image/go-runner:v2.4.0-go1.25.6-bookworm.0`
138+
if line.lstrip().startswith("FROM ") and "build-image/go-runner:" in line:
139+
image_match = re.search(r"build-image/go-runner:(?P<tag>[^ \t\n]+)", line)
140+
if not image_match:
141+
return line
142+
target_tag = resolve_go_runner_tag(image_match.group("tag"), go_version)
143+
tag_start, tag_end = image_match.span("tag")
144+
return f"{line[:tag_start]}{target_tag}{line[tag_end:]}"
95145
return line
96146

97147
_replace_file_contents(file_path, fn)
@@ -103,8 +153,7 @@ def main():
103153
1. Fetches (or receives) the Go version to update to.
104154
2. Updates all go.mod and go.work files.
105155
3. Updates all Dockerfiles.
106-
4. Updates the WORKSPACE file.
107-
5. Verifies the updates with 'go mod tidy'.
156+
4. Verifies the updates with 'go mod tidy'.
108157
"""
109158
parser = argparse.ArgumentParser(description="Update Go version across the repository.")
110159
parser.add_argument("--version", help="The Go version to update to (e.g., 1.25.7). If not specified, fetches the latest stable version.")
@@ -139,7 +188,7 @@ def main():
139188

140189
if __name__ == "__main__":
141190
# Ensure the script is run from the repository root
142-
if not os.path.exists(WORKSPACE_PATH):
143-
print(f"Error: This script must be run from the repository root directory containing the WORKSPACE file.")
191+
if not os.path.exists(ROOT_MARKER_PATH):
192+
print(f"Error: This script must be run from the repository root directory containing the {ROOT_MARKER_PATH} file.")
144193
else:
145194
main()

docs/RELEASE.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,11 @@ LIBRARY_FILES=(
3636
2. Bump library versions.
3737
```bash
3838
sed -i s/v1.$MINOR_OLD.$PATCH_OLD/v1.$MINOR.$PATCH/ "${VERSION_FILES[@]}"
39-
sed -i s/v0.$MINOR_OLD.$PATCH_OLD/v0.$MINOR.$PATCH/ "${LIBRARY_FILES[@]}"
40-
sed -i s/v1.$MINOR_OLD.$PATCH_OLD/v1.$MINOR.$PATCH/ "${LIBRARY_FILES[@]}"
39+
for f in "${LIBRARY_FILES[@]}" go.work; do
40+
sed -E -i \
41+
"s#(k8s\\.io/[^[:space:]]+[[:space:]]+v0\\.)$MINOR_OLD\\.$PATCH_OLD#\\1$MINOR.$PATCH#g; s#(k8s\\.io/kubernetes[[:space:]]+v1\\.)$MINOR_OLD\\.$PATCH_OLD#\\1$MINOR.$PATCH#g" \
42+
"$f"
43+
done
4144
for go_mod_file in "${LIBRARY_FILES[@]}"; do
4245
dir=$(dirname "$go_mod_file")
4346
pushd $dir

ginko-test-package-version.env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v1.34.2
1+
v1.35.1

go.mod

Lines changed: 52 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
module k8s.io/cloud-provider-gcp
22

3-
go 1.24.13
3+
go 1.25.0
44

5-
toolchain go1.26.0
5+
toolchain go1.25.8
66

77
require (
88
github.com/evanphx/json-patch v5.9.0+incompatible
@@ -15,18 +15,18 @@ require (
1515
google.golang.org/api v0.199.0
1616
gopkg.in/gcfg.v1 v1.2.3
1717
gopkg.in/warnings.v0 v0.1.2 // indirect
18-
k8s.io/api v0.34.2
19-
k8s.io/apimachinery v0.34.2
20-
k8s.io/apiserver v0.34.2
21-
k8s.io/client-go v0.34.2
22-
k8s.io/code-generator v0.34.2
23-
k8s.io/component-base v0.34.2
24-
k8s.io/component-helpers v0.34.2
25-
k8s.io/controller-manager v0.34.2
18+
k8s.io/api v0.35.1
19+
k8s.io/apimachinery v0.35.1
20+
k8s.io/apiserver v0.35.1
21+
k8s.io/client-go v0.35.1
22+
k8s.io/code-generator v0.35.1
23+
k8s.io/component-base v0.35.1
24+
k8s.io/component-helpers v0.35.1
25+
k8s.io/controller-manager v0.35.1
2626
k8s.io/klog/v2 v2.140.0
27-
k8s.io/kube-controller-manager v0.34.2
28-
k8s.io/kubelet v0.34.2
29-
k8s.io/metrics v0.34.2
27+
k8s.io/kube-controller-manager v0.35.1
28+
k8s.io/kubelet v0.35.1
29+
k8s.io/metrics v0.35.1
3030
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
3131
sigs.k8s.io/controller-tools v0.17.2
3232
)
@@ -36,9 +36,9 @@ require (
3636
github.com/GoogleCloudPlatform/gke-networking-api v0.1.2-0.20240904205008-bc15495fd43f
3737
github.com/hashicorp/go-multierror v1.1.1
3838
github.com/natefinch/atomic v1.0.1
39-
k8s.io/cloud-provider v0.34.2
39+
k8s.io/cloud-provider v0.35.1
4040
k8s.io/cloud-provider-gcp/providers v0.0.0-00010101000000-000000000000
41-
k8s.io/kubernetes v1.34.2
41+
k8s.io/kubernetes v1.35.1
4242
)
4343

4444
require (
@@ -59,11 +59,10 @@ require (
5959
go.yaml.in/yaml/v2 v2.4.3 // indirect
6060
go.yaml.in/yaml/v3 v3.0.4 // indirect
6161
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f // indirect
62-
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect
6362
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect
64-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect
65-
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
66-
k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f // indirect
63+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect
64+
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
65+
k8s.io/gengo/v2 v2.0.0-20250922181213-ec3ebc5fd46b // indirect
6766
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect
6867
sigs.k8s.io/controller-runtime v0.14.7 // indirect
6968
sigs.k8s.io/randfill v1.0.0 // indirect
@@ -109,19 +108,19 @@ require (
109108
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
110109
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
111110
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
112-
github.com/onsi/gomega v1.36.2
111+
github.com/onsi/gomega v1.38.2
113112
github.com/pkg/errors v0.9.1 // indirect
114113
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
115114
github.com/prometheus/client_model v0.6.2 // indirect
116115
github.com/prometheus/common v0.66.1 // indirect
117116
github.com/prometheus/procfs v0.16.1 // indirect
118117
github.com/stoewer/go-strcase v1.3.0 // indirect
119-
go.etcd.io/etcd/api/v3 v3.6.4 // indirect
120-
go.etcd.io/etcd/client/pkg/v3 v3.6.4 // indirect
121-
go.etcd.io/etcd/client/v3 v3.6.4 // indirect
118+
go.etcd.io/etcd/api/v3 v3.6.5 // indirect
119+
go.etcd.io/etcd/client/pkg/v3 v3.6.5 // indirect
120+
go.etcd.io/etcd/client/v3 v3.6.5 // indirect
122121
go.opencensus.io v0.24.0 // indirect
123122
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
124-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect
123+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
125124
go.opentelemetry.io/otel v1.41.0 // indirect
126125
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect
127126
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 // indirect
@@ -140,45 +139,45 @@ require (
140139
golang.org/x/text v0.34.0 // indirect
141140
golang.org/x/time v0.10.0 // indirect
142141
golang.org/x/tools v0.41.0 // indirect
143-
google.golang.org/grpc v1.72.1 // indirect
142+
google.golang.org/grpc v1.72.2 // indirect
144143
google.golang.org/protobuf v1.36.8 // indirect
145144
gopkg.in/inf.v0 v0.9.1 // indirect
146145
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
147146
gopkg.in/yaml.v2 v2.4.0 // indirect
148147
gopkg.in/yaml.v3 v3.0.1 // indirect
149-
k8s.io/apiextensions-apiserver v0.34.2 // indirect
150-
k8s.io/kms v0.34.2 // indirect
151-
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
148+
k8s.io/apiextensions-apiserver v0.35.1 // indirect
149+
k8s.io/kms v0.35.1 // indirect
150+
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
152151
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
153152
sigs.k8s.io/yaml v1.6.0 // indirect
154153
)
155154

156155
replace (
157-
k8s.io/api => k8s.io/api v0.34.2
158-
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.34.2
159-
k8s.io/apimachinery => k8s.io/apimachinery v0.34.2
160-
k8s.io/apiserver => k8s.io/apiserver v0.34.2
161-
k8s.io/cli-runtime => k8s.io/cli-runtime v0.34.2
162-
k8s.io/client-go => k8s.io/client-go v0.34.2
163-
k8s.io/cloud-provider => k8s.io/cloud-provider v0.34.2
156+
k8s.io/api => k8s.io/api v0.35.1
157+
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.35.1
158+
k8s.io/apimachinery => k8s.io/apimachinery v0.35.1
159+
k8s.io/apiserver => k8s.io/apiserver v0.35.1
160+
k8s.io/cli-runtime => k8s.io/cli-runtime v0.35.1
161+
k8s.io/client-go => k8s.io/client-go v0.35.1
162+
k8s.io/cloud-provider => k8s.io/cloud-provider v0.35.1
164163

165164
k8s.io/cloud-provider-gcp/providers => ./providers
166-
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.34.2
167-
k8s.io/code-generator => k8s.io/code-generator v0.34.2
168-
k8s.io/component-base => k8s.io/component-base v0.34.2
169-
k8s.io/component-helpers => k8s.io/component-helpers v0.34.2
170-
k8s.io/controller-manager => k8s.io/controller-manager v0.34.2
171-
k8s.io/cri-api => k8s.io/cri-api v0.34.2
172-
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.34.2
173-
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.34.2
174-
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.34.2
175-
k8s.io/kube-proxy => k8s.io/kube-proxy v0.34.2
176-
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.34.2
177-
k8s.io/kubectl => k8s.io/kubectl v0.34.2
178-
k8s.io/kubelet => k8s.io/kubelet v0.34.2
179-
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.34.2
180-
k8s.io/metrics => k8s.io/metrics v0.34.2
181-
k8s.io/mount-utils => k8s.io/mount-utils v0.34.2
182-
k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.34.2
183-
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.34.2
165+
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.35.1
166+
k8s.io/code-generator => k8s.io/code-generator v0.35.1
167+
k8s.io/component-base => k8s.io/component-base v0.35.1
168+
k8s.io/component-helpers => k8s.io/component-helpers v0.35.1
169+
k8s.io/controller-manager => k8s.io/controller-manager v0.35.1
170+
k8s.io/cri-api => k8s.io/cri-api v0.35.1
171+
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.35.1
172+
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.35.1
173+
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.35.1
174+
k8s.io/kube-proxy => k8s.io/kube-proxy v0.35.1
175+
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.35.1
176+
k8s.io/kubectl => k8s.io/kubectl v0.35.1
177+
k8s.io/kubelet => k8s.io/kubelet v0.35.1
178+
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.35.1
179+
k8s.io/metrics => k8s.io/metrics v0.35.1
180+
k8s.io/mount-utils => k8s.io/mount-utils v0.35.1
181+
k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.35.1
182+
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.35.1
184183
)

0 commit comments

Comments
 (0)