From 29a35c529b085ce2ab94e1bcf736f99483962d6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 05:30:44 +0000 Subject: [PATCH 01/16] chore(deps): Bump helm.sh/helm/v3 in /e2e/testenv/infra Bumps [helm.sh/helm/v3](https://github.com/helm/helm) from 3.14.0 to 3.14.1. - [Release notes](https://github.com/helm/helm/releases) - [Commits](https://github.com/helm/helm/compare/v3.14.0...v3.14.1) --- updated-dependencies: - dependency-name: helm.sh/helm/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- e2e/testenv/infra/go.mod | 2 +- e2e/testenv/infra/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/e2e/testenv/infra/go.mod b/e2e/testenv/infra/go.mod index 1de48db57d..7a962939f7 100644 --- a/e2e/testenv/infra/go.mod +++ b/e2e/testenv/infra/go.mod @@ -10,7 +10,7 @@ require ( github.com/rancher/fleet v0.9.0-rc.4.0.20240208111910-ad2d2d829a12 github.com/spf13/cobra v1.8.0 golang.org/x/crypto v0.19.0 - helm.sh/helm/v3 v3.14.0 + helm.sh/helm/v3 v3.14.1 ) require ( diff --git a/e2e/testenv/infra/go.sum b/e2e/testenv/infra/go.sum index 9e42ae6281..860239ee11 100644 --- a/e2e/testenv/infra/go.sum +++ b/e2e/testenv/infra/go.sum @@ -276,8 +276,8 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= -helm.sh/helm/v3 v3.14.0 h1:TaZIH6uOchn7L27ptwnnuHJiFrT/BsD4dFdp/HLT2nM= -helm.sh/helm/v3 v3.14.0/go.mod h1:2itvvDv2WSZXTllknfQo6j7u3VVgMAvm8POCDgYH424= +helm.sh/helm/v3 v3.14.1 h1:4AwRLx+wfzlPtvrsbDmWP5PUokGmf9/nAmEdk21vae8= +helm.sh/helm/v3 v3.14.1/go.mod h1:2itvvDv2WSZXTllknfQo6j7u3VVgMAvm8POCDgYH424= k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8= k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38= oras.land/oras-go v1.2.4 h1:djpBY2/2Cs1PV87GSJlxv4voajVOMZxqqtq9AB8YNvY= From 600e0a1996bcafa44b49ef46e8a8ccddcb049e06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 05:35:45 +0000 Subject: [PATCH 02/16] chore(deps): Bump k8s.io/kubectl from 0.29.0 to 0.29.2 Bumps [k8s.io/kubectl](https://github.com/kubernetes/kubectl) from 0.29.0 to 0.29.2. - [Commits](https://github.com/kubernetes/kubectl/compare/v0.29.0...v0.29.2) --- updated-dependencies: - dependency-name: k8s.io/kubectl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 12 ++++++------ go.sum | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/go.mod b/go.mod index d87b5045bc..9266283a0c 100644 --- a/go.mod +++ b/go.mod @@ -45,14 +45,14 @@ require ( gopkg.in/yaml.v2 v2.4.0 gotest.tools v2.2.0+incompatible helm.sh/helm/v3 v3.14.0 - k8s.io/api v0.29.0 + k8s.io/api v0.29.2 k8s.io/apiextensions-apiserver v0.29.0 - k8s.io/apimachinery v0.29.0 - k8s.io/cli-runtime v0.29.0 - k8s.io/client-go v0.29.0 + k8s.io/apimachinery v0.29.2 + k8s.io/cli-runtime v0.29.2 + k8s.io/client-go v0.29.2 k8s.io/klog/v2 v2.110.1 k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 - k8s.io/kubectl v0.29.0 + k8s.io/kubectl v0.29.2 k8s.io/kubernetes v1.29.0 sigs.k8s.io/cli-utils v0.34.0 sigs.k8s.io/controller-runtime v0.17.0 @@ -240,7 +240,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/apiserver v0.29.0 // indirect k8s.io/code-generator v0.29.0 // indirect - k8s.io/component-base v0.29.0 // indirect + k8s.io/component-base v0.29.2 // indirect k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect oras.land/oras-go v1.2.4 // indirect diff --git a/go.sum b/go.sum index 3209384500..e7531624b8 100644 --- a/go.sum +++ b/go.sum @@ -1463,22 +1463,22 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.29.0 h1:NiCdQMY1QOp1H8lfRyeEf8eOwV6+0xA6XEE44ohDX2A= -k8s.io/api v0.29.0/go.mod h1:sdVmXoz2Bo/cb77Pxi71IPTSErEW32xa4aXwKH7gfBA= +k8s.io/api v0.29.2 h1:hBC7B9+MU+ptchxEqTNW2DkUosJpp1P+Wn6YncZ474A= +k8s.io/api v0.29.2/go.mod h1:sdIaaKuU7P44aoyyLlikSLayT6Vb7bvJNCX105xZXY0= k8s.io/apiextensions-apiserver v0.29.0 h1:0VuspFG7Hj+SxyF/Z/2T0uFbI5gb5LRgEyUVE3Q4lV0= k8s.io/apiextensions-apiserver v0.29.0/go.mod h1:TKmpy3bTS0mr9pylH0nOt/QzQRrW7/h7yLdRForMZwc= -k8s.io/apimachinery v0.29.0 h1:+ACVktwyicPz0oc6MTMLwa2Pw3ouLAfAon1wPLtG48o= -k8s.io/apimachinery v0.29.0/go.mod h1:eVBxQ/cwiJxH58eK/jd/vAk4mrxmVlnpBH5J2GbMeis= +k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= +k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= k8s.io/apiserver v0.29.0 h1:Y1xEMjJkP+BIi0GSEv1BBrf1jLU9UPfAnnGGbbDdp7o= k8s.io/apiserver v0.29.0/go.mod h1:31n78PsRKPmfpee7/l9NYEv67u6hOL6AfcE761HapDM= -k8s.io/cli-runtime v0.29.0 h1:q2kC3cex4rOBLfPOnMSzV2BIrrQlx97gxHJs21KxKS4= -k8s.io/cli-runtime v0.29.0/go.mod h1:VKudXp3X7wR45L+nER85YUzOQIru28HQpXr0mTdeCrk= -k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8= -k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38= +k8s.io/cli-runtime v0.29.2 h1:smfsOcT4QujeghsNjECKN3lwyX9AwcFU0nvJ7sFN3ro= +k8s.io/cli-runtime v0.29.2/go.mod h1:KLisYYfoqeNfO+MkTWvpqIyb1wpJmmFJhioA0xd4MW8= +k8s.io/client-go v0.29.2 h1:FEg85el1TeZp+/vYJM7hkDlSTFZ+c5nnK44DJ4FyoRg= +k8s.io/client-go v0.29.2/go.mod h1:knlvFZE58VpqbQpJNbCbctTVXcd35mMyAAwBdpt4jrA= k8s.io/code-generator v0.29.0 h1:2LQfayGDhaIlaamXjIjEQlCMy4JNCH9lrzas4DNW1GQ= k8s.io/code-generator v0.29.0/go.mod h1:5bqIZoCxs2zTRKMWNYqyQWW/bajc+ah4rh0tMY8zdGA= -k8s.io/component-base v0.29.0 h1:T7rjd5wvLnPBV1vC4zWd/iWRbV8Mdxs+nGaoaFzGw3s= -k8s.io/component-base v0.29.0/go.mod h1:sADonFTQ9Zc9yFLghpDpmNXEdHyQmFIGbiuZbqAXQ1M= +k8s.io/component-base v0.29.2 h1:lpiLyuvPA9yV1aQwGLENYyK7n/8t6l3nn3zAtFTJYe8= +k8s.io/component-base v0.29.2/go.mod h1:BfB3SLrefbZXiBfbM+2H1dlat21Uewg/5qtKOl8degM= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= @@ -1486,8 +1486,8 @@ k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= -k8s.io/kubectl v0.29.0 h1:Oqi48gXjikDhrBF67AYuZRTcJV4lg2l42GmvsP7FmYI= -k8s.io/kubectl v0.29.0/go.mod h1:0jMjGWIcMIQzmUaMgAzhSELv5WtHo2a8pq67DtviAJs= +k8s.io/kubectl v0.29.2 h1:uaDYaBhumvkwz0S2XHt36fK0v5IdNgL7HyUniwb2IUo= +k8s.io/kubectl v0.29.2/go.mod h1:BhizuYBGcKaHWyq+G7txGw2fXg576QbPrrnQdQDZgqI= k8s.io/kubernetes v1.29.0 h1:DOLN7g8+nnAYBi8JHoW0+/MCrZKDPIqAxzLCXDXd0cg= k8s.io/kubernetes v1.29.0/go.mod h1:9kztbUQf9stVDcIYXx+BX3nuGCsAQDsuClkGMpPs3pA= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= From d7bf3e348ff359c6e934ab5c7254f5bc4f22915d Mon Sep 17 00:00:00 2001 From: fleet-bot Date: Wed, 7 Feb 2024 01:37:55 +0000 Subject: [PATCH 03/16] chore: Update Golang version to 1.22.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made with ❤️️ by updatecli --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index d87b5045bc..7f686968ba 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/rancher/fleet -go 1.21 +go 1.22 replace ( github.com/rancher/fleet/pkg/apis => ./pkg/apis From 9c628a53387a17c92148ab2fd44d53f910d0bb7c Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Wed, 7 Feb 2024 15:54:19 +0100 Subject: [PATCH 04/16] Bump golang in Dapper environment to version 1.22 --- Dockerfile.dapper | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.dapper b/Dockerfile.dapper index 29fc1dc064..96e9f91223 100644 --- a/Dockerfile.dapper +++ b/Dockerfile.dapper @@ -1,4 +1,4 @@ -FROM registry.suse.com/bci/golang:1.21 +FROM registry.suse.com/bci/golang:1.22 ARG DAPPER_HOST_ARCH ENV ARCH $DAPPER_HOST_ARCH From e3627b7335472189ab0c8160335184d370d955f7 Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Wed, 7 Feb 2024 15:54:59 +0100 Subject: [PATCH 05/16] Require Go 1.22 in our api go.mod and run `go mod tidy`. --- pkg/apis/go.mod | 2 +- pkg/apis/go.sum | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/pkg/apis/go.mod b/pkg/apis/go.mod index 778f19e7d7..eccf74e74c 100644 --- a/pkg/apis/go.mod +++ b/pkg/apis/go.mod @@ -1,6 +1,6 @@ module github.com/rancher/fleet/pkg/apis -go 1.19 +go 1.22 require ( github.com/rancher/wrangler/v2 v2.1.2 diff --git a/pkg/apis/go.sum b/pkg/apis/go.sum index ecc3e9756c..5c228b986e 100644 --- a/pkg/apis/go.sum +++ b/pkg/apis/go.sum @@ -5,19 +5,24 @@ github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -25,16 +30,21 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rancher/wrangler/v2 v2.1.2 h1:XAiReB3caOAepsTHs12AwKVv4vBJkjLosZPXbbj/85E= github.com/rancher/wrangler/v2 v2.1.2/go.mod h1:LgpEqT2ATL0MevUsL5rohrAEU419MIPeswsMNHw35d4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -55,6 +65,7 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= @@ -64,18 +75,21 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= +golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY= k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0= k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= @@ -93,3 +107,4 @@ sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h6 sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From 7dd24d374dc5173bc2ebed396859cd15223c2a89 Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Wed, 7 Feb 2024 15:55:27 +0100 Subject: [PATCH 06/16] Require Go 1.22 in our testenv go.mod --- e2e/testenv/infra/go.mod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/testenv/infra/go.mod b/e2e/testenv/infra/go.mod index 1de48db57d..d5bb77edb8 100644 --- a/e2e/testenv/infra/go.mod +++ b/e2e/testenv/infra/go.mod @@ -1,8 +1,8 @@ module github.com/rancher/fleet/e2e/testenv/infra -go 1.21 +go 1.22 -toolchain go1.21.0 +toolchain go1.22.0 replace k8s.io/client-go => k8s.io/client-go v0.29.0 From 3f5ae26ee787151221a3c823f26d7568f814d8c6 Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Wed, 7 Feb 2024 16:26:14 +0100 Subject: [PATCH 07/16] Bump release script Go version to 1.22 --- .github/workflows/release-against-rancher.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-against-rancher.yml b/.github/workflows/release-against-rancher.yml index 88f6b4e511..4ad0e61c2f 100644 --- a/.github/workflows/release-against-rancher.yml +++ b/.github/workflows/release-against-rancher.yml @@ -26,7 +26,7 @@ on: env: GOARCH: amd64 CGO_ENABLED: 0 - SETUP_GO_VERSION: '1.21.*' + SETUP_GO_VERSION: '1.22.*' jobs: create-rancher-pr: From 05e689d3c1d3a17457dac87ff14db40e8051e696 Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Wed, 7 Feb 2024 16:40:53 +0100 Subject: [PATCH 08/16] Bump golangci-lint to 1.56 to support Go 1.22 --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 836d8c28cc..d15de97b45 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -30,7 +30,7 @@ jobs: uses: golangci/golangci-lint-action@v3.7.0 with: # Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version. - version: v1.55 + version: v1.56 args: --timeout=10m --config=.golangci.json From 77faa961fba1f90bf27714cd59ecc7af04498fb4 Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Tue, 20 Feb 2024 15:06:12 +0100 Subject: [PATCH 09/16] Bump controller-gen to v0.14.0 to support Go 1.22 This change has an influence on the generated descriptions, most likely because of https://github.com/kubernetes-sigs/controller-tools/pull/870 --- charts/fleet-crd/templates/crds.yaml | 3533 +++++++++++------ go.mod | 6 +- go.sum | 12 +- .../v1alpha1/zz_generated.deepcopy.go | 1 - 4 files changed, 2334 insertions(+), 1218 deletions(-) diff --git a/charts/fleet-crd/templates/crds.yaml b/charts/fleet-crd/templates/crds.yaml index 3bf1c46d20..6cff07c37b 100644 --- a/charts/fleet-crd/templates/crds.yaml +++ b/charts/fleet-crd/templates/crds.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: bundledeployments.fleet.cattle.io spec: group: fleet.cattle.io @@ -27,23 +27,45 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: BundleDeployment is used internally by Fleet and should not - be used directly. When a Bundle is deployed to a cluster an instance of - a Bundle is called a BundleDeployment. A BundleDeployment represents the - state of that Bundle on a specific cluster with its cluster-specific customizations. - The Fleet agent is only aware of BundleDeployment resources that are created - for the cluster the agent is managing. + description: 'BundleDeployment is used internally by Fleet and should not + be used directly. + + When a Bundle is deployed to a cluster an instance of a Bundle is called + a + + BundleDeployment. A BundleDeployment represents the state of that Bundle + on + + a specific cluster with its cluster-specific customizations. The Fleet + agent + + is only aware of BundleDeployment resources that are created for the cluster + + the agent is managing.' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -83,26 +105,32 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector + description: 'A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is + replaced during a strategic + + merge patch.' items: type: string type: array @@ -114,11 +142,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains only + "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -151,9 +182,13 @@ spec: type: boolean type: object defaultNamespace: - description: DefaultNamespace is the namespace to use for resources - that do not specify a namespace. This field is not used to - enforce or lock down the deployment to a specific namespace. + description: 'DefaultNamespace is the namespace to use for resources + that do not + + specify a namespace. This field is not used to enforce or + lock down + + the deployment to a specific namespace.' nullable: true type: string deleteCRDResources: @@ -237,8 +272,10 @@ spec: performing an upgrade type: boolean chart: - description: Chart can refer to any go-getter URL or OCI - registry based helm chart URL. The chart will be downloaded. + description: 'Chart can refer to any go-getter URL or OCI + registry based helm + + chart URL. The chart will be downloaded.' nullable: true type: string disableDNS: @@ -262,9 +299,13 @@ spec: saved per release by Helm. type: integer releaseName: - description: ReleaseName sets a custom release name to deploy - the chart as. If not specified a release name will be - generated by combining the invoking GitRepo.name + GitRepo.path. + description: 'ReleaseName sets a custom release name to + deploy the chart as. If + + not specified a release name will be generated by combining + the + + invoking GitRepo.name + GitRepo.path.' maxLength: 53 nullable: true pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -287,8 +328,10 @@ spec: operations. type: integer values: - description: Values passed to Helm. It is possible to specify - the keys and values as go template strings. + description: 'Values passed to Helm. It is possible to specify + the keys and values + + as go template strings.' nullable: true type: object x-kubernetes-preserve-unknown-fields: true @@ -348,9 +391,13 @@ spec: nullable: true type: string waitForJobs: - description: WaitForJobs if set and timeoutSeconds provided, - will wait until all Jobs have been completed before marking - the GitRepo as ready. It will wait for as long as timeoutSeconds + description: 'WaitForJobs if set and timeoutSeconds provided, + will wait until all + + Jobs have been completed before marking the GitRepo as + ready. It + + will wait for as long as timeoutSeconds' type: boolean type: object ignore: @@ -372,21 +419,27 @@ spec: resources when removing the bundle type: boolean kustomize: - description: Kustomize options for the deployment, like the - dir containing the kustomization.yaml file. + description: 'Kustomize options for the deployment, like the + dir containing the + + kustomization.yaml file.' nullable: true properties: dir: - description: Dir points to a custom folder for kustomize - resources. This folder must contain a kustomization.yaml - file. + description: 'Dir points to a custom folder for kustomize + resources. This folder must contain + + a kustomization.yaml file.' nullable: true type: string type: object namespace: - description: TargetNamespace if present will assign all resource - to this namespace and if any cluster scoped resource exists - the deployment will fail. + description: 'TargetNamespace if present will assign all resource + to this + + namespace and if any cluster scoped resource exists the deployment + + will fail.' nullable: true type: string namespaceAnnotations: @@ -409,17 +462,27 @@ spec: nullable: true type: string yaml: - description: YAML options, if using raw YAML these are names - that map to overlays/{name} files that will be used to replace - or patch a resource. + description: 'YAML options, if using raw YAML these are names + that map to + + overlays/{name} files that will be used to replace or patch + a resource.' nullable: true properties: overlays: - description: Overlays is a list of names that maps to folders - in "overlays/". If you wish to customize the file ./subdir/resource.yaml - then a file ./overlays/myoverlay/subdir/resource.yaml - will replace the base file. A file named ./overlays/myoverlay/subdir/resource_patch.yaml - will patch the base file. + description: 'Overlays is a list of names that maps to folders + in "overlays/". + + If you wish to customize the file ./subdir/resource.yaml + then a file + + ./overlays/myoverlay/subdir/resource.yaml will replace + the base + + file. + + A file named ./overlays/myoverlay/subdir/resource_patch.yaml + will patch the base file.' items: type: string nullable: true @@ -427,17 +490,22 @@ spec: type: object type: object paused: - description: Paused if set to true, will stop any BundleDeployments - from being updated. If true, BundleDeployments will be marked - as out of sync when changes are detected. + description: 'Paused if set to true, will stop any BundleDeployments + from being + + updated. If true, BundleDeployments will be marked as out of sync + + when changes are detected.' type: boolean stagedDeploymentID: description: StagedDeploymentID is the ID of the staged deployment. nullable: true type: string stagedOptions: - description: StagedOptions are the deployment options, that are - staged for the next deployment. + description: 'StagedOptions are the deployment options, that are + staged for + + the next deployment.' properties: correctDrift: description: CorrectDrift specifies how drift correction should @@ -457,9 +525,13 @@ spec: type: boolean type: object defaultNamespace: - description: DefaultNamespace is the namespace to use for resources - that do not specify a namespace. This field is not used to - enforce or lock down the deployment to a specific namespace. + description: 'DefaultNamespace is the namespace to use for resources + that do not + + specify a namespace. This field is not used to enforce or + lock down + + the deployment to a specific namespace.' nullable: true type: string deleteCRDResources: @@ -543,8 +615,10 @@ spec: performing an upgrade type: boolean chart: - description: Chart can refer to any go-getter URL or OCI - registry based helm chart URL. The chart will be downloaded. + description: 'Chart can refer to any go-getter URL or OCI + registry based helm + + chart URL. The chart will be downloaded.' nullable: true type: string disableDNS: @@ -568,9 +642,13 @@ spec: saved per release by Helm. type: integer releaseName: - description: ReleaseName sets a custom release name to deploy - the chart as. If not specified a release name will be - generated by combining the invoking GitRepo.name + GitRepo.path. + description: 'ReleaseName sets a custom release name to + deploy the chart as. If + + not specified a release name will be generated by combining + the + + invoking GitRepo.name + GitRepo.path.' maxLength: 53 nullable: true pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -593,8 +671,10 @@ spec: operations. type: integer values: - description: Values passed to Helm. It is possible to specify - the keys and values as go template strings. + description: 'Values passed to Helm. It is possible to specify + the keys and values + + as go template strings.' nullable: true type: object x-kubernetes-preserve-unknown-fields: true @@ -654,9 +734,13 @@ spec: nullable: true type: string waitForJobs: - description: WaitForJobs if set and timeoutSeconds provided, - will wait until all Jobs have been completed before marking - the GitRepo as ready. It will wait for as long as timeoutSeconds + description: 'WaitForJobs if set and timeoutSeconds provided, + will wait until all + + Jobs have been completed before marking the GitRepo as + ready. It + + will wait for as long as timeoutSeconds' type: boolean type: object ignore: @@ -678,21 +762,27 @@ spec: resources when removing the bundle type: boolean kustomize: - description: Kustomize options for the deployment, like the - dir containing the kustomization.yaml file. + description: 'Kustomize options for the deployment, like the + dir containing the + + kustomization.yaml file.' nullable: true properties: dir: - description: Dir points to a custom folder for kustomize - resources. This folder must contain a kustomization.yaml - file. + description: 'Dir points to a custom folder for kustomize + resources. This folder must contain + + a kustomization.yaml file.' nullable: true type: string type: object namespace: - description: TargetNamespace if present will assign all resource - to this namespace and if any cluster scoped resource exists - the deployment will fail. + description: 'TargetNamespace if present will assign all resource + to this + + namespace and if any cluster scoped resource exists the deployment + + will fail.' nullable: true type: string namespaceAnnotations: @@ -715,17 +805,27 @@ spec: nullable: true type: string yaml: - description: YAML options, if using raw YAML these are names - that map to overlays/{name} files that will be used to replace - or patch a resource. + description: 'YAML options, if using raw YAML these are names + that map to + + overlays/{name} files that will be used to replace or patch + a resource.' nullable: true properties: overlays: - description: Overlays is a list of names that maps to folders - in "overlays/". If you wish to customize the file ./subdir/resource.yaml - then a file ./overlays/myoverlay/subdir/resource.yaml - will replace the base file. A file named ./overlays/myoverlay/subdir/resource_patch.yaml - will patch the base file. + description: 'Overlays is a list of names that maps to folders + in "overlays/". + + If you wish to customize the file ./subdir/resource.yaml + then a file + + ./overlays/myoverlay/subdir/resource.yaml will replace + the base + + file. + + A file named ./overlays/myoverlay/subdir/resource_patch.yaml + will patch the base file.' items: type: string nullable: true @@ -783,9 +883,11 @@ spec: type: object modifiedStatus: items: - description: ModifiedStatus is used to report the status of a - resource that is modified. It indicates if the modification - was a create, a delete or a patch. + description: 'ModifiedStatus is used to report the status of a + resource that is modified. + + It indicates if the modification was a create, a delete or a + patch.' properties: apiVersion: nullable: true @@ -842,10 +944,14 @@ spec: type: boolean type: object uid: - description: UID is a type that holds unique ID values, including - UUIDs. Because we don't ONLY use UUIDs, this is an alias - to string. Being a type captures intent and helps make - sure that UIDs and names do not get conflated. + description: 'UID is a type that holds unique ID values, including + UUIDs. Because we + + don''t ONLY use UUIDs, this is an alias to string. Being + a type captures + + intent and helps make sure that UIDs and names do not get + conflated.' nullable: true type: string type: object @@ -857,8 +963,10 @@ spec: nullable: true type: string resources: - description: Resources lists the metadata of resources that were - deployed according to the helm release history. + description: 'Resources lists the metadata of resources that were + deployed + + according to the helm release history.' items: description: BundleDeploymentResource contains the metadata of a deployed resource. @@ -897,7 +1005,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: bundlenamespacemappings.fleet.cattle.io spec: group: fleet.cattle.io @@ -915,38 +1023,55 @@ spec: properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string bundleSelector: - description: A label selector is a label query over a set of resources. - The result of matchLabels and matchExpressions are ANDed. An empty - label selector matches all objects. A null label selector matches - no objects. + description: 'A label selector is a label query over a set of resources. + The result of matchLabels and + + matchExpressions are ANDed. An empty label selector matches all objects. + A null + + label selector matches no objects.' nullable: true properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that contains - values, a key, and an operator that relates the key and values. + description: 'A label selector requirement is a selector that + contains values, a key, and an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship to a - set of values. Valid operators are In, NotIn, Exists and - DoesNotExist. + description: 'operator represents a key''s relationship to + a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. If the operator - is In or NotIn, the values array must be non-empty. If the - operator is Exists or DoesNotExist, the values array must - be empty. This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. If the + operator is In or NotIn, + + the values array must be non-empty. If the operator is Exists + or DoesNotExist, + + the values array must be empty. This array is replaced during + a strategic + + merge patch.' items: type: string type: array @@ -958,51 +1083,72 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. A single - {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator is - "In", and the values array contains only "value". The requirements - are ANDed. + description: 'matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, whose key + field is "key", the + + operator is "In", and the values array contains only "value". + The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object namespaceSelector: - description: A label selector is a label query over a set of resources. - The result of matchLabels and matchExpressions are ANDed. An empty - label selector matches all objects. A null label selector matches - no objects. + description: 'A label selector is a label query over a set of resources. + The result of matchLabels and + + matchExpressions are ANDed. An empty label selector matches all objects. + A null + + label selector matches no objects.' nullable: true properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that contains - values, a key, and an operator that relates the key and values. + description: 'A label selector requirement is a selector that + contains values, a key, and an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship to a - set of values. Valid operators are In, NotIn, Exists and - DoesNotExist. + description: 'operator represents a key''s relationship to + a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. If the operator - is In or NotIn, the values array must be non-empty. If the - operator is Exists or DoesNotExist, the values array must - be empty. This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. If the + operator is In or NotIn, + + the values array must be non-empty. If the operator is Exists + or DoesNotExist, + + the values array must be empty. This array is replaced during + a strategic + + merge patch.' items: type: string type: array @@ -1014,11 +1160,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. A single - {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator is - "In", and the values array contains only "value". The requirements - are ANDed. + description: 'matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, whose key + field is "key", the + + operator is "In", and the values array contains only "value". + The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -1032,7 +1181,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: bundles.fleet.cattle.io spec: group: fleet.cattle.io @@ -1053,26 +1202,52 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: "Bundle contains the resources of an application and its deployment\ - \ options. It will be deployed as a Helm chart to target clusters. \n\ - \ When a GitRepo is scanned it will produce one or more bundles. Bundles\ - \ are a collection of resources that get deployed to one or more cluster(s).\ - \ Bundle is the fundamental deployment unit used in Fleet. The contents\ - \ of a Bundle may be Kubernetes manifests, Kustomize configuration, or\ - \ Helm charts. Regardless of the source the contents are dynamically rendered\ - \ into a Helm chart by the agent and installed into the downstream cluster\ - \ as a Helm release." + description: 'Bundle contains the resources of an application and its deployment + options. + + It will be deployed as a Helm chart to target clusters. + + + + When a GitRepo is scanned it will produce one or more bundles. Bundles + are + + a collection of resources that get deployed to one or more cluster(s). + Bundle is the + + fundamental deployment unit used in Fleet. The contents of a Bundle may + be + + Kubernetes manifests, Kustomize configuration, or Helm charts. Regardless + + of the source the contents are dynamically rendered into a Helm chart + by + + the agent and installed into the downstream cluster as a Helm release.' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -1096,9 +1271,13 @@ spec: type: boolean type: object defaultNamespace: - description: DefaultNamespace is the namespace to use for resources - that do not specify a namespace. This field is not used to enforce - or lock down the deployment to a specific namespace. + description: 'DefaultNamespace is the namespace to use for resources + that do not + + specify a namespace. This field is not used to enforce or lock + down + + the deployment to a specific namespace.' nullable: true type: string deleteCRDResources: @@ -1122,26 +1301,32 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector + description: 'A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is + replaced during a strategic + + merge patch.' items: type: string type: array @@ -1153,11 +1338,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains only + "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -1239,8 +1427,10 @@ spec: an upgrade type: boolean chart: - description: Chart can refer to any go-getter URL or OCI registry - based helm chart URL. The chart will be downloaded. + description: 'Chart can refer to any go-getter URL or OCI registry + based helm + + chart URL. The chart will be downloaded.' nullable: true type: string disableDNS: @@ -1264,9 +1454,13 @@ spec: saved per release by Helm. type: integer releaseName: - description: ReleaseName sets a custom release name to deploy - the chart as. If not specified a release name will be generated - by combining the invoking GitRepo.name + GitRepo.path. + description: 'ReleaseName sets a custom release name to deploy + the chart as. If + + not specified a release name will be generated by combining + the + + invoking GitRepo.name + GitRepo.path.' maxLength: 53 nullable: true pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -1288,8 +1482,10 @@ spec: description: TimeoutSeconds is the time to wait for Helm operations. type: integer values: - description: Values passed to Helm. It is possible to specify - the keys and values as go template strings. + description: 'Values passed to Helm. It is possible to specify + the keys and values + + as go template strings.' nullable: true type: object x-kubernetes-preserve-unknown-fields: true @@ -1347,9 +1543,13 @@ spec: nullable: true type: string waitForJobs: - description: WaitForJobs if set and timeoutSeconds provided, - will wait until all Jobs have been completed before marking - the GitRepo as ready. It will wait for as long as timeoutSeconds + description: 'WaitForJobs if set and timeoutSeconds provided, + will wait until all + + Jobs have been completed before marking the GitRepo as ready. + It + + will wait for as long as timeoutSeconds' type: boolean type: object ignore: @@ -1371,20 +1571,27 @@ spec: when removing the bundle type: boolean kustomize: - description: Kustomize options for the deployment, like the dir - containing the kustomization.yaml file. + description: 'Kustomize options for the deployment, like the dir + containing the + + kustomization.yaml file.' nullable: true properties: dir: - description: Dir points to a custom folder for kustomize resources. - This folder must contain a kustomization.yaml file. + description: 'Dir points to a custom folder for kustomize resources. + This folder must contain + + a kustomization.yaml file.' nullable: true type: string type: object namespace: - description: TargetNamespace if present will assign all resource - to this namespace and if any cluster scoped resource exists the - deployment will fail. + description: 'TargetNamespace if present will assign all resource + to this + + namespace and if any cluster scoped resource exists the deployment + + will fail.' nullable: true type: string namespaceAnnotations: @@ -1406,9 +1613,10 @@ spec: from being updated. It will be marked as out of sync. type: boolean resources: - description: Resources contains the resources that were read from - the bundle's path. This includes the content of downloaded helm - charts. + description: 'Resources contains the resources that were read from + the bundle''s + + path. This includes the content of downloaded helm charts.' items: description: BundleResource represents the content of a single resource from the bundle, like a YAML manifest. @@ -1426,8 +1634,10 @@ spec: type: object type: array rolloutStrategy: - description: RolloutStrategy controls the rollout of bundles, by - defining partitions, canaries and percentages for cluster availability. + description: 'RolloutStrategy controls the rollout of bundles, by + defining + + partitions, canaries and percentages for cluster availability.' nullable: true properties: autoPartitionSize: @@ -1435,8 +1645,11 @@ spec: - type: integer - type: string description: 'A number or percentage of how to automatically - partition clusters if no specific partitioning strategy is - configured. default: 25%' + partition clusters if no + + specific partitioning strategy is configured. + + default: 25%' nullable: true x-kubernetes-int-or-string: true maxUnavailable: @@ -1444,11 +1657,18 @@ spec: - type: integer - type: string description: 'A number or percentage of clusters that can be - unavailable during an update of a bundle. This follows the - same basic approach as a deployment rollout strategy. Once - the number of clusters meets unavailable state update will - be paused. Default value is 100% which doesn''t take effect - on update. default: 100%' + unavailable during an update + + of a bundle. This follows the same basic approach as a deployment + rollout + + strategy. Once the number of clusters meets unavailable state + update will be + + paused. Default value is 100% which doesn''t take effect on + update. + + default: 100%' nullable: true x-kubernetes-int-or-string: true maxUnavailablePartitions: @@ -1456,14 +1676,21 @@ spec: - type: integer - type: string description: 'A number or percentage of cluster partitions that - can be unavailable during an update of a bundle. default: - 0' + can be unavailable during + + an update of a bundle. + + default: 0' nullable: true x-kubernetes-int-or-string: true partitions: - description: A list of definitions of partitions. If any target - clusters do not match the configuration they are added to - partitions at the end following the autoPartitionSize. + description: 'A list of definitions of partitions. If any target + clusters do not match + + the configuration they are added to partitions at the end + following the + + autoPartitionSize.' items: description: Partition defines a separate rollout strategy for a set of clusters. @@ -1479,26 +1706,34 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. + description: 'A label selector requirement is a + selector that contains values, a key, and an operator + that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and + DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator is - Exists or DoesNotExist, the values array must - be empty. This array is replaced during a - strategic merge patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the + operator is Exists or DoesNotExist, + + the values array must be empty. This array + is replaced during a strategic + + merge patch.' items: type: string type: array @@ -1510,11 +1745,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -1530,26 +1768,34 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. + description: 'A label selector requirement is a + selector that contains values, a key, and an operator + that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and + DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator is - Exists or DoesNotExist, the values array must - be empty. This array is replaced during a - strategic merge patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the + operator is Exists or DoesNotExist, + + the values array must be empty. This array + is replaced during a strategic + + merge patch.' items: type: string type: array @@ -1561,11 +1807,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} + pairs. A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -1574,8 +1823,11 @@ spec: - type: integer - type: string description: 'A number or percentage of clusters that - can be unavailable in this partition before this partition - is treated as done. default: 10%' + can be unavailable in this + + partition before this partition is treated as done. + + default: 10%' x-kubernetes-int-or-string: true name: description: A user-friendly name given to the partition @@ -1593,45 +1845,57 @@ spec: description: TargetRestrictions is an allow list, which controls if a bundledeployment is created for a target. items: - description: BundleTargetRestriction is used internally by Fleet - and should not be modified. It acts as an allow list, to prevent - the creation of BundleDeployments from Targets created by TargetCustomizations - in fleet.yaml. + description: 'BundleTargetRestriction is used internally by Fleet + and should not be modified. + + It acts as an allow list, to prevent the creation of BundleDeployments + from + + Targets created by TargetCustomizations in fleet.yaml.' properties: clusterGroup: nullable: true type: string clusterGroupSelector: - description: A label selector is a label query over a set - of resources. The result of matchLabels and matchExpressions - are ANDed. An empty label selector matches all objects. - A null label selector matches no objects. + description: 'A label selector is a label query over a set + of resources. The result of matchLabels and + + matchExpressions are ANDed. An empty label selector matches + all objects. A null + + label selector matches no objects.' nullable: true properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector + description: 'A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is + replaced during a strategic + + merge patch.' items: type: string type: array @@ -1643,11 +1907,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains only + "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -1655,36 +1922,45 @@ spec: nullable: true type: string clusterSelector: - description: A label selector is a label query over a set - of resources. The result of matchLabels and matchExpressions - are ANDed. An empty label selector matches all objects. - A null label selector matches no objects. + description: 'A label selector is a label query over a set + of resources. The result of matchLabels and + + matchExpressions are ANDed. An empty label selector matches + all objects. A null + + label selector matches no objects.' nullable: true properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector + description: 'A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is + replaced during a strategic + + merge patch.' items: type: string type: array @@ -1696,11 +1972,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains only + "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -1710,13 +1989,15 @@ spec: type: object type: array targets: - description: Targets refer to the clusters which will be deployed - to. Targets are evaluated in order and the first one to match - is used. + description: 'Targets refer to the clusters which will be deployed + to. + + Targets are evaluated in order and the first one to match is used.' items: - description: BundleTarget declares clusters to deploy to. Fleet - will merge the BundleDeploymentOptions from customizations into - this struct. + description: 'BundleTarget declares clusters to deploy to. Fleet + will merge the + + BundleDeploymentOptions from customizations into this struct.' properties: clusterGroup: description: ClusterGroup to match a specific cluster group @@ -1732,26 +2013,32 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector + description: 'A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is + replaced during a strategic + + merge patch.' items: type: string type: array @@ -1763,51 +2050,70 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains only + "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic clusterName: - description: ClusterName to match a specific cluster by name - that will be selected + description: 'ClusterName to match a specific cluster by name + that will be + + selected' nullable: true type: string clusterSelector: - description: ClusterSelector is a selector to match clusters. - The structure is the standard metav1.LabelSelector format. - If clusterGroupSelector or clusterGroup is specified, clusterSelector - will be used only to further refine the selection after - clusterGroupSelector and clusterGroup is evaluated. + description: 'ClusterSelector is a selector to match clusters. + The structure is + + the standard metav1.LabelSelector format. If clusterGroupSelector + or + + clusterGroup is specified, clusterSelector will be used + only to + + further refine the selection after clusterGroupSelector + and + + clusterGroup is evaluated.' nullable: true properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector + description: 'A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is + replaced during a strategic + + merge patch.' items: type: string type: array @@ -1819,11 +2125,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains only + "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -1845,10 +2154,13 @@ spec: type: boolean type: object defaultNamespace: - description: DefaultNamespace is the namespace to use for - resources that do not specify a namespace. This field is - not used to enforce or lock down the deployment to a specific - namespace. + description: 'DefaultNamespace is the namespace to use for + resources that do not + + specify a namespace. This field is not used to enforce or + lock down + + the deployment to a specific namespace.' nullable: true type: string deleteCRDResources: @@ -1938,8 +2250,10 @@ spec: performing an upgrade type: boolean chart: - description: Chart can refer to any go-getter URL or OCI - registry based helm chart URL. The chart will be downloaded. + description: 'Chart can refer to any go-getter URL or + OCI registry based helm + + chart URL. The chart will be downloaded.' nullable: true type: string disableDNS: @@ -1963,10 +2277,13 @@ spec: saved per release by Helm. type: integer releaseName: - description: ReleaseName sets a custom release name to - deploy the chart as. If not specified a release name - will be generated by combining the invoking GitRepo.name - + GitRepo.path. + description: 'ReleaseName sets a custom release name to + deploy the chart as. If + + not specified a release name will be generated by combining + the + + invoking GitRepo.name + GitRepo.path.' maxLength: 53 nullable: true pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ @@ -1989,8 +2306,10 @@ spec: operations. type: integer values: - description: Values passed to Helm. It is possible to - specify the keys and values as go template strings. + description: 'Values passed to Helm. It is possible to + specify the keys and values + + as go template strings.' nullable: true type: object x-kubernetes-preserve-unknown-fields: true @@ -2050,10 +2369,13 @@ spec: nullable: true type: string waitForJobs: - description: WaitForJobs if set and timeoutSeconds provided, - will wait until all Jobs have been completed before - marking the GitRepo as ready. It will wait for as long - as timeoutSeconds + description: 'WaitForJobs if set and timeoutSeconds provided, + will wait until all + + Jobs have been completed before marking the GitRepo + as ready. It + + will wait for as long as timeoutSeconds' type: boolean type: object ignore: @@ -2075,26 +2397,35 @@ spec: resources when removing the bundle type: boolean kustomize: - description: Kustomize options for the deployment, like the - dir containing the kustomization.yaml file. + description: 'Kustomize options for the deployment, like the + dir containing the + + kustomization.yaml file.' nullable: true properties: dir: - description: Dir points to a custom folder for kustomize - resources. This folder must contain a kustomization.yaml - file. + description: 'Dir points to a custom folder for kustomize + resources. This folder must contain + + a kustomization.yaml file.' nullable: true type: string type: object name: - description: Name of target. This value is largely for display - and logging. If not specified a default name of the format - "target000" will be used + description: 'Name of target. This value is largely for display + and logging. If + + not specified a default name of the format "target000" will + be used' type: string namespace: - description: TargetNamespace if present will assign all resource - to this namespace and if any cluster scoped resource exists - the deployment will fail. + description: 'TargetNamespace if present will assign all resource + to this + + namespace and if any cluster scoped resource exists the + deployment + + will fail.' nullable: true type: string namespaceAnnotations: @@ -2117,17 +2448,27 @@ spec: nullable: true type: string yaml: - description: YAML options, if using raw YAML these are names - that map to overlays/{name} files that will be used to replace - or patch a resource. + description: 'YAML options, if using raw YAML these are names + that map to + + overlays/{name} files that will be used to replace or patch + a resource.' nullable: true properties: overlays: - description: Overlays is a list of names that maps to - folders in "overlays/". If you wish to customize the - file ./subdir/resource.yaml then a file ./overlays/myoverlay/subdir/resource.yaml - will replace the base file. A file named ./overlays/myoverlay/subdir/resource_patch.yaml - will patch the base file. + description: 'Overlays is a list of names that maps to + folders in "overlays/". + + If you wish to customize the file ./subdir/resource.yaml + then a file + + ./overlays/myoverlay/subdir/resource.yaml will replace + the base + + file. + + A file named ./overlays/myoverlay/subdir/resource_patch.yaml + will patch the base file.' items: type: string nullable: true @@ -2136,17 +2477,27 @@ spec: type: object type: array yaml: - description: YAML options, if using raw YAML these are names that - map to overlays/{name} files that will be used to replace or patch - a resource. + description: 'YAML options, if using raw YAML these are names that + map to + + overlays/{name} files that will be used to replace or patch a + resource.' nullable: true properties: overlays: - description: Overlays is a list of names that maps to folders - in "overlays/". If you wish to customize the file ./subdir/resource.yaml - then a file ./overlays/myoverlay/subdir/resource.yaml will - replace the base file. A file named ./overlays/myoverlay/subdir/resource_patch.yaml - will patch the base file. + description: 'Overlays is a list of names that maps to folders + in "overlays/". + + If you wish to customize the file ./subdir/resource.yaml then + a file + + ./overlays/myoverlay/subdir/resource.yaml will replace the + base + + file. + + A file named ./overlays/myoverlay/subdir/resource_patch.yaml + will patch the base file.' items: type: string nullable: true @@ -2156,8 +2507,10 @@ spec: status: properties: conditions: - description: Conditions is a list of Wrangler conditions that describe - the state of the bundle. + description: 'Conditions is a list of Wrangler conditions that describe + the state + + of the bundle.' items: properties: lastTransitionTime: @@ -2187,13 +2540,19 @@ spec: type: object type: array display: - description: Display contains the number of ready, desiredready - clusters and a summary state for the bundle's resources. + description: 'Display contains the number of ready, desiredready + clusters and a + + summary state for the bundle''s resources.' properties: readyClusters: - description: ReadyClusters is a string in the form "%d/%d", - that describes the number of clusters that are ready vs. the - number of clusters desired to be ready. + description: 'ReadyClusters is a string in the form "%d/%d", + that describes the + + number of clusters that are ready vs. the number of clusters + desired + + to be ready.' nullable: true type: string state: @@ -2203,21 +2562,31 @@ spec: type: string type: object maxNew: - description: MaxNew is always 50. A bundle change can only stage - 50 bundledeployments at a time. + description: 'MaxNew is always 50. A bundle change can only stage + 50 + + bundledeployments at a time.' type: integer maxUnavailable: - description: MaxUnavailable is the maximum number of unavailable - deployments. See rollout configuration. + description: 'MaxUnavailable is the maximum number of unavailable + deployments. See + + rollout configuration.' type: integer maxUnavailablePartitions: - description: MaxUnavailablePartitions is the maximum number of unavailable + description: 'MaxUnavailablePartitions is the maximum number of + unavailable + partitions. The rollout configuration defines a maximum number - or percentage of unavailable partitions. + or + + percentage of unavailable partitions.' type: integer newlyCreated: - description: NewlyCreated is the number of bundle deployments that - have been created, not updated. + description: 'NewlyCreated is the number of bundle deployments that + have been created, + + not updated.' type: integer observedGeneration: description: ObservedGeneration is the current generation of the @@ -2246,29 +2615,42 @@ spec: calculated over its non-ready resources. properties: desiredReady: - description: DesiredReady is the number of bundle deployments - that should be ready. + description: 'DesiredReady is the number of bundle deployments + that should be + + ready.' type: integer errApplied: - description: ErrApplied is the number of bundle deployments - that have been synced from the Fleet controller and - the downstream cluster, but with some errors when deploying - the bundle. + description: 'ErrApplied is the number of bundle deployments + that have been synced + + from the Fleet controller and the downstream cluster, + but with some + + errors when deploying the bundle.' type: integer modified: - description: Modified is the number of bundle deployments - that have been deployed and for which all resources - are ready, but where some changes from the Git repository - have not yet been synced. + description: 'Modified is the number of bundle deployments + that have been deployed + + and for which all resources are ready, but where some + changes from the + + Git repository have not yet been synced.' type: integer nonReadyResources: - description: NonReadyClusters is a list of states, which - is filled for a bundle that is not ready. + description: 'NonReadyClusters is a list of states, which + is filled for a bundle + + that is not ready.' items: - description: NonReadyResource contains information about - a bundle that is not ready for a given state like - "ErrApplied". It contains a list of non-ready or modified - resources and their states. + description: 'NonReadyResource contains information + about a bundle that is not ready for a + + given state like "ErrApplied". It contains a list + of non-ready or modified + + resources and their states.' properties: bundleState: description: State is the state of the resource, @@ -2284,10 +2666,11 @@ spec: description: ModifiedStatus lists the state for each modified resource. items: - description: ModifiedStatus is used to report - the status of a resource that is modified. It - indicates if the modification was a create, - a delete or a patch. + description: 'ModifiedStatus is used to report + the status of a resource that is modified. + + It indicates if the modification was a create, + a delete or a patch.' properties: apiVersion: nullable: true @@ -2348,12 +2731,14 @@ spec: type: boolean type: object uid: - description: UID is a type that holds unique + description: 'UID is a type that holds unique ID values, including UUIDs. Because we - don't ONLY use UUIDs, this is an alias to - string. Being a type captures intent and - helps make sure that UIDs and names do not - get conflated. + + don''t ONLY use UUIDs, this is an alias + to string. Being a type captures + + intent and helps make sure that UIDs and + names do not get conflated.' nullable: true type: string type: object @@ -2361,27 +2746,38 @@ spec: type: object type: array notReady: - description: NotReady is the number of bundle deployments - that have been deployed where some resources are not - ready. + description: 'NotReady is the number of bundle deployments + that have been deployed + + where some resources are not ready.' type: integer outOfSync: - description: OutOfSync is the number of bundle deployments - that have been synced from Fleet controller, but not - yet by the downstream agent. + description: 'OutOfSync is the number of bundle deployments + that have been synced + + from Fleet controller, but not yet by the downstream + agent.' type: integer pending: - description: Pending is the number of bundle deployments - that are being processed by Fleet controller. + description: 'Pending is the number of bundle deployments + that are being processed + + by Fleet controller.' type: integer ready: - description: Ready is the number of bundle deployments - that have been deployed where all resources are ready. + description: 'Ready is the number of bundle deployments + that have been deployed + + where all resources are ready.' type: integer waitApplied: - description: WaitApplied is the number of bundle deployments - that have been synced from Fleet controller and downstream - cluster, but are waiting to be deployed. + description: 'WaitApplied is the number of bundle deployments + that have been + + synced from Fleet controller and downstream cluster, + but are waiting + + to be deployed.' type: integer type: object unavailable: @@ -2391,9 +2787,13 @@ spec: type: object type: array resourceKey: - description: ResourceKey lists resources, which will likely be deployed. - The actual list of resources on a cluster might differ, depending - on the helm chart, value templating, etc.. + description: 'ResourceKey lists resources, which will likely be + deployed. The + + actual list of resources on a cluster might differ, depending + on the + + helm chart, value templating, etc..' items: description: ResourceKey lists resources, which will likely be deployed. @@ -2421,32 +2821,48 @@ spec: of the .Spec.Resources field type: string summary: - description: Summary contains the number of bundle deployments in - each state and a list of non-ready resources. + description: 'Summary contains the number of bundle deployments + in each state and + + a list of non-ready resources.' properties: desiredReady: - description: DesiredReady is the number of bundle deployments - that should be ready. + description: 'DesiredReady is the number of bundle deployments + that should be + + ready.' type: integer errApplied: - description: ErrApplied is the number of bundle deployments - that have been synced from the Fleet controller and the downstream - cluster, but with some errors when deploying the bundle. + description: 'ErrApplied is the number of bundle deployments + that have been synced + + from the Fleet controller and the downstream cluster, but + with some + + errors when deploying the bundle.' type: integer modified: - description: Modified is the number of bundle deployments that - have been deployed and for which all resources are ready, - but where some changes from the Git repository have not yet - been synced. + description: 'Modified is the number of bundle deployments that + have been deployed + + and for which all resources are ready, but where some changes + from the + + Git repository have not yet been synced.' type: integer nonReadyResources: - description: NonReadyClusters is a list of states, which is - filled for a bundle that is not ready. + description: 'NonReadyClusters is a list of states, which is + filled for a bundle + + that is not ready.' items: - description: NonReadyResource contains information about a - bundle that is not ready for a given state like "ErrApplied". - It contains a list of non-ready or modified resources and - their states. + description: 'NonReadyResource contains information about + a bundle that is not ready for a + + given state like "ErrApplied". It contains a list of non-ready + or modified + + resources and their states.' properties: bundleState: description: State is the state of the resource, like @@ -2462,9 +2878,11 @@ spec: description: ModifiedStatus lists the state for each modified resource. items: - description: ModifiedStatus is used to report the status - of a resource that is modified. It indicates if the - modification was a create, a delete or a patch. + description: 'ModifiedStatus is used to report the status + of a resource that is modified. + + It indicates if the modification was a create, a delete + or a patch.' properties: apiVersion: nullable: true @@ -2524,11 +2942,14 @@ spec: type: boolean type: object uid: - description: UID is a type that holds unique ID - values, including UUIDs. Because we don't ONLY - use UUIDs, this is an alias to string. Being - a type captures intent and helps make sure that - UIDs and names do not get conflated. + description: 'UID is a type that holds unique ID + values, including UUIDs. Because we + + don''t ONLY use UUIDs, this is an alias to string. Being + a type captures + + intent and helps make sure that UIDs and names + do not get conflated.' nullable: true type: string type: object @@ -2536,32 +2957,46 @@ spec: type: object type: array notReady: - description: NotReady is the number of bundle deployments that - have been deployed where some resources are not ready. + description: 'NotReady is the number of bundle deployments that + have been deployed + + where some resources are not ready.' type: integer outOfSync: - description: OutOfSync is the number of bundle deployments that - have been synced from Fleet controller, but not yet by the - downstream agent. + description: 'OutOfSync is the number of bundle deployments + that have been synced + + from Fleet controller, but not yet by the downstream agent.' type: integer pending: - description: Pending is the number of bundle deployments that - are being processed by Fleet controller. + description: 'Pending is the number of bundle deployments that + are being processed + + by Fleet controller.' type: integer ready: - description: Ready is the number of bundle deployments that - have been deployed where all resources are ready. + description: 'Ready is the number of bundle deployments that + have been deployed + + where all resources are ready.' type: integer waitApplied: - description: WaitApplied is the number of bundle deployments - that have been synced from Fleet controller and downstream - cluster, but are waiting to be deployed. + description: 'WaitApplied is the number of bundle deployments + that have been + + synced from Fleet controller and downstream cluster, but are + waiting + + to be deployed.' type: integer type: object unavailable: - description: Unavailable is the number of bundle deployments that - are not ready or where the AppliedDeploymentID in the status does - not match the DeploymentID from the spec. + description: 'Unavailable is the number of bundle deployments that + are not ready or + + where the AppliedDeploymentID in the status does not match the + + DeploymentID from the spec.' type: integer unavailablePartitions: description: UnavailablePartitions is the number of unavailable @@ -2578,7 +3013,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: clustergroups.fleet.cattle.io spec: group: fleet.cattle.io @@ -2608,14 +3043,27 @@ spec: properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -2630,25 +3078,32 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the - key and values. + description: 'A label selector requirement is a selector that + contains values, a key, and an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. If the - operator is In or NotIn, the values array must be non-empty. - If the operator is Exists or DoesNotExist, the values - array must be empty. This array is replaced during a - strategic merge patch. + description: 'values is an array of string values. If + the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is replaced + during a strategic + + merge patch.' items: type: string type: array @@ -2660,11 +3115,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. A single - {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator - is "In", and the values array contains only "value". The requirements - are ANDed. + description: 'matchLabels is a map of {key,value} pairs. A single + {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, whose + key field is "key", the + + operator is "In", and the values array contains only "value". + The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -2707,24 +3165,36 @@ spec: type: object type: array display: - description: Display contains the number of ready, desiredready - clusters and a summary state for the bundle's resources. + description: 'Display contains the number of ready, desiredready + clusters and a + + summary state for the bundle''s resources.' properties: readyBundles: - description: ReadyBundles is a string in the form "%d/%d", that - describes the number of bundles that are ready vs. the number - of bundles desired to be ready. + description: 'ReadyBundles is a string in the form "%d/%d", + that describes the + + number of bundles that are ready vs. the number of bundles + desired + + to be ready.' nullable: true type: string readyClusters: - description: ReadyClusters is a string in the form "%d/%d", - that describes the number of clusters that are ready vs. the - number of clusters desired to be ready. + description: 'ReadyClusters is a string in the form "%d/%d", + that describes the + + number of clusters that are ready vs. the number of clusters + desired + + to be ready.' nullable: true type: string state: - description: State is a summary state for the cluster group, - showing "NotReady" if there are non-ready resources. + description: 'State is a summary state for the cluster group, + showing "NotReady" if + + there are non-ready resources.' nullable: true type: string type: object @@ -2740,8 +3210,10 @@ spec: nullable: true type: array resourceCounts: - description: ResourceCounts contains the number of resources in - each state over all bundles in the cluster group. + description: 'ResourceCounts contains the number of resources in + each state over + + all bundles in the cluster group.' properties: desiredReady: description: DesiredReady is the number of resources that should @@ -2755,8 +3227,10 @@ spec: modified. type: integer notReady: - description: NotReady is the number of not ready resources. - Resources are not ready if they do not match any other state. + description: 'NotReady is the number of not ready resources. + Resources are not + + ready if they do not match any other state.' type: integer orphaned: description: Orphaned is the number of orphaned resources. @@ -2774,32 +3248,48 @@ spec: type: integer type: object summary: - description: Summary is a summary of the bundle deployments and - their resources in the cluster group. + description: 'Summary is a summary of the bundle deployments and + their resources + + in the cluster group.' properties: desiredReady: - description: DesiredReady is the number of bundle deployments - that should be ready. + description: 'DesiredReady is the number of bundle deployments + that should be + + ready.' type: integer errApplied: - description: ErrApplied is the number of bundle deployments - that have been synced from the Fleet controller and the downstream - cluster, but with some errors when deploying the bundle. + description: 'ErrApplied is the number of bundle deployments + that have been synced + + from the Fleet controller and the downstream cluster, but + with some + + errors when deploying the bundle.' type: integer modified: - description: Modified is the number of bundle deployments that - have been deployed and for which all resources are ready, - but where some changes from the Git repository have not yet - been synced. + description: 'Modified is the number of bundle deployments that + have been deployed + + and for which all resources are ready, but where some changes + from the + + Git repository have not yet been synced.' type: integer nonReadyResources: - description: NonReadyClusters is a list of states, which is - filled for a bundle that is not ready. + description: 'NonReadyClusters is a list of states, which is + filled for a bundle + + that is not ready.' items: - description: NonReadyResource contains information about a - bundle that is not ready for a given state like "ErrApplied". - It contains a list of non-ready or modified resources and - their states. + description: 'NonReadyResource contains information about + a bundle that is not ready for a + + given state like "ErrApplied". It contains a list of non-ready + or modified + + resources and their states.' properties: bundleState: description: State is the state of the resource, like @@ -2815,9 +3305,11 @@ spec: description: ModifiedStatus lists the state for each modified resource. items: - description: ModifiedStatus is used to report the status - of a resource that is modified. It indicates if the - modification was a create, a delete or a patch. + description: 'ModifiedStatus is used to report the status + of a resource that is modified. + + It indicates if the modification was a create, a delete + or a patch.' properties: apiVersion: nullable: true @@ -2877,11 +3369,14 @@ spec: type: boolean type: object uid: - description: UID is a type that holds unique ID - values, including UUIDs. Because we don't ONLY - use UUIDs, this is an alias to string. Being - a type captures intent and helps make sure that - UIDs and names do not get conflated. + description: 'UID is a type that holds unique ID + values, including UUIDs. Because we + + don''t ONLY use UUIDs, this is an alias to string. Being + a type captures + + intent and helps make sure that UIDs and names + do not get conflated.' nullable: true type: string type: object @@ -2889,26 +3384,37 @@ spec: type: object type: array notReady: - description: NotReady is the number of bundle deployments that - have been deployed where some resources are not ready. + description: 'NotReady is the number of bundle deployments that + have been deployed + + where some resources are not ready.' type: integer outOfSync: - description: OutOfSync is the number of bundle deployments that - have been synced from Fleet controller, but not yet by the - downstream agent. + description: 'OutOfSync is the number of bundle deployments + that have been synced + + from Fleet controller, but not yet by the downstream agent.' type: integer pending: - description: Pending is the number of bundle deployments that - are being processed by Fleet controller. + description: 'Pending is the number of bundle deployments that + are being processed + + by Fleet controller.' type: integer ready: - description: Ready is the number of bundle deployments that - have been deployed where all resources are ready. + description: 'Ready is the number of bundle deployments that + have been deployed + + where all resources are ready.' type: integer waitApplied: - description: WaitApplied is the number of bundle deployments - that have been synced from Fleet controller and downstream - cluster, but are waiting to be deployed. + description: 'WaitApplied is the number of bundle deployments + that have been + + synced from Fleet controller and downstream cluster, but are + waiting + + to be deployed.' type: integer type: object type: object @@ -2922,7 +3428,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: clusterregistrations.fleet.cattle.io spec: group: fleet.cattle.io @@ -2948,28 +3454,46 @@ spec: properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: properties: clientID: - description: ClientID is a unique string that will identify the - cluster. The agent either uses the configured ID or the kubeSystem.UID. + description: 'ClientID is a unique string that will identify the + cluster. The + + agent either uses the configured ID or the kubeSystem.UID.' nullable: true type: string clientRandom: - description: ClientRandom is a random string that the agent generates. - When fleet-controller grants a registration, it creates a registration - secret with this string in the name. + description: 'ClientRandom is a random string that the agent generates. + When + + fleet-controller grants a registration, it creates a registration + + secret with this string in the name.' nullable: true type: string clusterLabels: @@ -2983,14 +3507,19 @@ spec: status: properties: clusterName: - description: ClusterName is only set after the registration is being - processed by fleet-controller. + description: 'ClusterName is only set after the registration is + being processed by + + fleet-controller.' nullable: true type: string granted: - description: Granted is set to true, if the request service account - is present and its token secret exists. This happens directly - before creating the registration secret, roles and rolebindings. + description: 'Granted is set to true, if the request service account + is present + + and its token secret exists. This happens directly before creating + + the registration secret, roles and rolebindings.' type: boolean type: object type: object @@ -3003,7 +3532,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: clusterregistrationtokens.fleet.cattle.io spec: group: fleet.cattle.io @@ -3026,23 +3555,37 @@ spec: properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: properties: ttl: - description: TTL is the time to live for the token. It is used to - calculate the expiration time. If the token expires, it will be - deleted. + description: 'TTL is the time to live for the token. It is used + to calculate the + + expiration time. If the token expires, it will be deleted.' nullable: true type: string type: object @@ -3068,7 +3611,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: clusters.fleet.cattle.io spec: group: fleet.cattle.io @@ -3098,31 +3641,48 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: Cluster corresponds to a Kubernetes cluster. Fleet deploys - bundles to targeted clusters. Clusters to which Fleet deploys manifests - are referred to as downstream clusters. In the single cluster use case, - the Fleet manager Kubernetes cluster is both the manager and downstream - cluster at the same time. + description: 'Cluster corresponds to a Kubernetes cluster. Fleet deploys + bundles to targeted clusters. + + Clusters to which Fleet deploys manifests are referred to as downstream + + clusters. In the single cluster use case, the Fleet manager Kubernetes + + cluster is both the manager and downstream cluster at the same time.' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object spec: properties: agentAffinity: - description: AgentAffinity overrides the default affinity for the - cluster's agent deployment. If this value is nil the default affinity - is used. + description: 'AgentAffinity overrides the default affinity for the + cluster''s agent + + deployment. If this value is nil the default affinity is used.' nullable: true properties: nodeAffinity: @@ -3130,22 +3690,37 @@ spec: pod. properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the node - matches the corresponding matchExpressions; the node(s) - with the highest sum are the most preferred. + description: 'The scheduler will prefer to schedule pods + to nodes that satisfy + + the affinity expressions specified by this field, but + it may choose + + a node that violates one or more of the expressions. The + node that is + + most preferred is the one with the greatest sum of weights, + i.e. + + for each node that meets all of the scheduling requirements + (resource + + request, requiredDuringScheduling affinity expressions, + etc.), + + compute a sum by iterating through the elements of this + field and adding + + "weight" to the sum if the node matches the corresponding + matchExpressions; the + + node(s) with the highest sum are the most preferred.' items: - description: An empty preferred scheduling term matches - all objects with implicit weight 0 (i.e. it's a no-op). - A null preferred scheduling term matches no objects - (i.e. is also a no-op). + description: 'An empty preferred scheduling term matches + all objects with implicit weight 0 + + (i.e. it''s a no-op). A null preferred scheduling term + matches no objects (i.e. is also a no-op).' properties: preference: description: A node selector term, associated with @@ -3155,30 +3730,38 @@ spec: description: A list of node selector requirements by node's labels. items: - description: A node selector requirement is + description: 'A node selector requirement is a selector that contains values, a key, and - an operator that relates the key and values. + an operator + + that relates the key and values.' properties: key: description: The label key that the selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. + description: 'Represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists, + DoesNotExist. Gt, and Lt.' type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. + description: 'An array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If + the operator is Exists or DoesNotExist, + + the values array must be empty. If the + operator is Gt or Lt, the values + + array must have a single element, which + will be interpreted as an integer. + + This array is replaced during a strategic + merge patch.' items: type: string type: array @@ -3191,30 +3774,38 @@ spec: description: A list of node selector requirements by node's fields. items: - description: A node selector requirement is + description: 'A node selector requirement is a selector that contains values, a key, and - an operator that relates the key and values. + an operator + + that relates the key and values.' properties: key: description: The label key that the selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. + description: 'Represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists, + DoesNotExist. Gt, and Lt.' type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. + description: 'An array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If + the operator is Exists or DoesNotExist, + + the values array must be empty. If the + operator is Gt or Lt, the values + + array must have a single element, which + will be interpreted as an integer. + + This array is replaced during a strategic + merge patch.' items: type: string type: array @@ -3236,51 +3827,69 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not - be scheduled onto the node. If the affinity requirements - specified by this field cease to be met at some point - during pod execution (e.g. due to an update), the system - may or may not try to eventually evict the pod from its + description: 'If the affinity requirements specified by + this field are not met at + + scheduling time, the pod will not be scheduled onto the node. + + If the affinity requirements specified by this field cease + to be met + + at some point during pod execution (e.g. due to an update), + the system + + may or may not try to eventually evict the pod from its + node.' properties: nodeSelectorTerms: description: Required. A list of node selector terms. The terms are ORed. items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. + description: 'A null or empty node selector term matches + no objects. The requirements of + + them are ANDed. + The TopologySelectorTerm type implements a subset - of the NodeSelectorTerm. + of the NodeSelectorTerm.' properties: matchExpressions: description: A list of node selector requirements by node's labels. items: - description: A node selector requirement is + description: 'A node selector requirement is a selector that contains values, a key, and - an operator that relates the key and values. + an operator + + that relates the key and values.' properties: key: description: The label key that the selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. + description: 'Represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists, + DoesNotExist. Gt, and Lt.' type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. + description: 'An array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If + the operator is Exists or DoesNotExist, + + the values array must be empty. If the + operator is Gt or Lt, the values + + array must have a single element, which + will be interpreted as an integer. + + This array is replaced during a strategic + merge patch.' items: type: string type: array @@ -3293,30 +3902,38 @@ spec: description: A list of node selector requirements by node's fields. items: - description: A node selector requirement is + description: 'A node selector requirement is a selector that contains values, a key, and - an operator that relates the key and values. + an operator + + that relates the key and values.' properties: key: description: The label key that the selector applies to. type: string operator: - description: Represents a key's relationship - to a set of values. Valid operators are - In, NotIn, Exists, DoesNotExist. Gt, and - Lt. + description: 'Represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists, + DoesNotExist. Gt, and Lt.' type: string values: - description: An array of string values. - If the operator is In or NotIn, the values - array must be non-empty. If the operator - is Exists or DoesNotExist, the values - array must be empty. If the operator is - Gt or Lt, the values array must have a - single element, which will be interpreted - as an integer. This array is replaced - during a strategic merge patch. + description: 'An array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If + the operator is Exists or DoesNotExist, + + the values array must be empty. If the + operator is Gt or Lt, the values + + array must have a single element, which + will be interpreted as an integer. + + This array is replaced during a strategic + merge patch.' items: type: string type: array @@ -3338,17 +3955,31 @@ spec: this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling affinity expressions, - etc.), compute a sum by iterating through the elements - of this field and adding "weight" to the sum if the node - has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. + description: 'The scheduler will prefer to schedule pods + to nodes that satisfy + + the affinity expressions specified by this field, but + it may choose + + a node that violates one or more of the expressions. The + node that is + + most preferred is the one with the greatest sum of weights, + i.e. + + for each node that meets all of the scheduling requirements + (resource + + request, requiredDuringScheduling affinity expressions, + etc.), + + compute a sum by iterating through the elements of this + field and adding + + "weight" to the sum if the node has pods which matches + the corresponding podAffinityTerm; the + + node(s) with the highest sum are the most preferred.' items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred @@ -3367,29 +3998,35 @@ spec: label selector requirements. The requirements are ANDed. items: - description: A label selector requirement + description: 'A label selector requirement is a selector that contains values, a - key, and an operator that relates the - key and values. + key, and an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: 'operator represents a + key''s relationship to a set of values. + + Valid operators are In, NotIn, Exists + and DoesNotExist.' type: string values: - description: values is an array of string - values. If the operator is In or NotIn, + description: 'values is an array of + string values. If the operator is + In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic - merge patch. + + merge patch.' items: type: string type: array @@ -3401,52 +4038,65 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} + description: 'matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. + description: 'A label query over the set of namespaces + that the term applies to. + + The term is applied to the union of the namespaces + selected by this field + + and the ones listed in the namespaces field. + + null selector and null or empty namespaces list + means "this pod''s namespace". + + An empty selector ({}) matches all namespaces.' properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement + description: 'A label selector requirement is a selector that contains values, a - key, and an operator that relates the - key and values. + key, and an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: 'operator represents a + key''s relationship to a set of values. + + Valid operators are In, NotIn, Exists + and DoesNotExist.' type: string values: - description: values is an array of string - values. If the operator is In or NotIn, + description: 'values is an array of + string values. If the operator is + In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic - merge patch. + + merge patch.' items: type: string type: array @@ -3458,42 +4108,55 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} + description: 'matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list + description: 'namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". + listed in this field + + and the ones selected by namespaceSelector. + + null or empty namespaces list and null namespaceSelector + means "this pod''s namespace".' items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) + description: 'This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. + matching + + the labelSelector in the specified namespaces, + where co-located is defined as running on a + node + + whose value of the label with key topologyKey + matches that of any node on which any of the + + selected pods is running. + + Empty topologyKey is not allowed.' type: string required: - topologyKey type: object weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. + description: 'weight associated with matching the + corresponding podAffinityTerm, + + in the range 1-100.' format: int32 type: integer required: @@ -3502,23 +4165,43 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not - be scheduled onto the node. If the affinity requirements - specified by this field cease to be met at some point - during pod execution (e.g. due to a pod label update), - the system may or may not try to eventually evict the - pod from its node. When there are multiple elements, the - lists of nodes corresponding to each podAffinityTerm are - intersected, i.e. all terms must be satisfied. + description: 'If the affinity requirements specified by + this field are not met at + + scheduling time, the pod will not be scheduled onto the + node. + + If the affinity requirements specified by this field cease + to be met + + at some point during pod execution (e.g. due to a pod + label update), the + + system may or may not try to eventually evict the pod + from its node. + + When there are multiple elements, the lists of nodes corresponding + to each + + podAffinityTerm are intersected, i.e. all terms must be + satisfied.' items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or not - co-located (anti-affinity) with, where co-located is - defined as running on a node whose value of the label - with key matches that of any node on which - a pod of the set of pods is running + description: 'Defines a set of pods (namely those matching + the labelSelector + + relative to the given namespace(s)) that this pod should + be + + co-located (affinity) or not co-located (anti-affinity) + with, + + where co-located is defined as running on a node whose + value of + + the label with key matches that of any + node on which + + a pod of the set of pods is running' properties: labelSelector: description: A label query over a set of resources, @@ -3529,26 +4212,34 @@ spec: selector requirements. The requirements are ANDed. items: - description: A label selector requirement is + description: 'A label selector requirement is a selector that contains values, a key, and - an operator that relates the key and values. + an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. + description: 'operator represents a key''s + relationship to a set of values. + + Valid operators are In, NotIn, Exists + and DoesNotExist.' type: string values: - description: values is an array of string + description: 'values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array - is replaced during a strategic merge patch. + is replaced during a strategic + + merge patch.' items: type: string type: array @@ -3560,49 +4251,64 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} + description: 'matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied to - the union of the namespaces selected by this field - and the ones listed in the namespaces field. null - selector and null or empty namespaces list means - "this pod's namespace". An empty selector ({}) matches - all namespaces. + description: 'A label query over the set of namespaces + that the term applies to. + + The term is applied to the union of the namespaces + selected by this field + + and the ones listed in the namespaces field. + + null selector and null or empty namespaces list + means "this pod''s namespace". + + An empty selector ({}) matches all namespaces.' properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is + description: 'A label selector requirement is a selector that contains values, a key, and - an operator that relates the key and values. + an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. + description: 'operator represents a key''s + relationship to a set of values. + + Valid operators are In, NotIn, Exists + and DoesNotExist.' type: string values: - description: values is an array of string + description: 'values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array - is replaced during a strategic merge patch. + is replaced during a strategic + + merge patch.' items: type: string type: array @@ -3614,33 +4320,45 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} + description: 'matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list of - namespace names that the term applies to. The term - is applied to the union of the namespaces listed - in this field and the ones selected by namespaceSelector. + description: 'namespaces specifies a static list of + namespace names that the term applies to. + + The term is applied to the union of the namespaces + listed in this field + + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector - means "this pod's namespace". + means "this pod''s namespace".' items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) + description: 'This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node + matching + + the labelSelector in the specified namespaces, where + co-located is defined as running on a node + whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. + that of any node on which any of the + + selected pods is running. + + Empty topologyKey is not allowed.' type: string required: - topologyKey @@ -3653,18 +4371,31 @@ spec: other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods - to nodes that satisfy the anti-affinity expressions specified - by this field, but it may choose a node that violates - one or more of the expressions. The node that is most - preferred is the one with the greatest sum of weights, - i.e. for each node that meets all of the scheduling requirements - (resource request, requiredDuringScheduling anti-affinity - expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the - sum if the node has pods which matches the corresponding - podAffinityTerm; the node(s) with the highest sum are - the most preferred. + description: 'The scheduler will prefer to schedule pods + to nodes that satisfy + + the anti-affinity expressions specified by this field, + but it may choose + + a node that violates one or more of the expressions. The + node that is + + most preferred is the one with the greatest sum of weights, + i.e. + + for each node that meets all of the scheduling requirements + (resource + + request, requiredDuringScheduling anti-affinity expressions, + etc.), + + compute a sum by iterating through the elements of this + field and adding + + "weight" to the sum if the node has pods which matches + the corresponding podAffinityTerm; the + + node(s) with the highest sum are the most preferred.' items: description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred @@ -3683,29 +4414,35 @@ spec: label selector requirements. The requirements are ANDed. items: - description: A label selector requirement + description: 'A label selector requirement is a selector that contains values, a - key, and an operator that relates the - key and values. + key, and an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: 'operator represents a + key''s relationship to a set of values. + + Valid operators are In, NotIn, Exists + and DoesNotExist.' type: string values: - description: values is an array of string - values. If the operator is In or NotIn, + description: 'values is an array of + string values. If the operator is + In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic - merge patch. + + merge patch.' items: type: string type: array @@ -3717,52 +4454,65 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} + description: 'matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied - to the union of the namespaces selected by this - field and the ones listed in the namespaces - field. null selector and null or empty namespaces - list means "this pod's namespace". An empty - selector ({}) matches all namespaces. + description: 'A label query over the set of namespaces + that the term applies to. + + The term is applied to the union of the namespaces + selected by this field + + and the ones listed in the namespaces field. + + null selector and null or empty namespaces list + means "this pod''s namespace". + + An empty selector ({}) matches all namespaces.' properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement + description: 'A label selector requirement is a selector that contains values, a - key, and an operator that relates the - key and values. + key, and an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: 'operator represents a + key''s relationship to a set of values. + + Valid operators are In, NotIn, Exists + and DoesNotExist.' type: string values: - description: values is an array of string - values. If the operator is In or NotIn, + description: 'values is an array of + string values. If the operator is + In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic - merge patch. + + merge patch.' items: type: string type: array @@ -3774,42 +4524,55 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} + description: 'matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only - "value". The requirements are ANDed. + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list + description: 'namespaces specifies a static list of namespace names that the term applies to. + The term is applied to the union of the namespaces - listed in this field and the ones selected by - namespaceSelector. null or empty namespaces - list and null namespaceSelector means "this - pod's namespace". + listed in this field + + and the ones selected by namespaceSelector. + + null or empty namespaces list and null namespaceSelector + means "this pod''s namespace".' items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) + description: 'This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified - namespaces, where co-located is defined as running - on a node whose value of the label with key - topologyKey matches that of any node on which - any of the selected pods is running. Empty topologyKey - is not allowed. + matching + + the labelSelector in the specified namespaces, + where co-located is defined as running on a + node + + whose value of the label with key topologyKey + matches that of any node on which any of the + + selected pods is running. + + Empty topologyKey is not allowed.' type: string required: - topologyKey type: object weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. + description: 'weight associated with matching the + corresponding podAffinityTerm, + + in the range 1-100.' format: int32 type: integer required: @@ -3818,23 +4581,43 @@ spec: type: object type: array requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified - by this field are not met at scheduling time, the pod - will not be scheduled onto the node. If the anti-affinity - requirements specified by this field cease to be met at - some point during pod execution (e.g. due to a pod label - update), the system may or may not try to eventually evict - the pod from its node. When there are multiple elements, - the lists of nodes corresponding to each podAffinityTerm - are intersected, i.e. all terms must be satisfied. + description: 'If the anti-affinity requirements specified + by this field are not met at + + scheduling time, the pod will not be scheduled onto the + node. + + If the anti-affinity requirements specified by this field + cease to be met + + at some point during pod execution (e.g. due to a pod + label update), the + + system may or may not try to eventually evict the pod + from its node. + + When there are multiple elements, the lists of nodes corresponding + to each + + podAffinityTerm are intersected, i.e. all terms must be + satisfied.' items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) - that this pod should be co-located (affinity) or not - co-located (anti-affinity) with, where co-located is - defined as running on a node whose value of the label - with key matches that of any node on which - a pod of the set of pods is running + description: 'Defines a set of pods (namely those matching + the labelSelector + + relative to the given namespace(s)) that this pod should + be + + co-located (affinity) or not co-located (anti-affinity) + with, + + where co-located is defined as running on a node whose + value of + + the label with key matches that of any + node on which + + a pod of the set of pods is running' properties: labelSelector: description: A label query over a set of resources, @@ -3845,26 +4628,34 @@ spec: selector requirements. The requirements are ANDed. items: - description: A label selector requirement is + description: 'A label selector requirement is a selector that contains values, a key, and - an operator that relates the key and values. + an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. + description: 'operator represents a key''s + relationship to a set of values. + + Valid operators are In, NotIn, Exists + and DoesNotExist.' type: string values: - description: values is an array of string + description: 'values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array - is replaced during a strategic merge patch. + is replaced during a strategic + + merge patch.' items: type: string type: array @@ -3876,49 +4667,64 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} + description: 'matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic namespaceSelector: - description: A label query over the set of namespaces - that the term applies to. The term is applied to - the union of the namespaces selected by this field - and the ones listed in the namespaces field. null - selector and null or empty namespaces list means - "this pod's namespace". An empty selector ({}) matches - all namespaces. + description: 'A label query over the set of namespaces + that the term applies to. + + The term is applied to the union of the namespaces + selected by this field + + and the ones listed in the namespaces field. + + null selector and null or empty namespaces list + means "this pod''s namespace". + + An empty selector ({}) matches all namespaces.' properties: matchExpressions: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is + description: 'A label selector requirement is a selector that contains values, a key, and - an operator that relates the key and values. + an operator that + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and DoesNotExist. + description: 'operator represents a key''s + relationship to a set of values. + + Valid operators are In, NotIn, Exists + and DoesNotExist.' type: string values: - description: values is an array of string + description: 'values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array - is replaced during a strategic merge patch. + is replaced during a strategic + + merge patch.' items: type: string type: array @@ -3930,33 +4736,45 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} + description: 'matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is "In", - and the values array contains only "value". - The requirements are ANDed. + whose key field is "key", the + + operator is "In", and the values array contains + only "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic namespaces: - description: namespaces specifies a static list of - namespace names that the term applies to. The term - is applied to the union of the namespaces listed - in this field and the ones selected by namespaceSelector. + description: 'namespaces specifies a static list of + namespace names that the term applies to. + + The term is applied to the union of the namespaces + listed in this field + + and the ones selected by namespaceSelector. + null or empty namespaces list and null namespaceSelector - means "this pod's namespace". + means "this pod''s namespace".' items: type: string type: array topologyKey: - description: This pod should be co-located (affinity) + description: 'This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node + matching + + the labelSelector in the specified namespaces, where + co-located is defined as running on a node + whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. + that of any node on which any of the + + selected pods is running. + + Empty topologyKey is not allowed.' type: string required: - topologyKey @@ -3976,14 +4794,27 @@ spec: type: string value: description: 'Variable references $(VAR_NAME) are expanded + using the previously defined environment variables in the - container and any service environment variables. If a variable - cannot be resolved, the reference in the input string will - be unchanged. Double $$ are reduced to a single $, which - allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" - will produce the string literal "$(VAR_NAME)". Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' + container and + + any service environment variables. If a variable cannot + be resolved, + + the reference in the input string will be unchanged. Double + $$ are reduced + + to a single $, which allows for escaping the $(VAR_NAME) + syntax: i.e. + + "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + + Escaped references will never be expanded, regardless of + whether the variable + + exists or not. + + Defaults to "".' type: string valueFrom: description: Source for the environment variable's value. @@ -3996,7 +4827,10 @@ spec: description: The key to select. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + description: 'Name of the referent. + + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string @@ -4011,6 +4845,7 @@ spec: fieldRef: description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['''']`, `metadata.annotations['''']`, + spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' properties: @@ -4028,9 +4863,11 @@ spec: x-kubernetes-map-type: atomic resourceFieldRef: description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' + resources limits and requests + + (limits.cpu, limits.memory, limits.ephemeral-storage, + requests.cpu, requests.memory and requests.ephemeral-storage) + are currently supported.' properties: containerName: description: 'Container name: required for volumes, @@ -4059,7 +4896,10 @@ spec: be a valid secret key. type: string name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + description: 'Name of the referent. + + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string @@ -4087,18 +4927,31 @@ spec: nullable: true properties: claims: - description: "Claims lists the names of resources, defined in\ - \ spec.resourceClaims, that are used by this container. \n\ - \ This is an alpha field and requires enabling the DynamicResourceAllocation\ - \ feature gate. \n This field is immutable. It can only be\ - \ set for containers." + description: 'Claims lists the names of resources, defined in + spec.resourceClaims, + + that are used by this container. + + + + This is an alpha field and requires enabling the + + DynamicResourceAllocation feature gate. + + + + This field is immutable. It can only be set for containers.' items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry in - pod.spec.resourceClaims of the Pod where this field - is used. It makes that resource available inside a container. + description: 'Name must match the name of one entry in + pod.spec.resourceClaims of + + the Pod where this field is used. It makes that resource + available + + inside a container.' type: string required: - name @@ -4115,7 +4968,9 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + resources allowed. + + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object requests: additionalProperties: @@ -4125,71 +4980,96 @@ spec: pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. Requests cannot exceed - Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + resources required. + + If Requests is omitted for a container, it defaults to Limits + if that is explicitly specified, + + otherwise to an implementation-defined value. Requests cannot + exceed Limits. + + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' type: object type: object agentTolerations: description: AgentTolerations defines an extra set of Tolerations to be added to the Agent deployment. items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using the - matching operator . + description: 'The pod this Toleration is attached to tolerates + any taint that matches + + the triple using the matching operator .' properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. + description: 'Effect indicates the taint effect to match. + Empty means match all taint effects. + + When specified, allowed values are NoSchedule, PreferNoSchedule + and NoExecute.' type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match - all values and all keys. + description: 'Key is the taint key that the toleration applies + to. Empty means match all taint keys. + + If the key is empty, operator must be Exists; this combination + means to match all values and all keys.' type: string operator: - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to - Equal. Exists is equivalent to wildcard for value, so that - a pod can tolerate all taints of a particular category. + description: 'Operator represents a key''s relationship to + the value. + + Valid operators are Exists and Equal. Defaults to Equal. + + Exists is equivalent to wildcard for value, so that a pod + can + + tolerate all taints of a particular category.' type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoExecute, otherwise - this field is ignored) tolerates the taint. By default, + description: 'TolerationSeconds represents the period of time + the toleration (which must be + + of effect NoExecute, otherwise this field is ignored) tolerates + the taint. By default, + it is not set, which means tolerate the taint forever (do - not evict). Zero and negative values will be treated as - 0 (evict immediately) by the system. + not evict). Zero and + + negative values will be treated as 0 (evict immediately) + by the system.' format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: 'Value is the taint value the toleration matches + to. + + If the operator is Exists, the value should be empty, otherwise + just a regular string.' type: string type: object type: array clientID: - description: ClientID is a unique string that will identify the - cluster. It can either be predefined, or generated when importing - the cluster. + description: 'ClientID is a unique string that will identify the + cluster. It can + + either be predefined, or generated when importing the cluster.' nullable: true type: string kubeConfigSecret: - description: KubeConfigSecret is the name of the secret containing - the kubeconfig for the downstream cluster. It can optionally contain - a APIServerURL and CA to override the values in the fleet-controller's - configmap. + description: 'KubeConfigSecret is the name of the secret containing + the kubeconfig for the downstream cluster. + + It can optionally contain a APIServerURL and CA to override the + + values in the fleet-controller''s configmap.' nullable: true type: string kubeConfigSecretNamespace: - description: KubeConfigSecretNamespace is the namespace of the secret - containing the kubeconfig for the downstream cluster. If unset, - it will be assumed the secret can be found in the namespace that - the Cluster object resides within. + description: 'KubeConfigSecretNamespace is the namespace of the + secret containing the kubeconfig for the downstream cluster. + + If unset, it will be assumed the secret can be found in the namespace + that the Cluster object resides within.' nullable: true type: string paused: @@ -4217,8 +5097,10 @@ spec: description: AgentStatus contains information about the agent. properties: lastSeen: - description: LastSeen is the last time the agent checked in - to update the status of the cluster resource. + description: 'LastSeen is the last time the agent checked in + to update the status + + of the cluster resource.' format: date-time nullable: true type: string @@ -4228,8 +5110,10 @@ spec: nullable: true type: string nonReadyNodeNames: - description: NonReadyNode contains the names of non-ready nodes. - The list is limited to at most 3 names. + description: 'NonReadyNode contains the names of non-ready nodes. + The list is + + limited to at most 3 names.' items: type: string type: array @@ -4238,8 +5122,10 @@ spec: ready. type: integer readyNodeNames: - description: ReadyNodes contains the names of ready nodes. The - list is limited to at most 3 names. + description: 'ReadyNodes contains the names of ready nodes. + The list is limited to + + at most 3 names.' items: type: string type: array @@ -4248,13 +5134,18 @@ spec: type: integer type: object agentAffinityHash: - description: AgentAffinityHash is a hash of the agent's affinity - configuration, used to detect changes. + description: 'AgentAffinityHash is a hash of the agent''s affinity + configuration, + + used to detect changes.' type: string agentConfigChanged: - description: AgentConfigChanged is set to true if any of the agent - configuration changed, like the API server URL or CA. Setting - it to true will trigger a re-import of the cluster. + description: 'AgentConfigChanged is set to true if any of the agent + configuration + + changed, like the API server URL or CA. Setting it to true will + + trigger a re-import of the cluster.' type: boolean agentDeployedGeneration: description: AgentDeployedGeneration is the generation of the agent @@ -4268,14 +5159,20 @@ spec: nullable: true type: string agentMigrated: - description: AgentMigrated is always set to true after importing - a cluster. If false, it will trigger a migration. Old agents don't - have this in their status. + description: 'AgentMigrated is always set to true after importing + a cluster. If + + false, it will trigger a migration. Old agents don''t have + + this in their status.' type: boolean agentNamespaceMigrated: - description: AgentNamespaceMigrated is always set to true after - importing a cluster. If false, it will trigger a migration. Old - Fleet agents don't have this in their status. + description: 'AgentNamespaceMigrated is always set to true after + importing a + + cluster. If false, it will trigger a migration. Old Fleet agents + + don''t have this in their status.' type: boolean agentPrivateRepoURL: description: AgentPrivateRepoURL is the private repo URL for the @@ -4283,13 +5180,16 @@ spec: nullable: true type: string agentResourcesHash: - description: AgentResourcesHash is a hash of the agent's resources - configuration, used to detect changes. + description: 'AgentResourcesHash is a hash of the agent''s resources + configuration, + + used to detect changes.' nullable: true type: string agentTolerationsHash: - description: AgentTolerationsHash is a hash of the agent's tolerations - configuration, used to detect changes. + description: 'AgentTolerationsHash is a hash of the agent''s tolerations + + configuration, used to detect changes.' nullable: true type: string apiServerCAHash: @@ -4298,14 +5198,19 @@ spec: nullable: true type: string apiServerURL: - description: APIServerURL is the currently used URL of the API server - that the cluster uses to connect to upstream. + description: 'APIServerURL is the currently used URL of the API + server that the + + cluster uses to connect to upstream.' nullable: true type: string cattleNamespaceMigrated: - description: CattleNamespaceMigrated is always set to true after - importing a cluster. If false, it will trigger a migration. Old - Fleet agents, don't have this in their status. + description: 'CattleNamespaceMigrated is always set to true after + importing a + + cluster. If false, it will trigger a migration. Old Fleet agents, + + don''t have this in their status.' type: boolean conditions: items: @@ -4337,27 +5242,36 @@ spec: type: object type: array desiredReadyGitRepos: - description: DesiredReadyGitRepos is the number of gitrepos for - this cluster that are desired to be ready. + description: 'DesiredReadyGitRepos is the number of gitrepos for + this cluster that + + are desired to be ready.' type: integer display: description: Display contains the number of ready bundles, nodes and a summary state. properties: readyBundles: - description: ReadyBundles is a string in the form "%d/%d", that - describes the number of bundles that are ready vs. the number - of bundles desired to be ready. + description: 'ReadyBundles is a string in the form "%d/%d", + that describes the + + number of bundles that are ready vs. the number of bundles + desired + + to be ready.' type: string readyNodes: - description: ReadyNodes is a string in the form "%d/%d", that - describes the number of nodes that are ready vs. the number - of expected nodes. + description: 'ReadyNodes is a string in the form "%d/%d", that + describes the + + number of nodes that are ready vs. the number of expected + nodes.' type: string sampleNode: - description: SampleNode is the name of one of the nodes that - are ready. If no node is ready, it's the name of a node that - is not ready. + description: 'SampleNode is the name of one of the nodes that + are ready. If no + + node is ready, it''s the name of a node that is not ready.' type: string state: description: State of the cluster, either one of the bundle @@ -4366,7 +5280,10 @@ spec: type: object namespace: description: 'Namespace is the cluster namespace, it contains the - clusters service account as well as any bundledeployments. Example: + clusters service + + account as well as any bundledeployments. Example: + "cluster-fleet-local-cluster-294db1acfa77-d9ccf852678f"' type: string readyGitRepos: @@ -4388,8 +5305,10 @@ spec: modified. type: integer notReady: - description: NotReady is the number of not ready resources. - Resources are not ready if they do not match any other state. + description: 'NotReady is the number of not ready resources. + Resources are not + + ready if they do not match any other state.' type: integer orphaned: description: Orphaned is the number of orphaned resources. @@ -4407,32 +5326,48 @@ spec: type: integer type: object summary: - description: Summary is a summary of the bundledeployments. The - resource counts are copied from the gitrepo resource. + description: 'Summary is a summary of the bundledeployments. The + resource counts + + are copied from the gitrepo resource.' properties: desiredReady: - description: DesiredReady is the number of bundle deployments - that should be ready. + description: 'DesiredReady is the number of bundle deployments + that should be + + ready.' type: integer errApplied: - description: ErrApplied is the number of bundle deployments - that have been synced from the Fleet controller and the downstream - cluster, but with some errors when deploying the bundle. + description: 'ErrApplied is the number of bundle deployments + that have been synced + + from the Fleet controller and the downstream cluster, but + with some + + errors when deploying the bundle.' type: integer modified: - description: Modified is the number of bundle deployments that - have been deployed and for which all resources are ready, - but where some changes from the Git repository have not yet - been synced. + description: 'Modified is the number of bundle deployments that + have been deployed + + and for which all resources are ready, but where some changes + from the + + Git repository have not yet been synced.' type: integer nonReadyResources: - description: NonReadyClusters is a list of states, which is - filled for a bundle that is not ready. + description: 'NonReadyClusters is a list of states, which is + filled for a bundle + + that is not ready.' items: - description: NonReadyResource contains information about a - bundle that is not ready for a given state like "ErrApplied". - It contains a list of non-ready or modified resources and - their states. + description: 'NonReadyResource contains information about + a bundle that is not ready for a + + given state like "ErrApplied". It contains a list of non-ready + or modified + + resources and their states.' properties: bundleState: description: State is the state of the resource, like @@ -4448,9 +5383,11 @@ spec: description: ModifiedStatus lists the state for each modified resource. items: - description: ModifiedStatus is used to report the status - of a resource that is modified. It indicates if the - modification was a create, a delete or a patch. + description: 'ModifiedStatus is used to report the status + of a resource that is modified. + + It indicates if the modification was a create, a delete + or a patch.' properties: apiVersion: nullable: true @@ -4510,11 +5447,14 @@ spec: type: boolean type: object uid: - description: UID is a type that holds unique ID - values, including UUIDs. Because we don't ONLY - use UUIDs, this is an alias to string. Being - a type captures intent and helps make sure that - UIDs and names do not get conflated. + description: 'UID is a type that holds unique ID + values, including UUIDs. Because we + + don''t ONLY use UUIDs, this is an alias to string. Being + a type captures + + intent and helps make sure that UIDs and names + do not get conflated.' nullable: true type: string type: object @@ -4522,26 +5462,37 @@ spec: type: object type: array notReady: - description: NotReady is the number of bundle deployments that - have been deployed where some resources are not ready. + description: 'NotReady is the number of bundle deployments that + have been deployed + + where some resources are not ready.' type: integer outOfSync: - description: OutOfSync is the number of bundle deployments that - have been synced from Fleet controller, but not yet by the - downstream agent. + description: 'OutOfSync is the number of bundle deployments + that have been synced + + from Fleet controller, but not yet by the downstream agent.' type: integer pending: - description: Pending is the number of bundle deployments that - are being processed by Fleet controller. + description: 'Pending is the number of bundle deployments that + are being processed + + by Fleet controller.' type: integer ready: - description: Ready is the number of bundle deployments that - have been deployed where all resources are ready. + description: 'Ready is the number of bundle deployments that + have been deployed + + where all resources are ready.' type: integer waitApplied: - description: WaitApplied is the number of bundle deployments - that have been synced from Fleet controller and downstream - cluster, but are waiting to be deployed. + description: 'WaitApplied is the number of bundle deployments + that have been + + synced from Fleet controller and downstream cluster, but are + waiting + + to be deployed.' type: integer type: object type: object @@ -4555,7 +5506,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: contents.fleet.cattle.io spec: group: fleet.cattle.io @@ -4569,27 +5520,44 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: Content is used internally by Fleet and should not be used - directly. It contains the resources from a bundle for a specific target - cluster. + description: 'Content is used internally by Fleet and should not be used + directly. It + + contains the resources from a bundle for a specific target cluster.' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string content: - description: Content is a byte array, which contains the manifests of - a bundle. The bundle resources are copied into the bundledeployment's - content resource, so the downstream agent can deploy them. + description: 'Content is a byte array, which contains the manifests + of a bundle. + + The bundle resources are copied into the bundledeployment''s content + + resource, so the downstream agent can deploy them.' format: byte nullable: true type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -4606,7 +5574,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: gitreporestrictions.fleet.cattle.io spec: group: fleet.cattle.io @@ -4627,8 +5595,10 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: GitRepoRestriction is a resource that can optionally be used - to restrict the options of GitRepos in the same namespace. + description: 'GitRepoRestriction is a resource that can optionally be used + to restrict + + the options of GitRepos in the same namespace.' properties: allowedClientSecretNames: description: AllowedClientSecretNames is a list of client secret names @@ -4638,8 +5608,10 @@ spec: nullable: true type: array allowedRepoPatterns: - description: AllowedRepoPatterns is a list of regex patterns that restrict - the valid values of the Repo field of a GitRepo. + description: 'AllowedRepoPatterns is a list of regex patterns that restrict + the + + valid values of the Repo field of a GitRepo.' items: type: string nullable: true @@ -4652,17 +5624,26 @@ spec: nullable: true type: array allowedTargetNamespaces: - description: AllowedTargetNamespaces restricts TargetNamespace to the - given namespaces. If AllowedTargetNamespaces is set, TargetNamespace - must be set. + description: 'AllowedTargetNamespaces restricts TargetNamespace to the + given + + namespaces. If AllowedTargetNamespaces is set, TargetNamespace must + + be set.' items: type: string nullable: true type: array apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string defaultClientSecretName: description: DefaultClientSecretName overrides the GitRepo's default @@ -4676,9 +5657,16 @@ spec: type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -4692,7 +5680,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: gitrepos.fleet.cattle.io spec: group: fleet.cattle.io @@ -4721,20 +5709,36 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: GitRepo describes a git repository that is watched by Fleet. + description: 'GitRepo describes a git repository that is watched by Fleet. + The resource contains the necessary information to deploy the repo, or - parts of it, to target clusters. + parts + + of it, to target clusters.' properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -4751,9 +5755,11 @@ spec: nullable: true type: string clientSecretName: - description: ClientSecretName is the name of the client secret to - be used to connect to the repo It is expected the secret be of - type "kubernetes.io/basic-auth" or "kubernetes.io/ssh-auth". + description: 'ClientSecretName is the name of the client secret + to be used to connect to the repo + + It is expected the secret be of type "kubernetes.io/basic-auth" + or "kubernetes.io/ssh-auth".' nullable: true type: string correctDrift: @@ -4779,9 +5785,10 @@ spec: format: int64 type: integer helmRepoURLRegex: - description: HelmRepoURLRegex Helm credentials will be used if the - helm repo matches this regex Credentials will always be used if - this is empty or not provided. + description: 'HelmRepoURLRegex Helm credentials will be used if + the helm repo matches this regex + + Credentials will always be used if this is empty or not provided.' nullable: true type: string helmSecretName: @@ -4809,9 +5816,11 @@ spec: nullable: true type: string messageTemplate: - description: MessageTemplate provides a template for the commit - message, into which will be interpolated the details of the - change made. + description: 'MessageTemplate provides a template for the commit + message, + + into which will be interpolated the details of the change + made.' nullable: true type: string type: object @@ -4828,18 +5837,22 @@ spec: be kept after deleting the GitRepo. type: boolean paths: - description: Paths is the directories relative to the git repo root - that contain resources to be applied. Path globbing is supported, - for example ["charts/*"] will match all folders as a subdirectory - of charts/ If empty, "/" is the default. + description: 'Paths is the directories relative to the git repo + root that contain resources to be applied. + + Path globbing is supported, for example ["charts/*"] will match + all folders as a subdirectory of charts/ + + If empty, "/" is the default.' items: type: string nullable: true type: array paused: - description: Paused, when true, causes changes in Git not to be - propagated down to the clusters but instead to mark resources - as OutOfSync. + description: 'Paused, when true, causes changes in Git not to be + propagated down to the clusters but instead to mark + + resources as OutOfSync.' type: boolean pollingInterval: description: PollingInterval is how often to check git for new updates. @@ -4858,9 +5871,11 @@ spec: nullable: true type: string targetNamespace: - description: Ensure that all resources are created in this namespace - Any cluster scoped resource will be rejected if this is set Additionally - this namespace will be created on demand. + description: 'Ensure that all resources are created in this namespace + + Any cluster scoped resource will be rejected if this is set + + Additionally this namespace will be created on demand.' nullable: true type: string targets: @@ -4884,26 +5899,32 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector + description: 'A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is + replaced during a strategic + + merge patch.' items: type: string type: array @@ -4915,11 +5936,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains only + "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -4936,26 +5960,32 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector + description: 'A label selector requirement is a selector that contains values, a key, and an operator that - relates the key and values. + + relates the key and values.' properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, NotIn, - Exists and DoesNotExist. + description: 'operator represents a key''s relationship + to a set of values. + + Valid operators are In, NotIn, Exists and DoesNotExist.' type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists or - DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: 'values is an array of string values. + If the operator is In or NotIn, + + the values array must be non-empty. If the operator + is Exists or DoesNotExist, + + the values array must be empty. This array is + replaced during a strategic + + merge patch.' items: type: string type: array @@ -4967,11 +5997,14 @@ spec: matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field is - "key", the operator is "In", and the values array contains - only "value". The requirements are ANDed. + description: 'matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels + + map is equivalent to an element of matchExpressions, + whose key field is "key", the + + operator is "In", and the values array contains only + "value". The requirements are ANDed.' type: object type: object x-kubernetes-map-type: atomic @@ -4990,8 +6023,10 @@ spec: nullable: true type: string conditions: - description: Conditions is a list of Wrangler conditions that describe - the state of the GitRepo. + description: 'Conditions is a list of Wrangler conditions that describe + the state + + of the GitRepo.' items: properties: lastTransitionTime: @@ -5035,13 +6070,17 @@ spec: deployment conditions. type: string readyBundleDeployments: - description: ReadyBundleDeployments is a string in the form - "%d/%d", that describes the number of ready bundledeployments - over the total number of bundledeployments. + description: 'ReadyBundleDeployments is a string in the form + "%d/%d", that describes the + + number of ready bundledeployments over the total number of + bundledeployments.' type: string state: - description: State is the state of the GitRepo, e.g. "GitUpdating" - or the maximal BundleState according to StateRank. + description: 'State is the state of the GitRepo, e.g. "GitUpdating" + or the maximal + + BundleState according to StateRank.' type: string type: object gitJobStatus: @@ -5054,15 +6093,18 @@ spec: format: date-time type: string observedGeneration: - description: ObservedGeneration is the current generation of the - resource in the cluster. It is copied from k8s metadata.Generation. - The value is incremented for all changes, except for changes to - .metadata or .status. + description: 'ObservedGeneration is the current generation of the + resource in the cluster. It is copied from k8s + + metadata.Generation. The value is incremented for all changes, + except for changes to .metadata or .status.' format: int64 type: integer readyClusters: - description: ReadyClusters is the lowest number of clusters that - are ready over all the bundles of this GitRepo. + description: 'ReadyClusters is the lowest number of clusters that + are ready over + + all the bundles of this GitRepo.' type: integer resourceCounts: description: ResourceCounts contains the number of resources in @@ -5080,8 +6122,10 @@ spec: modified. type: integer notReady: - description: NotReady is the number of not ready resources. - Resources are not ready if they do not match any other state. + description: 'NotReady is the number of not ready resources. + Resources are not + + ready if they do not match any other state.' type: integer orphaned: description: Orphaned is the number of orphaned resources. @@ -5123,9 +6167,13 @@ spec: or "backingimagemanagers.storage.io". type: string incompleteState: - description: IncompleteState is true if a bundle summary has - 10 or more non-ready resources or a non-ready resource has - more 10 or more non-ready or modified states. + description: 'IncompleteState is true if a bundle summary + has 10 or more non-ready + + resources or a non-ready resource has more 10 or more non-ready + or + + modified states.' type: boolean kind: description: Kind is the k8s kind of the resource. @@ -5166,9 +6214,10 @@ spec: description: State is the state of the resource. type: string transitioning: - description: Transitioning is true if the resource is - in a transitioning state, copied from the bundle's - summary for non-ready resources. + description: 'Transitioning is true if the resource + is in a transitioning state, + + copied from the bundle''s summary for non-ready resources.' type: boolean type: object type: array @@ -5191,28 +6240,42 @@ spec: each state and a list of non-ready resources. properties: desiredReady: - description: DesiredReady is the number of bundle deployments - that should be ready. + description: 'DesiredReady is the number of bundle deployments + that should be + + ready.' type: integer errApplied: - description: ErrApplied is the number of bundle deployments - that have been synced from the Fleet controller and the downstream - cluster, but with some errors when deploying the bundle. + description: 'ErrApplied is the number of bundle deployments + that have been synced + + from the Fleet controller and the downstream cluster, but + with some + + errors when deploying the bundle.' type: integer modified: - description: Modified is the number of bundle deployments that - have been deployed and for which all resources are ready, - but where some changes from the Git repository have not yet - been synced. + description: 'Modified is the number of bundle deployments that + have been deployed + + and for which all resources are ready, but where some changes + from the + + Git repository have not yet been synced.' type: integer nonReadyResources: - description: NonReadyClusters is a list of states, which is - filled for a bundle that is not ready. + description: 'NonReadyClusters is a list of states, which is + filled for a bundle + + that is not ready.' items: - description: NonReadyResource contains information about a - bundle that is not ready for a given state like "ErrApplied". - It contains a list of non-ready or modified resources and - their states. + description: 'NonReadyResource contains information about + a bundle that is not ready for a + + given state like "ErrApplied". It contains a list of non-ready + or modified + + resources and their states.' properties: bundleState: description: State is the state of the resource, like @@ -5228,9 +6291,11 @@ spec: description: ModifiedStatus lists the state for each modified resource. items: - description: ModifiedStatus is used to report the status - of a resource that is modified. It indicates if the - modification was a create, a delete or a patch. + description: 'ModifiedStatus is used to report the status + of a resource that is modified. + + It indicates if the modification was a create, a delete + or a patch.' properties: apiVersion: nullable: true @@ -5290,11 +6355,14 @@ spec: type: boolean type: object uid: - description: UID is a type that holds unique ID - values, including UUIDs. Because we don't ONLY - use UUIDs, this is an alias to string. Being - a type captures intent and helps make sure that - UIDs and names do not get conflated. + description: 'UID is a type that holds unique ID + values, including UUIDs. Because we + + don''t ONLY use UUIDs, this is an alias to string. Being + a type captures + + intent and helps make sure that UIDs and names + do not get conflated.' nullable: true type: string type: object @@ -5302,26 +6370,37 @@ spec: type: object type: array notReady: - description: NotReady is the number of bundle deployments that - have been deployed where some resources are not ready. + description: 'NotReady is the number of bundle deployments that + have been deployed + + where some resources are not ready.' type: integer outOfSync: - description: OutOfSync is the number of bundle deployments that - have been synced from Fleet controller, but not yet by the - downstream agent. + description: 'OutOfSync is the number of bundle deployments + that have been synced + + from Fleet controller, but not yet by the downstream agent.' type: integer pending: - description: Pending is the number of bundle deployments that - are being processed by Fleet controller. + description: 'Pending is the number of bundle deployments that + are being processed + + by Fleet controller.' type: integer ready: - description: Ready is the number of bundle deployments that - have been deployed where all resources are ready. + description: 'Ready is the number of bundle deployments that + have been deployed + + where all resources are ready.' type: integer waitApplied: - description: WaitApplied is the number of bundle deployments - that have been synced from Fleet controller and downstream - cluster, but are waiting to be deployed. + description: 'WaitApplied is the number of bundle deployments + that have been + + synced from Fleet controller and downstream cluster, but are + waiting + + to be deployed.' type: integer type: object updateGeneration: @@ -5340,7 +6419,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.12.0 + controller-gen.kubebuilder.io/version: v0.14.0 name: imagescans.fleet.cattle.io spec: group: fleet.cattle.io @@ -5364,14 +6443,27 @@ spec: properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + of an object. + + Servers should convert recognized schemas to the latest internal value, + and + + may reject unrecognized values. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string kind: description: 'Kind is a string value representing the REST resource - this object represents. Servers may infer this from the endpoint the - client submits requests to. Cannot be updated. In CamelCase. More - info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + this object represents. + + Servers may infer this from the endpoint the client submits requests + to. + + Cannot be updated. + + In CamelCase. + + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -5387,13 +6479,16 @@ spec: nullable: true type: string interval: - description: Interval is the length of time to wait between scans - of the image repository. + description: 'Interval is the length of time to wait between + + scans of the image repository.' nullable: true type: string policy: - description: Policy gives the particulars of the policy to be followed - in selecting the most recent image + description: 'Policy gives the particulars of the policy to be followed + in + + selecting the most recent image' properties: alphabetical: description: Alphabetical set of rules to use for alphabetical @@ -5401,41 +6496,57 @@ spec: nullable: true properties: order: - description: Order specifies the sorting order of the tags. - Given the letters of the alphabet as tags, ascending order - would select Z, and descending order would select A. + description: 'Order specifies the sorting order of the tags. + Given the letters of the + + alphabet as tags, ascending order would select Z, and + descending order + + would select A.' nullable: true type: string type: object semver: - description: SemVer gives a semantic version range to check - against the tags available. + description: 'SemVer gives a semantic version range to check + against the tags + + available.' nullable: true properties: range: - description: Range gives a semver range for the image tag; - the highest version within the range that's a tag yields - the latest image. + description: 'Range gives a semver range for the image tag; + the highest + + version within the range that''s a tag yields the latest + image.' nullable: true type: string type: object type: object secretRef: - description: SecretRef can be given the name of a secret containing + description: 'SecretRef can be given the name of a secret containing + credentials to use for the image registry. The secret should be - created with `kubectl create secret docker-registry`, or the equivalent. + + created with `kubectl create secret docker-registry`, or the + + equivalent.' nullable: true properties: name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + description: 'Name of the referent. + + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' type: string type: object x-kubernetes-map-type: atomic suspend: - description: This flag tells the controller to suspend subsequent - image scans. It does not apply to already started scans. Defaults - to false. + description: 'This flag tells the controller to suspend subsequent + image scans. + + It does not apply to already started scans. Defaults to false.' type: boolean tagName: description: TagName is the tag ref that needs to be put in manifest @@ -5446,9 +6557,12 @@ spec: status: properties: canonicalImageName: - description: CanonicalName is the name of the image repository with - all the implied bits made explicit; e.g., `docker.io/library/alpine` - rather than `alpine`. + description: 'CanonicalName is the name of the image repository + with all the + + implied bits made explicit; e.g., `docker.io/library/alpine` + + rather than `alpine`.' type: string conditions: items: @@ -5487,9 +6601,12 @@ spec: description: LatestDigest is the digest of latest tag type: string latestImage: - description: LatestImage gives the first in the list of images scanned - by the image repository, when filtered and ordered according to - the policy. + description: 'LatestImage gives the first in the list of images + scanned by + + the image repository, when filtered and ordered according to + + the policy.' type: string latestTag: description: Latest tag is the latest tag filtered by the policy diff --git a/go.mod b/go.mod index 7f686968ba..751753455c 100644 --- a/go.mod +++ b/go.mod @@ -56,7 +56,7 @@ require ( k8s.io/kubernetes v1.29.0 sigs.k8s.io/cli-utils v0.34.0 sigs.k8s.io/controller-runtime v0.17.0 - sigs.k8s.io/controller-tools v0.12.0 + sigs.k8s.io/controller-tools v0.14.0 sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 sigs.k8s.io/yaml v1.4.0 @@ -105,7 +105,7 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch/v5 v5.8.0 // indirect github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect - github.com/fatih/color v1.15.0 // indirect + github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect @@ -159,7 +159,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect diff --git a/go.sum b/go.sum index 3209384500..90484a663c 100644 --- a/go.sum +++ b/go.sum @@ -344,8 +344,8 @@ github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2 github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= @@ -642,8 +642,8 @@ github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -1501,8 +1501,8 @@ sigs.k8s.io/cli-utils v0.34.0 h1:zCUitt54f0/MYj/ajVFnG6XSXMhpZ72O/3RewIchW8w= sigs.k8s.io/cli-utils v0.34.0/go.mod h1:EXyMwPMu9OL+LRnj0JEMsGG/fRvbgFadcVlSnE8RhFs= sigs.k8s.io/controller-runtime v0.17.0 h1:fjJQf8Ukya+VjogLO6/bNX9HE6Y2xpsO5+fyS26ur/s= sigs.k8s.io/controller-runtime v0.17.0/go.mod h1:+MngTvIQQQhfXtwfdGw/UOQ/aIaqsYywfCINOtwMO/s= -sigs.k8s.io/controller-tools v0.12.0 h1:TY6CGE6+6hzO7hhJFte65ud3cFmmZW947jajXkuDfBw= -sigs.k8s.io/controller-tools v0.12.0/go.mod h1:rXlpTfFHZMpZA8aGq9ejArgZiieHd+fkk/fTatY8A2M= +sigs.k8s.io/controller-tools v0.14.0 h1:rnNoCC5wSXlrNoBKKzL70LNJKIQKEzT6lloG6/LF73A= +sigs.k8s.io/controller-tools v0.14.0/go.mod h1:TV7uOtNNnnR72SpzhStvPkoS/U5ir0nMudrkrC4M9Sc= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= diff --git a/pkg/apis/fleet.cattle.io/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/fleet.cattle.io/v1alpha1/zz_generated.deepcopy.go index bc4a9c8706..ca4129d38a 100644 --- a/pkg/apis/fleet.cattle.io/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/fleet.cattle.io/v1alpha1/zz_generated.deepcopy.go @@ -1,5 +1,4 @@ //go:build !ignore_autogenerated -// +build !ignore_autogenerated /* Copyright (c) 2020 - 2024 SUSE LLC From 325e9b2ec3e2d7f6df4da0b6d2327b8bc65164b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 09:22:44 +0000 Subject: [PATCH 10/16] chore(deps): Bump k8s.io/kubernetes from 1.29.0 to 1.29.2 Bumps [k8s.io/kubernetes](https://github.com/kubernetes/kubernetes) from 1.29.0 to 1.29.2. - [Release notes](https://github.com/kubernetes/kubernetes/releases) - [Commits](https://github.com/kubernetes/kubernetes/compare/v1.29.0...v1.29.2) --- updated-dependencies: - dependency-name: k8s.io/kubernetes dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 8616024d0c..47717cf0f7 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,7 @@ require ( k8s.io/klog/v2 v2.110.1 k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 k8s.io/kubectl v0.29.2 - k8s.io/kubernetes v1.29.0 + k8s.io/kubernetes v1.29.2 sigs.k8s.io/cli-utils v0.34.0 sigs.k8s.io/controller-runtime v0.17.0 sigs.k8s.io/controller-tools v0.14.0 diff --git a/go.sum b/go.sum index 435438f8fa..04797007fc 100644 --- a/go.sum +++ b/go.sum @@ -1488,8 +1488,8 @@ k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/A k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= k8s.io/kubectl v0.29.2 h1:uaDYaBhumvkwz0S2XHt36fK0v5IdNgL7HyUniwb2IUo= k8s.io/kubectl v0.29.2/go.mod h1:BhizuYBGcKaHWyq+G7txGw2fXg576QbPrrnQdQDZgqI= -k8s.io/kubernetes v1.29.0 h1:DOLN7g8+nnAYBi8JHoW0+/MCrZKDPIqAxzLCXDXd0cg= -k8s.io/kubernetes v1.29.0/go.mod h1:9kztbUQf9stVDcIYXx+BX3nuGCsAQDsuClkGMpPs3pA= +k8s.io/kubernetes v1.29.2 h1:8hh1cntqdulanjQt7wSSSsJfBgOyx6fUdFWslvGL5m0= +k8s.io/kubernetes v1.29.2/go.mod h1:xZPKU0yO0CBbLTnbd+XGyRmmtmaVuJykDb8gNCkeeUE= k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.4 h1:djpBY2/2Cs1PV87GSJlxv4voajVOMZxqqtq9AB8YNvY= From f00558a0a7ddb8d83f9c68b11abb887b6fd2d520 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 10:12:53 +0000 Subject: [PATCH 11/16] chore(deps): Bump k8s.io/apimachinery from 0.28.4 to 0.29.2 in /pkg/apis Bumps [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) from 0.28.4 to 0.29.2. - [Commits](https://github.com/kubernetes/apimachinery/compare/v0.28.4...v0.29.2) --- updated-dependencies: - dependency-name: k8s.io/apimachinery dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pkg/apis/go.mod | 14 ++++++------- pkg/apis/go.sum | 52 ++++++++++++++++++++++++------------------------- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/pkg/apis/go.mod b/pkg/apis/go.mod index eccf74e74c..66c8138284 100644 --- a/pkg/apis/go.mod +++ b/pkg/apis/go.mod @@ -5,24 +5,24 @@ go 1.22 require ( github.com/rancher/wrangler/v2 v2.1.2 k8s.io/api v0.28.4 - k8s.io/apimachinery v0.28.4 + k8s.io/apimachinery v0.29.2 sigs.k8s.io/controller-runtime v0.16.3 ) require ( - github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/logr v1.3.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/text v0.14.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect + k8s.io/klog/v2 v2.110.1 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect sigs.k8s.io/cli-utils v0.28.0 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect ) diff --git a/pkg/apis/go.sum b/pkg/apis/go.sum index 5c228b986e..ffff6e5d60 100644 --- a/pkg/apis/go.sum +++ b/pkg/apis/go.sum @@ -1,15 +1,15 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -29,10 +29,10 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= +github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rancher/wrangler/v2 v2.1.2 h1:XAiReB3caOAepsTHs12AwKVv4vBJkjLosZPXbbj/85E= @@ -43,8 +43,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -56,26 +56,26 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.16.1 h1:TLyB3WofjdOEepBHAU20JdNC1Zbg87elYofWYAY5oZA= +golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -92,19 +92,19 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY= k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0= -k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= -k8s.io/apimachinery v0.28.4/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg= -k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk= -k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/apimachinery v0.29.2 h1:EWGpfJ856oj11C52NRCHuU7rFDwxev48z+6DSlGNsV8= +k8s.io/apimachinery v0.29.2/go.mod h1:6HVkd1FwxIagpYrHSwJlQqZI3G9LfYWRPAkUvLnXTKU= +k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= +k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= sigs.k8s.io/cli-utils v0.28.0 h1:gsvwqygoXlW2y8CmKdflQJNZp1Yhi4geATW3/Ei7oYc= sigs.k8s.io/cli-utils v0.28.0/go.mod h1:WDVRa5/eQBKntG++uyKdyT+xU7MLdCR4XsgseqL5uX4= sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= +sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= From c6f721b02e587374d462f1c020feaebdd31bff8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 05:33:08 +0000 Subject: [PATCH 12/16] chore(deps): Bump github.com/onsi/ginkgo/v2 from 2.14.0 to 2.15.0 Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.14.0 to 2.15.0. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.14.0...v2.15.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 47717cf0f7..db4e3a5cb9 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/gorilla/mux v1.8.1 github.com/hashicorp/go-getter v1.7.3 github.com/jpillora/backoff v1.0.0 - github.com/onsi/ginkgo/v2 v2.14.0 + github.com/onsi/ginkgo/v2 v2.15.0 github.com/onsi/gomega v1.30.0 github.com/otiai10/copy v1.14.0 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 04797007fc..894e73d4d2 100644 --- a/go.sum +++ b/go.sum @@ -699,8 +699,8 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.14.0 h1:vSmGj2Z5YPb9JwCWT6z6ihcUvDhuXLc3sJiqd3jMKAY= -github.com/onsi/ginkgo/v2 v2.14.0/go.mod h1:JkUdW7JkN0V6rFvsHcJ478egV3XH9NxpD27Hal/PhZw= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= From 39b17e6a62137e58a9d827a15c3c6848cbb222aa Mon Sep 17 00:00:00 2001 From: Xavi Garcia Date: Fri, 23 Feb 2024 15:46:15 +0100 Subject: [PATCH 13/16] Fixes panic when imagescan uses prereleases and * When using pre-releases in imagescan combined with ```yaml semver: range: * ``` it failed because `semver` ignores pre-releases unless they're explicitly described in the `semver.range`. For example: ```yaml semver: range: ">= 0.0.0-40" ``` works fine because it is explicitly using a pre-release. This fixes the `*` case by checking if there's any version found (lastVersion != nil) It also adds `e2e` tests for the following imagescans cases: * Deploy gitrepo with imagescan using `semver.range = ">= 0.0.0-40"` deploying image `0.0.0-40` and after that pushing image `0.0.0-50` * Same as above but for the case that whis branch fixed (using `semver.range = "*"` with pre-releases. Refers to: https://github.com/rancher/fleet/issues/2096 Signed-off-by: Xavi Garcia --- .../pre-releases-ignored/deployment.yaml | 21 ++ .../imagescan/pre-releases-ignored/fleet.yaml | 21 ++ .../imagescan/pre-releases-ok/deployment.yaml | 21 ++ .../imagescan/pre-releases-ok/fleet.yaml | 19 ++ e2e/single-cluster/imagescan_test.go | 295 +++++++++++++++--- e2e/testenv/githelper/git.go | 14 + .../cmd/controller/imagescan/tagscan_job.go | 3 + 7 files changed, 355 insertions(+), 39 deletions(-) create mode 100644 e2e/assets/imagescan/pre-releases-ignored/deployment.yaml create mode 100644 e2e/assets/imagescan/pre-releases-ignored/fleet.yaml create mode 100644 e2e/assets/imagescan/pre-releases-ok/deployment.yaml create mode 100644 e2e/assets/imagescan/pre-releases-ok/fleet.yaml diff --git a/e2e/assets/imagescan/pre-releases-ignored/deployment.yaml b/e2e/assets/imagescan/pre-releases-ignored/deployment.yaml new file mode 100644 index 0000000000..15b5a05703 --- /dev/null +++ b/e2e/assets/imagescan/pre-releases-ignored/deployment.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: pause-prerelease + labels: + app: pause +spec: + replicas: 1 + selector: + matchLabels: + app: pause + template: + metadata: + labels: + app: pause + spec: + containers: + - name: pause + image: {{.ImageWithTag}} # {"$imagescan": "test-scan"} + ports: + - containerPort: 80 diff --git a/e2e/assets/imagescan/pre-releases-ignored/fleet.yaml b/e2e/assets/imagescan/pre-releases-ignored/fleet.yaml new file mode 100644 index 0000000000..4d7c62d552 --- /dev/null +++ b/e2e/assets/imagescan/pre-releases-ignored/fleet.yaml @@ -0,0 +1,21 @@ +imageScans: +# specify the policy to retrieve images, can be semver or alphabetical order +- policy: + # if range is specified, it will take the latest image according to semver order in the range + # for more details on how to use semver, see https://github.com/Masterminds/semver + # in this test case we're going to use prerelease versions. + # as we're specifying * semver will ignore new tags but should not crash the fleet controller + semver: + range: "*" + # can use ascending or descending order + alphabetical: + order: asc + + # specify images to scan + image: {{.Image}} + + # Specify the tag name, it has to be unique in the same bundle + tagName: test-scan + + # Specify the scan interval + interval: 5s diff --git a/e2e/assets/imagescan/pre-releases-ok/deployment.yaml b/e2e/assets/imagescan/pre-releases-ok/deployment.yaml new file mode 100644 index 0000000000..15b5a05703 --- /dev/null +++ b/e2e/assets/imagescan/pre-releases-ok/deployment.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: pause-prerelease + labels: + app: pause +spec: + replicas: 1 + selector: + matchLabels: + app: pause + template: + metadata: + labels: + app: pause + spec: + containers: + - name: pause + image: {{.ImageWithTag}} # {"$imagescan": "test-scan"} + ports: + - containerPort: 80 diff --git a/e2e/assets/imagescan/pre-releases-ok/fleet.yaml b/e2e/assets/imagescan/pre-releases-ok/fleet.yaml new file mode 100644 index 0000000000..d29a328d3d --- /dev/null +++ b/e2e/assets/imagescan/pre-releases-ok/fleet.yaml @@ -0,0 +1,19 @@ +imageScans: +# specify the policy to retrieve images, can be semver or alphabetical order +- policy: + # if range is specified, it will take the latest image according to semver order in the range + # for more details on how to use semver, see https://github.com/Masterminds/semver + semver: + range: ">= 0.0.0-40" + # can use ascending or descending order + alphabetical: + order: asc + + # specify images to scan + image: {{.Image}} + + # Specify the tag name, it has to be unique in the same bundle + tagName: test-scan + + # Specify the scan interval + interval: 5s diff --git a/e2e/single-cluster/imagescan_test.go b/e2e/single-cluster/imagescan_test.go index 453b062e42..b1ce2f6c72 100644 --- a/e2e/single-cluster/imagescan_test.go +++ b/e2e/single-cluster/imagescan_test.go @@ -1,12 +1,20 @@ package singlecluster_test import ( + "fmt" "os" + "os/exec" "path" + "path/filepath" + "strconv" + "strings" + "time" + "github.com/go-git/go-git/v5" "github.com/rancher/fleet/e2e/testenv" "github.com/rancher/fleet/e2e/testenv/githelper" "github.com/rancher/fleet/e2e/testenv/kubectl" + "k8s.io/apimachinery/pkg/util/uuid" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" @@ -14,60 +22,28 @@ import ( var _ = Describe("Image Scan", Label("infra-setup"), func() { var ( - tmpdir string clonedir string k kubectl.Command - gh *githelper.Git + assetdir string ) - BeforeEach(func() { + JustBeforeEach(func() { k = env.Kubectl.Namespace(env.Namespace) - // Create git secret - out, err := k.Create( - "secret", "generic", "git-auth", "--type", "kubernetes.io/basic-auth", - "--from-literal=username="+os.Getenv("GIT_HTTP_USER"), - "--from-literal=password="+os.Getenv("GIT_HTTP_PASSWORD"), - ) - Expect(err).ToNot(HaveOccurred(), out) - - addr, err := githelper.GetExternalRepoAddr(env, port, repoName) - Expect(err).ToNot(HaveOccurred()) - gh = githelper.NewHTTP(addr) - gh.Branch = "imagescan" - - tmpdir, _ = os.MkdirTemp("", "fleet-") + tmpdir := GinkgoT().TempDir() clonedir = path.Join(tmpdir, "clone") - _, err = gh.Create(clonedir, testenv.AssetPath("imagescan/repo"), "examples") - Expect(err).ToNot(HaveOccurred()) - - // Build git repo URL reachable _within_ the cluster, for the GitRepo - host, err := githelper.BuildGitHostname(env.Namespace) - Expect(err).ToNot(HaveOccurred()) - - inClusterRepoURL := gh.GetInClusterURL(host, port, repoName) - - gitrepo := path.Join(tmpdir, "gitrepo.yaml") - err = testenv.Template(gitrepo, testenv.AssetPath("imagescan/imagescan.yaml"), struct { - Repo string - Branch string - }{ - inClusterRepoURL, - gh.Branch, - }) - Expect(err).ToNot(HaveOccurred()) - - out, err = k.Apply("-f", gitrepo) - Expect(err).ToNot(HaveOccurred(), out) + setupRepo(k, tmpdir, clonedir, testenv.AssetPath(assetdir)) }) AfterEach(func() { - os.RemoveAll(tmpdir) _, _ = k.Delete("gitrepo", "imagescan") _, _ = k.Delete("secret", "git-auth") }) When("update docker reference in git via image scan", func() { + BeforeEach(func() { + assetdir = "imagescan/repo" + }) It("updates the docker reference", func() { By("checking the deployment exists") Eventually(func() string { @@ -92,3 +68,244 @@ var _ = Describe("Image Scan", Label("infra-setup"), func() { }) }) }) + +var _ = Describe("Image Scan dynamic tests pushing to ttl.sh", Label("infra-setup"), func() { + var ( + clonedir string + k kubectl.Command + gh *githelper.Git + repository *git.Repository + assetdir string + tmpRepoDir string + image string + imageTag string + ) + + JustBeforeEach(func() { + k = env.Kubectl.Namespace(env.Namespace) + tmpdir := GinkgoT().TempDir() + clonedir = path.Join(tmpdir, "clone") + repository = setupRepo(k, tmpdir, clonedir, tmpRepoDir) + }) + + AfterEach(func() { + _, _ = k.Delete("gitrepo", "imagescan") + _, _ = k.Delete("secret", "git-auth") + }) + When("deploying imagescan setup with pre-release images", func() { + BeforeEach(func() { + assetdir = "imagescan/pre-releases-ok" + tmpRepoDir = GinkgoT().TempDir() + image, imageTag = initRegistryWithImageAndTag("k8s.gcr.io/pause", "0.0.0-40") + applyTemplateValues(assetdir, tmpRepoDir, image, imageTag) + }) + It("updates the docker reference", func() { + By("checking the deployment exists") + Eventually(func() string { + out, _ := k.Namespace("default").Get("pods") + return out + }).Should(ContainSubstring("pause-prerelease-")) + + By("checking the bundle has the original image tag") + Eventually(func() string { + out, _ := k.Get("bundles", "imagescan-examples", "-o", "yaml") + return out + }).Should( + MatchRegexp(fmt.Sprintf(`image: %s # {"\$imagescan": "test-scan"}`, imageTag))) + + By("pushing a new tag to the registry and checking the new image tag is found in the bundle") + newTag := "0.0.0-50" + imageTag = tagAndPushImage("k8s.gcr.io/pause", image, newTag) + Eventually(func() string { + out, _ := k.Get("bundles", "imagescan-examples", "-o", "yaml") + return out + }).Should( + MatchRegexp(fmt.Sprintf(`image: %s # {"\$imagescan": "test-scan"}`, imageTag))) + + By("checking that the new tag is pushed in the git repository") + err := gh.CheckoutRemote(repository, "imagescan") + Expect(err).NotTo(HaveOccurred()) + basedir := filepath.Join(clonedir, "examples") + b, err := os.ReadFile(filepath.Join(basedir, "deployment.yaml")) + Expect(err).NotTo(HaveOccurred()) + Expect(string(b)).Should(ContainSubstring(newTag)) + }) + }) + + // this test didn't pass before adding fix for issue #2096 + When("deploy imagescan setup with pre-release images and * semver range", func() { + BeforeEach(func() { + assetdir = "imagescan/pre-releases-ignored" + tmpRepoDir = GinkgoT().TempDir() + image, imageTag = initRegistryWithImageAndTag("k8s.gcr.io/pause", "0.0.0-40") + applyTemplateValues(assetdir, tmpRepoDir, image, imageTag) + }) + It("updates the image reference", func() { + By("checking the deployment exists") + Eventually(func() string { + out, _ := k.Namespace("default").Get("pods") + return out + }).Should(ContainSubstring("pause-prerelease-")) + + By("checking the bundle has the original image tag") + Eventually(func() string { + out, _ := k.Get("bundles", "imagescan-examples", "-o", "yaml") + return out + }).Should( + MatchRegexp(fmt.Sprintf(`image: %s # {"\$imagescan": "test-scan"}`, imageTag))) + + By("pushing a new tag to the registry and checking the fleet controller does not crash") + // store number of fleet controller restarts to compare later + index, ok := getFleetControllerContainerIndexInPod(k, "fleet-controller") + Expect(ok).To(BeTrue()) + fleetControllerInitialRestarts := getFleetControllerRestarts(k, index) + newTag := "0.0.0-50" + previousImageTag := imageTag + imageTag = tagAndPushImage("k8s.gcr.io/pause", image, newTag) + + // the scan time interval is 5 seconds. + // we check for 10 seconds so we're sure that the image has been scanned and the controller didn't crash + // Checks for number of restarts and also to the status.ready property to be more robust + Consistently(func() bool { + indexNow, ok := getFleetControllerContainerIndexInPod(k, "fleet-controller") + Expect(ok).To(BeTrue()) + restarts := getFleetControllerRestarts(k, indexNow) + ready := getFleetControllerReady(k, indexNow) + return (restarts == fleetControllerInitialRestarts) && ready + }, 10*time.Second, 1*time.Second).Should(BeTrue()) + + By("checking the bundle has the original image tag") + Eventually(func() string { + out, _ := k.Get("bundles", "imagescan-examples", "-o", "yaml") + return out + }).Should( + MatchRegexp(fmt.Sprintf(`image: %s # {"\$imagescan": "test-scan"}`, previousImageTag))) + }) + }) + AfterEach(func() { + _, _ = k.Delete("gitrepo", "imagescan") + _, _ = k.Delete("secret", "git-auth") + }) +}) + +func getFleetControllerRestarts(k kubectl.Command, index int) int { + out, err := k.Namespace("cattle-fleet-system").Get("pods", "-l", "app=fleet-controller", + "--no-headers", + "-o", fmt.Sprintf("custom-columns=RESTARTS:.status.containerStatuses[%d].restartCount", index)) + Expect(err).NotTo(HaveOccurred()) + out = strings.TrimSuffix(out, "\n") + n, err := strconv.Atoi(out) + Expect(err).NotTo(HaveOccurred()) + return n +} + +func getFleetControllerReady(k kubectl.Command, index int) bool { + out, err := k.Namespace("cattle-fleet-system").Get("pods", "-l", "app=fleet-controller", + "--no-headers", + "-o", fmt.Sprintf("custom-columns=RESTARTS:.status.containerStatuses[%d].ready", index)) + Expect(err).NotTo(HaveOccurred()) + out = strings.TrimSuffix(out, "\n") + boolValue, err := strconv.ParseBool(out) + Expect(err).NotTo(HaveOccurred()) + return boolValue +} + +func getFleetControllerContainerIndexInPod(k kubectl.Command, container string) (int, bool) { + // the fleet controller pod runs 3 containers. + // we need to know the index of the fleet-controller container inside the pod. + // get all the container names, and return the index of the given container name + out, err := k.Namespace("cattle-fleet-system").Get("pods", "-l", "app=fleet-controller", + "--no-headers", "-o", "custom-columns=RESTARTS:.status.containerStatuses[*].name") + Expect(err).NotTo(HaveOccurred()) + out = strings.TrimSuffix(out, "\n") + containers := strings.Split(out, ",") + for i, n := range containers { + if container == n { + return i, true + } + } + return -1, false +} + +func setupRepo(k kubectl.Command, tmpdir, clonedir, repoDir string) *git.Repository { + // Create git secret + out, err := k.Create( + "secret", "generic", "git-auth", "--type", "kubernetes.io/basic-auth", + "--from-literal=username="+os.Getenv("GIT_HTTP_USER"), + "--from-literal=password="+os.Getenv("GIT_HTTP_PASSWORD"), + ) + Expect(err).ToNot(HaveOccurred(), out) + + addr, err := githelper.GetExternalRepoAddr(env, port, repoName) + Expect(err).ToNot(HaveOccurred()) + gh := githelper.NewHTTP(addr) + gh.Branch = "imagescan" + + repo, err := gh.Create(clonedir, repoDir, "examples") + Expect(err).ToNot(HaveOccurred()) + + // Build git repo URL reachable _within_ the cluster, for the GitRepo + host, err := githelper.BuildGitHostname(env.Namespace) + Expect(err).ToNot(HaveOccurred()) + + inClusterRepoURL := gh.GetInClusterURL(host, port, repoName) + + gitrepo := path.Join(tmpdir, "gitrepo.yaml") + err = testenv.Template(gitrepo, testenv.AssetPath("imagescan/imagescan.yaml"), struct { + Repo string + Branch string + }{ + inClusterRepoURL, + gh.Branch, + }) + Expect(err).ToNot(HaveOccurred()) + + out, err = k.Apply("-f", gitrepo) + Expect(err).ToNot(HaveOccurred(), out) + return repo +} + +func tagAndPushImage(baseImage, image, tag string) string { + imageTag := fmt.Sprintf("%s:%s", image, tag) + // tag the image and push it to ttl.sh + cmd := exec.Command("docker", "tag", baseImage, imageTag) + err := cmd.Run() + Expect(err).ToNot(HaveOccurred()) + // push the image to ttl.sh + cmd = exec.Command("docker", "push", imageTag) + err = cmd.Run() + Expect(err).ToNot(HaveOccurred()) + return imageTag +} + +func initRegistryWithImageAndTag(baseImage string, tag string) (string, string) { + cmd := exec.Command("docker", "pull", baseImage) + err := cmd.Run() + Expect(err).ToNot(HaveOccurred()) + // generate a new uuid for this test + uuid := uuid.NewUUID() + image := fmt.Sprintf("ttl.sh/%s-fleet-test", uuid) + imageTag := tagAndPushImage(baseImage, image, tag) + + return image, imageTag +} + +func applyTemplateValues(assetdir, tmpRepoDir, image, imageTag string) { + in := filepath.Join(testenv.AssetPath(assetdir), "fleet.yaml") + out := filepath.Join(tmpRepoDir, "fleet.yaml") + err := testenv.Template(out, in, struct { + Image string + }{ + image, + }) + Expect(err).ToNot(HaveOccurred()) + + in = filepath.Join(testenv.AssetPath(assetdir), "deployment.yaml") + out = filepath.Join(tmpRepoDir, "deployment.yaml") + err = testenv.Template(out, in, struct { + ImageWithTag string + }{ + imageTag, + }) + Expect(err).ToNot(HaveOccurred()) +} diff --git a/e2e/testenv/githelper/git.go b/e2e/testenv/githelper/git.go index 11c2a2a07b..a90b355e39 100644 --- a/e2e/testenv/githelper/git.go +++ b/e2e/testenv/githelper/git.go @@ -13,6 +13,7 @@ import ( "github.com/go-git/go-billy/v5/osfs" "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/config" + "github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing/cache" "github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/plumbing/transport" @@ -258,6 +259,19 @@ func (g *Git) Update(repo *git.Repository) (string, error) { return h.String(), repo.Push(&po) } +// Checkouts the specified remote branch from the given repository +func (g *Git) CheckoutRemote(repo *git.Repository, branch string) error { + w, err := repo.Worktree() + if err != nil { + return err + } + _ = repo.Fetch(&git.FetchOptions{RefSpecs: []config.RefSpec{"refs/*:refs/*"}}) + if err := w.Checkout(&git.CheckoutOptions{Branch: plumbing.NewBranchReferenceName(branch)}); err != nil { + return err + } + return nil +} + func author() *object.Signature { return &object.Signature{ Name: "CI", diff --git a/internal/cmd/controller/imagescan/tagscan_job.go b/internal/cmd/controller/imagescan/tagscan_job.go index ee252b98a4..dcfc309fb7 100644 --- a/internal/cmd/controller/imagescan/tagscan_job.go +++ b/internal/cmd/controller/imagescan/tagscan_job.go @@ -303,5 +303,8 @@ func semverLatest(r string, versions []string) (string, error) { } } } + if latestVersion == nil { + return "", fmt.Errorf("no available version matching %s", r) + } return latestVersion.Original(), nil } From 33d20ad6f4018484a82d852f0942ab13c8bde89f Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Tue, 27 Feb 2024 13:43:14 +0100 Subject: [PATCH 14/16] Use curl for downloading Windows Git in Dapper the same way Rancher does it. This should prevent the following Drone Windows error when building Docker images: Invoke-WebRequest : Access to the path 'C:\git.zip' is denied. --- package/Dockerfile-windows.agent | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package/Dockerfile-windows.agent b/package/Dockerfile-windows.agent index 4a33d7d1b3..b0e421cfe8 100644 --- a/package/Dockerfile-windows.agent +++ b/package/Dockerfile-windows.agent @@ -10,8 +10,7 @@ RUN pushd c:\; \ $URL = 'https://github.com/git-for-windows/git/releases/download/v2.42.0.windows.2/MinGit-2.42.0.2-64-bit.zip'; \ \ Write-Host ('Downloading git from {0} ...' -f $URL); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -UseBasicParsing -OutFile c:\git.zip -Uri $URL; \ + curl.exe -sfL $URL -o c:\git.zip; \ \ Write-Host 'Expanding ...'; \ Expand-Archive -Force -Path c:\git.zip -DestinationPath c:\git\.; \ From c55d55fcb4fe9eb73ed9c6e534ad4b5d0c1716f1 Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Tue, 27 Feb 2024 16:25:50 +0100 Subject: [PATCH 15/16] Revert "Run Windows-based Fleet agent image as non-admin user" because this prevents downloading to C. Most likely we can fix this by using a different directory but since we are moving away from Drone soon it is not worth investigating further. This reverts commit 4f5122913039cf7fe94fbd470443b6235f52e82f. --- package/Dockerfile-windows.agent | 1 - 1 file changed, 1 deletion(-) diff --git a/package/Dockerfile-windows.agent b/package/Dockerfile-windows.agent index b0e421cfe8..6f2407e325 100644 --- a/package/Dockerfile-windows.agent +++ b/package/Dockerfile-windows.agent @@ -2,7 +2,6 @@ ARG SERVERCORE_VERSION FROM mcr.microsoft.com/windows/servercore:${SERVERCORE_VERSION} ARG RELEASES ARG VERSION -USER ContainerUser ENV RELEASES=$RELEASES ENV VERSION=$VERSION SHELL ["powershell", "-NoLogo", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] From 239cead40c013f9ca38a22625f2cbe9610bc99e2 Mon Sep 17 00:00:00 2001 From: Tim Hardeck Date: Tue, 27 Feb 2024 16:27:14 +0100 Subject: [PATCH 16/16] Revert "Use curl for downloading Windows Git in Dapper" because this change did not help. This reverts commit 33d20ad6f4018484a82d852f0942ab13c8bde89f. --- package/Dockerfile-windows.agent | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package/Dockerfile-windows.agent b/package/Dockerfile-windows.agent index 6f2407e325..3fdd762031 100644 --- a/package/Dockerfile-windows.agent +++ b/package/Dockerfile-windows.agent @@ -9,7 +9,8 @@ RUN pushd c:\; \ $URL = 'https://github.com/git-for-windows/git/releases/download/v2.42.0.windows.2/MinGit-2.42.0.2-64-bit.zip'; \ \ Write-Host ('Downloading git from {0} ...' -f $URL); \ - curl.exe -sfL $URL -o c:\git.zip; \ + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ + Invoke-WebRequest -UseBasicParsing -OutFile c:\git.zip -Uri $URL; \ \ Write-Host 'Expanding ...'; \ Expand-Archive -Force -Path c:\git.zip -DestinationPath c:\git\.; \