Skip to content
This repository has been archived by the owner on Mar 22, 2024. It is now read-only.

Use the correct kubectl for the cluster #248

Merged
merged 4 commits into from
May 16, 2023
Merged

Conversation

kfox1111
Copy link
Contributor

@kfox1111 kfox1111 commented Apr 29, 2023

This patch updates the hooks to use the correct version of kubectl for the cluster you are running on.

It also enables the hooks to run with a container image that does not contain a shell.

fixes: #247

This patch updates the hooks to use the correct version of kubectl
for the cluster you are running on.

Signed-off-by: Kevin Fox <Kevin.Fox@pnnl.gov>
@marcofranssen
Copy link
Contributor

We recently settled to adopt the chainguard images because they are known for their continuous security patches as well the small size.

@kfox1111
Copy link
Contributor Author

kfox1111 commented May 2, 2023

Will chainguard build kubectl images for every major.minor.micro version of kubectl? Or at last maybe major.minor?

Also, because they don't cut tags, we'd probably have to keep a mapping of which version of latest each major.minor version would need to reference. Would be a lot more work.

I don't think its ever recommended to use a k8s client version that is greater then the cluster api version your running.

So, I'm unsure of the best way to use chainguard for this. Thoughts?

As far as I can tell, the rancher containers are just the kubectl binaries. So they are actually smaller then the chainguard images since there is no shell or other things needing updates. They should not be any less secure then the kubernetes version your running on your own k8s cluster since they match and the binaries are from the same source.

@kfox1111
Copy link
Contributor Author

kfox1111 commented May 2, 2023

It wasn't until I started working on #249 that I noticed their website only mentions they are building 1.27.0 clients.

Though playing with crane, it looks like they have a few more options not documented...

1
1.25
1.25.4
1.25.4-r0
1.25.4-r1
1.26
1.26.0
1.26.0-r0
1.26.1
1.26.1-r0
1.26.1-r1
1.26.1-r2
1.26.2
1.26.2-r0
1.26.3
1.26.3-r0
1.26.3-r1
1.27
1.27.0
1.27.0-r0
1.27.1
1.27.1-r0

What if we looked in that list, and found the closes match? We'd still want to make a map of k8s version to newest rX revision and use that. and if k8s < 1.26.0, then just use 1.25.4-rX?

A version without busybox would still be nice from a size/cve standpoint too.

@kfox1111
Copy link
Contributor Author

kfox1111 commented May 3, 2023

Maybe one other option.... https://kubernetes.io/releases/version-skew-policy/#kubectl says something different then what I remember. We're talking about supporting n-2...n. kubectl supports one back and one forward from a kubectl version. so, we could go with a chainguard kubectl n-1 image from what we support if its still getting updates. It would cover all of the n-2...n releases we officially support.

@marcofranssen
Copy link
Contributor

Maybe one other option.... kubernetes.io/releases/version-skew-policy/#kubectl says something different then what I remember. We're talking about supporting n-2...n. kubectl supports one back and one forward from a kubectl version. so, we could go with a chainguard kubectl n-1 image from what we support if its still getting updates. It would cover all of the n-2...n releases we officially support.

I checked with the project. They will only support the latest supported k8s releases which indeed is the n-2. I asked if I could add a contribution there to support more, bt for security reasons (CVE patching) they won't.

$ crane ls cgr.dev/chainguard/kubectl | grep -v 'sha256' | head -n 23
1
1.25
1.25.4
1.25.4-r0
1.25.4-r1
1.26
1.26.0
1.26.0-r0
1.26.1
1.26.1-r0
1.26.1-r1
1.26.1-r2
1.26.2
1.26.2-r0
1.26.3
1.26.3-r0
1.26.3-r1
1.27
1.27.0
1.27.0-r0
1.27.1
1.27.1-r0
latest

@faisal-memon faisal-memon added the bug Something isn't working label May 10, 2023
@faisal-memon
Copy link
Contributor

Since we only officially support n-2 is the current chainguard image we are using sufficient?

@faisal-memon
Copy link
Contributor

Overall changes look good to me. Its ok if we cant use chainguard everywhere.

@faisal-memon faisal-memon added this to the 0.8.x milestone May 15, 2023
Copy link
Contributor

@faisal-memon faisal-memon left a comment

Choose a reason for hiding this comment

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

Thanks @kfox1111 for fixing this.

@faisal-memon
Copy link
Contributor

@kfox1111 Some conflicts need to be resolved before we can merge this.

Signed-off-by: kfox1111 <Kevin.Fox@pnnl.gov>
@kfox1111 kfox1111 requested a review from edwbuck as a code owner May 16, 2023 17:00
Signed-off-by: Kevin Fox <Kevin.Fox@pnnl.gov>
Signed-off-by: Kevin Fox <Kevin.Fox@pnnl.gov>
@marcofranssen marcofranssen merged commit aed6fdf into main May 16, 2023
@marcofranssen marcofranssen deleted the kubectl-cluster-version branch May 16, 2023 18:28
marcofranssen added a commit that referenced this pull request May 25, 2023
* c1c5b11 Merge pull request #306 from spiffe/remove-1.21
* 0df45e3 Fix up docs
* ed038fe Upgrade to spire 1.6.4 (#308)
* dc5d9cf Fix root README.md
* e4447fd Upgrade Tornjak to new image v1.2.1 (#299)
* 69f402e Update docs
* 38d51d5 Apply suggestions from code review
* a1ba235 Update docs
* 1922085 Fix hooks for K3s (#305)
* 4fb549e Remove 1.21.x testing
* 88efc77 Allow to use spire-server as an upstream authority (#304)
* 0ba0388 Add support for spire-server ingress (#68)
* 4777a30 Bump test chart dependencies (#301)
* 00c2c1a Fix the generated pr so that it runs jobs too (#303)
* dd1ad49 Update images for cve's found by the cronjob (#290)
* 1c69470 Updated Tornjak documenation with Not-for-production labels (#297)
* 7809637 Merge pull request #296 from spiffe/dependabot/github_actions/helm/kind-action-1.7.0
* e61ed17 Merge pull request #295 from spiffe/dependabot/github_actions/sigstore/cosign-installer-3.0.5
* 9975e58 Merge pull request #245 from spiffe/tags
* 7bb7ece Bump helm/kind-action from 1.6.0 to 1.7.0
* f1623a5 Bump sigstore/cosign-installer from 3.0.4 to 3.0.5
* f8db5a3 Fix Tornjak persistence issue (#294)
* b30b412 Tornjak reuse spire-lib.cluster-domain macro (#292)
* 90c9eb5 Fix kubectl-image macro to handle version deprecation
* 300d1cc Apply deprecation of image.version to Tornjak
* d850486 Instead of removing version, first deprecate version
* 59e422b Add documentation for all image.tag values
* d1f3cdb Switch image.version to image.tag
* 31ce704 Cleanup maintainer handbook (#287)
* a2da943 Remove manual dispatch from dummy workflow (#288)
* 807558b Bump helm/kind-action from 1.5.0 to 1.6.0 (#285)
* 3df67db Bump sigstore/cosign-installer from 3.0.3 to 3.0.4 (#286)
* 5505d41 Merge pull request #283 from spiffe/additional-k8s-native-feature-tornjak-frontend
* 391f093 Allow to configure topologySpreadConstraints for tornjak-frontend
* 5cc26d3 Allow to configure tolerations for tornjak-frontend
* 3537161 Allow to configure affinity for tornjak-frontend
* aed6fdf Use the correct kubectl for the cluster (#248)
* ee43c5e Add nodeSelector for tornjak
* fc13cbd Merge pull request #234 from spiffe/tornjak
* ed472aa Update documentation
* a11cfc9 Allow to define the resources for tornjak backend
* 382e0d4 Upgrade Tornjak image to version v1.2.0  (#259)
* 657c460 Update charts/spire/charts/tornjak-frontend/templates/service.yaml
* 7521caf Update charts/spire/charts/spire-server/templates/tornjak-config.yaml
* b64c352 Update charts/spire/charts/spire-server/templates/tests/test-tornjak-connection.yaml
* 6ddf6ab Improve tornjak docs (#276)
* 80d34f0 Use common post-install scripts for testing
* f5efa0c Remove dead macros
* bd86518 Fixing shellcheck
* 91bdea2 Provide minimal resources to prevent accidental crashes due to resource exhaustion
* 1675997 Tornjak global image fix (#228)
* 5e827ee Add Tornjak Tests (#220)
* bdba97b Add empty directory to Tornjak to support npm cache (#224)
* da186c5 Split Tornjak Frontend into separate subchart (#179)
* 6d22126 Add Tornjak
* 2669d8b Add maintainer's handbook. (#265)
* 72596ae Skip tests for docs folders (#281)
* 7c71738 Bump test chart dependencies (#279)
* 05addae Add json to test path (#280)
* 8d9b734 Switch the spire tests to always run (#250)

Signed-off-by: Marco Franssen <marco.franssen@gmail.com>
marcofranssen added a commit that referenced this pull request May 25, 2023
* c1c5b11 Merge pull request #306 from spiffe/remove-1.21
* 0df45e3 Fix up docs
* ed038fe Upgrade to spire 1.6.4 (#308)
* dc5d9cf Fix root README.md
* e4447fd Upgrade Tornjak to new image v1.2.1 (#299)
* 69f402e Update docs
* 38d51d5 Apply suggestions from code review
* a1ba235 Update docs
* 1922085 Fix hooks for K3s (#305)
* 4fb549e Remove 1.21.x testing
* 88efc77 Allow to use spire-server as an upstream authority (#304)
* 0ba0388 Add support for spire-server ingress (#68)
* 4777a30 Bump test chart dependencies (#301)
* 00c2c1a Fix the generated pr so that it runs jobs too (#303)
* dd1ad49 Update images for cve's found by the cronjob (#290)
* 1c69470 Updated Tornjak documenation with Not-for-production labels (#297)
* 7809637 Merge pull request #296 from spiffe/dependabot/github_actions/helm/kind-action-1.7.0
* e61ed17 Merge pull request #295 from spiffe/dependabot/github_actions/sigstore/cosign-installer-3.0.5
* 9975e58 Merge pull request #245 from spiffe/tags
* 7bb7ece Bump helm/kind-action from 1.6.0 to 1.7.0
* f1623a5 Bump sigstore/cosign-installer from 3.0.4 to 3.0.5
* f8db5a3 Fix Tornjak persistence issue (#294)
* b30b412 Tornjak reuse spire-lib.cluster-domain macro (#292)
* 90c9eb5 Fix kubectl-image macro to handle version deprecation
* 300d1cc Apply deprecation of image.version to Tornjak
* d850486 Instead of removing version, first deprecate version
* 59e422b Add documentation for all image.tag values
* d1f3cdb Switch image.version to image.tag
* 31ce704 Cleanup maintainer handbook (#287)
* a2da943 Remove manual dispatch from dummy workflow (#288)
* 807558b Bump helm/kind-action from 1.5.0 to 1.6.0 (#285)
* 3df67db Bump sigstore/cosign-installer from 3.0.3 to 3.0.4 (#286)
* 5505d41 Merge pull request #283 from spiffe/additional-k8s-native-feature-tornjak-frontend
* 391f093 Allow to configure topologySpreadConstraints for tornjak-frontend
* 5cc26d3 Allow to configure tolerations for tornjak-frontend
* 3537161 Allow to configure affinity for tornjak-frontend
* aed6fdf Use the correct kubectl for the cluster (#248)
* ee43c5e Add nodeSelector for tornjak
* fc13cbd Merge pull request #234 from spiffe/tornjak
* ed472aa Update documentation
* a11cfc9 Allow to define the resources for tornjak backend
* 382e0d4 Upgrade Tornjak image to version v1.2.0  (#259)
* 657c460 Update charts/spire/charts/tornjak-frontend/templates/service.yaml
* 7521caf Update charts/spire/charts/spire-server/templates/tornjak-config.yaml
* b64c352 Update charts/spire/charts/spire-server/templates/tests/test-tornjak-connection.yaml
* 6ddf6ab Improve tornjak docs (#276)
* 80d34f0 Use common post-install scripts for testing
* f5efa0c Remove dead macros
* bd86518 Fixing shellcheck
* 91bdea2 Provide minimal resources to prevent accidental crashes due to resource exhaustion
* 1675997 Tornjak global image fix (#228)
* 5e827ee Add Tornjak Tests (#220)
* bdba97b Add empty directory to Tornjak to support npm cache (#224)
* da186c5 Split Tornjak Frontend into separate subchart (#179)
* 6d22126 Add Tornjak
* 2669d8b Add maintainer's handbook. (#265)
* 72596ae Skip tests for docs folders (#281)
* 7c71738 Bump test chart dependencies (#279)
* 05addae Add json to test path (#280)
* 8d9b734 Switch the spire tests to always run (#250)

Signed-off-by: Marco Franssen <marco.franssen@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

kubectl version mismatch
3 participants