Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependency update - Golang 1.22.0 #3280

Closed
43 of 45 tasks
MadhavJivrajani opened this issue Sep 20, 2023 · 31 comments
Closed
43 of 45 tasks

Dependency update - Golang 1.22.0 #3280

MadhavJivrajani opened this issue Sep 20, 2023 · 31 comments
Assignees
Labels
area/dependency Issues or PRs related to dependency changes area/release-eng Issues or PRs related to the Release Engineering subproject kind/feature Categorizes issue or PR as related to a new feature. needs-priority sig/release Categorizes an issue or PR as relevant to SIG Release.

Comments

@MadhavJivrajani
Copy link

MadhavJivrajani commented Sep 20, 2023

Tracking info

Link to any previous tracking issue: #3076

Golang mailing list announcement: for go1.22 https://groups.google.com/g/golang-announce/c/TpowDYVBMoY/m/3YwLkOoOAAAJ

SIG Release Slack thread: https://kubernetes.slack.com/archives/CJH2GBF7Y/p1707291164014399

Work items for Go1.22rc1

Work items for Go1.22rc2

After kube-cross image promotion

Note
This update may require an update to go.sum files, for example: kubernetes/kubernetes#118507
This will require an API Review approval.

After go-runner image promotion

After kubernetes/kubernetes (master) has been updated

Work items for Go1.22

After kube-cross image promotion

Note
This update may require an update to go.sum files, for example: kubernetes/kubernetes#118507
This will require an API Review approval.

After go-runner image promotion

After distroless-iptables image promotion

After kubernetes/kubernetes (master) has been updated

Follow-up items

  • Ensure the Golang issue template is updated with any new requirements

cc: @kubernetes/release-engineering
cc: @liggitt

@MadhavJivrajani MadhavJivrajani added kind/feature Categorizes issue or PR as related to a new feature. sig/release Categorizes an issue or PR as relevant to SIG Release. area/release-eng Issues or PRs related to the Release Engineering subproject area/dependency Issues or PRs related to dependency changes labels Sep 20, 2023
@MadhavJivrajani
Copy link
Author

MadhavJivrajani commented Sep 20, 2023

Tracking PRs related to go1.22 that we would need to pick to release branches as part of an eventual update to go1.22:


Tracking verification of conditions for bumping go1.21 on release branches:


Tracking the PR that actually bumps to go1.22:

@pohly
Copy link
Contributor

pohly commented Jan 4, 2024

kubernetes/kubernetes#120750 is getting cherry-picked in:

@cpanato
Copy link
Member

cpanato commented Jan 4, 2024

/assign
i will work on the release engineering side, image bumps and other things :)

@liggitt
Copy link
Member

liggitt commented Feb 9, 2024

add golang/go#65625 as a potential go1.22 regression to track (either until it is resolved, or until we are sure it doesn't impact Kubernetes' use of go)

@cpanato
Copy link
Member

cpanato commented Feb 11, 2024

maybe we can close this issue and open a new one to track #3280 (comment)

wdyt? @liggitt @MadhavJivrajani

@MadhavJivrajani
Copy link
Author

@cpanato I'm not sure I fully understand why we need a new issue - maybe I'm missing something?

@liggitt - tracked golang/go#65625 as a regression, thanks!

@liggitt
Copy link
Member

liggitt commented Feb 12, 2024

maybe we can close this issue and open a new one to track #3280 (comment)

I have a slight preference for keeping everything associated with the minor update in a single issue, but it is a little weird for an issue titled go1.22.0 to track the minor update of release branches to an eventual go1.22.x... maybe we could truncate the title to go1.22?

@cpanato
Copy link
Member

cpanato commented Feb 12, 2024

ok not a problem, was more a suggestion :) we keep this open

@liggitt
Copy link
Member

liggitt commented Mar 4, 2024

kubernetes/kubernetes#121476 bumped honnef.co/go/tools to v0.4.6

it turns out that release specifically contained a fix for evaluating go1.22: https://github.com/dominikh/go-tools/releases/tag/2023.1.6

please add that to the list of updates tracked in #3280 (comment) needed for go1.22

@MadhavJivrajani
Copy link
Author

@liggitt good catch! Thanks, I've tracked the PR.

@MadhavJivrajani
Copy link
Author

MadhavJivrajani commented May 17, 2024

Now that we are about to start the process of bumping the Go major version on release branches, we have one tracked regression that seems to affect runc: golang/go#65625

However, this issue is not a bug in Go itself but in glibc (specifically starting from glibc 2.25): golang/go#65625 (comment). However, the issue seems to be triggered in go1.22 because of it calling pthread_getattr_np(pthread_self(), &attr)

There is an attempt at gracefully handing this in go, however that also does not seem to be a sustainable solution: https://go-review.googlesource.com/c/go/+/585019

The workaround here needs to be in runc itself as mentioned here: opencontainers/runc#4233

cc @liggitt

@MadhavJivrajani
Copy link
Author

cc @akhilerm

@BenTheElder
Copy link
Member

Though also we're pretty sure that bug only affects runc with nsenter, which kubelet is not doing, so as long as your runc binary is not with go 1.22 kubelet can be as far as I know.

@humblec
Copy link

humblec commented May 29, 2024

Now that we are about to start the process of bumping the Go major version on release branches, we have one tracked regression that seems to affect runc: golang/go#65625

However, this issue is not a bug in Go itself but in glibc (specifically starting from glibc 2.25): golang/go#65625 (comment). However, the issue seems to be triggered in go1.22 because of it calling pthread_getattr_np(pthread_self(), &attr)

There is an attempt at gracefully handing this in go, however that also does not seem to be a sustainable solution: https://go-review.googlesource.com/c/go/+/585019

The workaround here needs to be in runc itself as mentioned here: opencontainers/runc#4233

cc @liggitt

The GO cherry-pick has been approved golang/go#67650 and mostly its going to be part of Go 1.22.4.

@MadhavJivrajani
Copy link
Author

MadhavJivrajani commented May 30, 2024

I see an incoming Go CVE: golang/go#67682

Which means go1.22.4 might come sooner than expected. @dims / @liggitt thoughts on waiting it out? The other alternative is we can bump release branches to go1.22.3 since the regression does not affect K8s itself. We would however have to be on a differing Go version than runc for at least one patch release, which could be acceptable.

@humblec
Copy link

humblec commented May 30, 2024

I see am incoming Go CVE: golang/go#67682

Which means go1.22.4 might come sooner than expected. @dims / @liggitt thoughts on waiting it out? The other alternative is we can bump release branches to go1.22.3 since the regression does not affect K8s itself. We would however have to be on a differing Go version than runc for at least one patch release, which could be acceptable.

@MadhavJivrajani imo, considering a CVE fix is also part of 1.22.4, I think it's good to bump k/k on 1.22.4.

@dims
Copy link
Member

dims commented May 30, 2024

The other alternative is we can bump release branches to go1.22.3 since the regression does not affect K8s itself.

My vote is to keep the wheels turning as we may catch things in CI jobs from what we have now. differing Go version than runc is not a concern i have.

@BenTheElder
Copy link
Member

+1 @dims, we're often having a different version anyhow when we're using prebuilt upstream binaries versus our source builds ...

Unless we know that the packages kubelet uses are not supported on the go version, this should be fine.

We continue, I think we only have the codegen issue which only applies to older branches when the go image isn't also updated?

@MadhavJivrajani
Copy link
Author

@dims @BenTheElder go1.22.4 is slated for Tuesday (4th June): https://groups.google.com/d/msgid/golang-dev/hro34FA2QbSJZ-wwA7vkTQ%40geopod-ismtpd-25?utm_medium=email&utm_source=footer

Considering we've already kicked off testing with 1.22.3 and that hasn't surfaced failing jobs (except the codegen issue), I do think 4th June is reasonable to wait for. Please lmk if you have concerns with this and I can start working towards bumping to go1.22.3. Thanks!

@dims
Copy link
Member

dims commented May 31, 2024

@MadhavJivrajani personally i like getting things in and watch the periodic ci jobs over the weekend when there is not that much activity and then come monday there is a set of things to do .. but it's your call :) i am ok either way in this instance.

@dims
Copy link
Member

dims commented Jun 20, 2024

@MadhavJivrajani are we done here?

@cpanato
Copy link
Member

cpanato commented Jun 20, 2024

i will build the images for the release branches :)

@cpanato
Copy link
Member

cpanato commented Jun 26, 2024

all done :)
/close

@k8s-ci-robot
Copy link
Contributor

@cpanato: Closing this issue.

In response to this:

all done :)
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@MadhavJivrajani
Copy link
Author

Yay! 🎉
Thanks folks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/dependency Issues or PRs related to dependency changes area/release-eng Issues or PRs related to the Release Engineering subproject kind/feature Categorizes issue or PR as related to a new feature. needs-priority sig/release Categorizes an issue or PR as relevant to SIG Release.
Projects
None yet
Development

No branches or pull requests

8 participants