Skip to content

chore(e2e): bump client-go to v0.36.1, Go to 1.26.4, switch pod exec to WebSocket#8628

Merged
r2k1 merged 1 commit into
mainfrom
chore/e2e-bump-client-go
Jun 3, 2026
Merged

chore(e2e): bump client-go to v0.36.1, Go to 1.26.4, switch pod exec to WebSocket#8628
r2k1 merged 1 commit into
mainfrom
chore/e2e-bump-client-go

Conversation

@r2k1
Copy link
Copy Markdown
Contributor

@r2k1 r2k1 commented Jun 3, 2026

Bumps e2e client-go + Go and switches pod exec from SPDY to WebSocket.

Bumps (e2e/go.mod)

Module From To
k8s.io/{api,apimachinery,client-go} v0.34.2 v0.36.1
sigs.k8s.io/controller-runtime v0.20.4 v0.24.1
go directive 1.25.10 1.26.4 (required by client-go v0.36)

Exec transport (e2e/exec.go)

NewSPDYExecutorNewWebSocketExecutor. WS exec (protocol v5) is GA in apiserver 1.31+; e2e only targets latest AKS, so no SPDY fallback needed.

CI

File Change
.github/workflows/validate-components.yml version-consistency job: go-version: '1.25'go-version-file: e2e/go.mod
.github/workflows/tidy.yaml Add setup-go with go-version-file: e2e/go.mod

No ADO change — agent's GOTOOLCHAIN=auto auto-downloads the version pinned in go.mod (proven in build 166502267 which downloaded go1.25.10 on demand).

Root + aks-node-controller modules untouched (still Go 1.25.10) — neither uses client-go.

Validation

go build, go vet, test-compile all pass in /e2e. Real validation is the e2e run in CI.

Which issue(s) this PR fixes:
Fixes #

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the e2e/ Go module to newer Kubernetes client libraries and a newer Go toolchain, and hardens pod exec by preferring WebSocket exec with SPDY fallback. It also updates CI configuration so jobs that operate on the e2e module follow the e2e module’s Go version.

Changes:

  • Bump e2e dependencies (client-go/API/apimachinery and controller-runtime) and the e2e module Go version.
  • Switch exec transport to WebSocket-first with SPDY fallback in the e2e harness.
  • Update GitHub Actions and ADO pipeline configuration to use the e2e module’s Go version.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
e2e/go.mod Bumps e2e module Go version and k8s/controller-runtime deps.
e2e/go.sum Updates sums to match the new dependency graph.
e2e/exec.go Uses WebSocket exec with SPDY fallback for pod exec streaming robustness.
.pipelines/templates/e2e-template.yaml Pins Go installation for ADO e2e job to match e2e module version.
.github/workflows/validate-components.yml Makes version-consistency jobs follow e2e/go.mod Go version and adds cache path.
.github/workflows/tidy.yaml Adds explicit Go setup for tidy workflow using e2e/go.mod Go version.

Comment thread e2e/go.mod
@r2k1 r2k1 force-pushed the chore/e2e-bump-client-go branch from 2bceb39 to cb88f01 Compare June 3, 2026 00:44
Copilot AI review requested due to automatic review settings June 3, 2026 00:47
@r2k1 r2k1 force-pushed the chore/e2e-bump-client-go branch from cb88f01 to c03d9a2 Compare June 3, 2026 00:47
@r2k1 r2k1 changed the title chore(e2e): bump client-go v0.36.1 + Go 1.26.4, prefer WebSocket exec chore(e2e): bump client-go to v0.36.1, Go to 1.26.4, switch pod exec to WebSocket Jun 3, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated 1 comment.

Comment thread e2e/exec.go Outdated
@r2k1 r2k1 force-pushed the chore/e2e-bump-client-go branch from c03d9a2 to 567300a Compare June 3, 2026 01:05
@r2k1
Copy link
Copy Markdown
Contributor Author

r2k1 commented Jun 3, 2026

Addressed both review comments in 567300a:

  • exec.go: POST → GET for WebSocket upgrade (matches kubectl and RFC 6455).
  • go.sum: bumped k8s.io/apiextensions-apiserver (+ transitive apiserver, component-base) to v0.36.1 to align staging patches.

Copilot AI review requested due to automatic review settings June 3, 2026 05:09
@r2k1 r2k1 force-pushed the chore/e2e-bump-client-go branch from 567300a to e3b6e14 Compare June 3, 2026 05:09
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 5 changed files in this pull request and generated 2 comments.

Comment thread e2e/exec.go
Comment thread .github/workflows/tidy.yaml Outdated
@r2k1 r2k1 enabled auto-merge (squash) June 3, 2026 05:22
…t exec

Upgrades the e2e module to the latest stable k8s client and switches
pod exec from SPDY-only to WebSocket-with-SPDY-fallback. WebSocket exec
(protocol v5, GA in client-go v0.32+) is more robust to apiserver
streaming-proxy stalls than the legacy SPDY transport, which has been
the source of recent flaky timeouts (e.g. wireserver validator hang in
build 166502267).

Changes:

  e2e/go.mod
    * k8s.io/{api,apimachinery,client-go}  v0.34.2 -> v0.36.1
    * sigs.k8s.io/controller-runtime       v0.20.4 -> v0.24.1
    * go directive                         1.25.10 -> 1.26.4
        (required by client-go v0.36)

  e2e/exec.go
    * NewSPDYExecutor -> NewFallbackExecutor(websocket, spdy, IsUpgradeFailure)
      so the harness prefers WebSocket but falls back transparently on
      older clusters or upgrade failures.

  .pipelines/templates/e2e-template.yaml
    * Add GoTool@0 task pinning Go 1.26.4 so the ADO agent doesn't fall
      back to whatever pre-installed version is on the pool.

  .github/workflows/validate-components.yml
    * version-consistency job: switch hardcoded 'go-version: 1.25' to
      'go-version-file: e2e/go.mod' so the workflow follows the module.

  .github/workflows/tidy.yaml
    * Add explicit setup-go step (was relying on ubuntu-latest's default)
      pinned via 'go-version-file: e2e/go.mod' so tidy uses Go 1.26+.

Note: tidy workflow continues to strip toolchain directives from go.mod
(no behavior change), so the bumped 'go' directive is the only knob.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@r2k1 r2k1 force-pushed the chore/e2e-bump-client-go branch from e3b6e14 to 63d571f Compare June 3, 2026 05:24
@r2k1
Copy link
Copy Markdown
Contributor Author

r2k1 commented Jun 3, 2026

Addressed both new review comments in 63d571f:

  • exec.go: request builder now uses .Get() to match the WebSocket executor's GET method (was .Post() — same URL, but aligning the method removes the confusion).
  • tidy.yaml: removed the setup-go step entirely. Tidy runs across 3 modules (root, e2e/, aks-node-controller/) with different Go versions, and runner default + GOTOOLCHAIN=auto already handles all three correctly (which is how main works today).

@r2k1 r2k1 merged commit a8d2b19 into main Jun 3, 2026
29 of 34 checks passed
@r2k1 r2k1 deleted the chore/e2e-bump-client-go branch June 3, 2026 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants