-
Notifications
You must be signed in to change notification settings - Fork 505
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
go-runner in 1.24.8 kube-proxy Docker Image is built with 1.17.3 GO #2841
Comments
@jhawkins1: This issue is currently awaiting triage. If a SIG or subproject determines this is a relevant issue, they will accept it by applying the The 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/test-infra repository. |
/remove-sig api-machinery |
@dims: The label(s) In response to this:
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/test-infra repository. |
/sig security |
/sig release |
we'll need help from sig-release here, I tried to find out how the image is built for 1.24 without success |
Looks like go-runner was added to kube-proxy in 1.23 via kubernetes/kubernetes#106086 . I see @BenTheElder played a role with the adding of go-runner. Maybe the folks on that Issue and set of PRs could aid in tracking down this issue. |
kube-proxy doesn't use this image in 1.25+ |
Unfortunately we probably can't backport the 1.25 improvements since they could break people depending on other things in the image. |
@BenTheElder , looking at the build it appears it should be using 1.18 GO for the Image being generated and then utilized by Kube Proxy. Confusing to me how it is using the 1.17.3 GO... I am fuzzy though how this works -- my first time looking at the build mechanisms. |
@BenTheElder .... Ping... Any progress or further thoughts on this issue? Can the go-runner that kube-proxy is using be built with the same GO version used by 1.24.x K8 without backporting other changes for 1.25.x that you eluded to in your earlier comment? We would like to get the CVE fixes in 1.24.x without needing to move to 1.25.x in the near term -- 1.25.x is in our plans for early/mid 2023, before 1.24 goes EOL in July. Getting some pressures on the Vuln Management side to get the CVEs remediate in the nearer term. |
I'm sorry but I'm not working on this, and I'm out right now.
Maybe? This is not easy to answer, Go version upgrades often require updating dependencies and otherwise patching to work around behavior / standard library changes. You'll have to look into what changes are between these go versions. Focus in the kube-proxy image work has been on eliminating dependencies in the image going forward for cc @kubernetes/sig-release-leads @liggitt has been working on a patch set to be able to safely upgrade minor go versions on a patch releases for the first time, but I don't think it has included go-runner, and he's also out right now. |
it did bump the go-runner image for 1.23 and 1.24:
but this issue is saying the go-runner version for kube-proxy is not controlled by that line? since https://github.com/kubernetes/kubernetes/blob/v1.24.8/build/common.sh#L94 also referenced go1.18.8 but this issue is saying the v1.24.8 kube-proxy image uses a go-runner built with go1.17? |
@liggitt , the Vulnerability Scanner we are using (Palo Alto Prisma) is detecting 1.17.3 for the go-runner Application (/go-runner) in the 1.24.8 kube-proxy Image (k8s.gcr.io/kube-proxy:v1.24.8). Other K8 GO Apps (ex. usr/local/bin/kube-proxy) are showing using 1.18.8. We recently upgraded to 1.24.x family of K8 and assumed 1.18.x was used for everything, and discovered it appears the GO-Runner was built with 1.17.3 GO. Confusing, thus the issue submission. |
hmm, looks like the version of go-runner included in the kube-proxy iptables image comes from https://github.com/kubernetes/release/blame/master/images/build/debian-iptables/Makefile#L24 that is actually stale on master (I would have expected go1.19.4), but I also don't know if/how that got bumped for the debian-iptables image version used in 1.23 and 1.24 I think this issue probably belongs in the https://github.com/kubernetes/release repo... once that produces a debian-iptables image with modern go-runner images, we can pick that up in 1.23 and 1.24. /transfer release |
https://github.com/kubernetes/release/blob/master/images/build/debian-iptables/variants.yaml says |
I think that this is the change d36a24a |
dup of #2507 ? |
d36a24a didn't update the debian-iptables IMAGE_VERSION, and didn't produce a new image, did it? (was 1.5.1 before and is still 1.5.1) |
also, the go-runner image is still stale (should be 1.19.4 now) |
should 1.23 and 1.24 update from bullseye-v1.1.0 and bullseye-v1.3.0 to bullseye-v1.5.1 (or whatever 1.5.x is after we update go-runner 1.19.4)? |
I see new images pushed with the same tag |
I think so |
really? 😱 I didn't expect mutable tags there |
FWIW we normally don't consume from staging directly and what we promote to production (registry.k8s.io) is promoted by digest so the tag mutability isn't as problematic as it sounds. |
do we know if the 1.5.1 image that got promoted included the go-runner update or not? |
@liggitt , in January we updated to 1.24.10, and it is still using the old go-runner. So, it does not look like this has been corrected unless it made it into the 1.24.11 release that just came out -- I could not really tell from the CHANGELOG comments. |
1.23 (EOL):
1.24:
1.25:
1.26:
|
cc @cpanato for visibility / gap in dependency tracking / propagating new go versions through image chains |
looks like in the past we missed to update distroless-iptables, but now we are tracking that and keeping up-to-date i will review the active branches and check those things |
@liggitt should we build a new distrolles-iptables using go 1.19 and update that in the active patch branches? today we are building that only with go 1.20 |
The Kubernetes project currently lacks enough contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle stale |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues. This bot triages un-triaged issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /lifecycle rotten |
The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs. This bot triages issues according to the following rules:
You can:
Please send feedback to sig-contributor-experience at kubernetes/community. /close not-planned |
@k8s-triage-robot: Closing this issue, marking it as "Not Planned". In response to this:
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/test-infra repository. |
What happened?
It appears although 1.24.x moved to 1.18 GO that the "go-runner" in kube-proxy Docker Image is built using 1.17.3 GO. This is being detected by Vulnerability Scanners, therefore, all 1.17.3 CVEs are being reported for the kube-proxy Image due to "go-runner".
What did you expect to happen?
"go-runner" should be built with the same version of GO that the Kubernetes Release is using. For 1.24.8 that is GO 1.18.x.
How can we reproduce it (as minimally and precisely as possible)?
Vulnerability Scan of the Container Image will show that 1.17.3 is being used to build the "go-runner" in the kube-proxy image.
Anything else we need to know?
No response
Kubernetes version
1.24.8
Cloud provider
OS version
Install tools
Container runtime (CRI) and version (if applicable)
Related plugins (CNI, CSI, ...) and versions (if applicable)
The text was updated successfully, but these errors were encountered: