diff --git a/Makefile b/Makefile index 1670e636..9d565359 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ OS ?= $(shell uname -s) OS := $(shell echo $(OS) | tr '[:upper:]' '[:lower:]') K8S_LATEST_VER ?= $(shell curl -s https://dl.k8s.io/release/stable.txt) export CONTROLLER_IMG ?= $(REGISTRY)/$(IMAGE_NAME) -TAG ?= v1.11.0 +TAG ?= main .PHONY: all all: build @@ -275,6 +275,7 @@ fv-agentless: $(KUBECTL) $(GINKGO) ## Run Sveltos Controller tests using existin $(KUBECTL) apply -f test/drift-detection-mgmt_cluster_common_manifest.yaml $(KUBECTL) apply -f manifest/drift_detection_manager_rbac.yaml $(KUBECTL) apply -f manifest/deployment-agentless.yaml + $(KUBECTL) apply -f manifest/extra-role-agentless.yaml sleep 60 @echo "Waiting for projectsveltos addon-controller to be available..." $(KUBECTL) wait --for=condition=Available deployment/addon-controller -n projectsveltos --timeout=$(TIMEOUT) @@ -468,6 +469,13 @@ deploy-crds: $(KUBECTL) ## Install libsveltos CRDs $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_configurationgroups.lib.projectsveltos.io.yaml $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_configurationbundles.lib.projectsveltos.io.yaml $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_sveltoslicenses.lib.projectsveltos.io.yaml + $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_healthchecks.lib.projectsveltos.io.yaml + $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_healthcheckreports.lib.projectsveltos.io.yaml + $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_eventsources.lib.projectsveltos.io.yaml + $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_eventreports.lib.projectsveltos.io.yaml + $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_reloaders.lib.projectsveltos.io.yaml + $(KUBECTL) apply -f https://raw.githubusercontent.com/projectsveltos/libsveltos/$(TAG)/manifests/apiextensions.k8s.io_v1_customresourcedefinition_reloaderreports.lib.projectsveltos.io.yaml + deploy-projectsveltos: $(KUSTOMIZE) $(ENVSUBST) $(KUBECTL) # Load projectsveltos image into cluster diff --git a/config/default/manager_auth_proxy_patch.yaml b/config/default/manager_auth_proxy_patch.yaml index 8d22fd04..8f8dea58 100644 --- a/config/default/manager_auth_proxy_patch.yaml +++ b/config/default/manager_auth_proxy_patch.yaml @@ -35,7 +35,7 @@ spec: - --shard-key= - --capi-onboard-annotation= - "--v=5" - - "--version=v1.11.0" + - "--version=main" - "--agent-in-mgmt-cluster=false" env: - name: GOMEMLIMIT diff --git a/config/default/manager_image_patch.yaml b/config/default/manager_image_patch.yaml index 65f14ebd..22ae3140 100644 --- a/config/default/manager_image_patch.yaml +++ b/config/default/manager_image_patch.yaml @@ -7,8 +7,8 @@ spec: template: spec: initContainers: - - image: docker.io/projectsveltos/addon-controller:v1.11.0 + - image: docker.io/projectsveltos/addon-controller:main name: initialization containers: - - image: docker.io/projectsveltos/addon-controller:v1.11.0 + - image: docker.io/projectsveltos/addon-controller:main name: controller diff --git a/controllers/handlers_helm.go b/controllers/handlers_helm.go index a5d31b52..3ea6f2dc 100644 --- a/controllers/handlers_helm.go +++ b/controllers/handlers_helm.go @@ -1838,11 +1838,22 @@ func repoAddOrUpdate(settings *cli.EnvSettings, name, repoURL string, registryOp if !registry.IsOCI(entry.URL) { logger.V(logs.LogInfo).Info("non OCI. Download index file.") - _, err = chartRepo.DownloadIndexFile() - if err != nil { - logger.V(logs.LogDebug).Info( - fmt.Sprintf("Failed to download repository index: %v", err)) - return err + type downloadResult struct{ err error } + done := make(chan downloadResult, 1) + go func() { + _, e := chartRepo.DownloadIndexFile() + done <- downloadResult{e} + }() + const indexDownloadTimeout = 90 * time.Second + select { + case r := <-done: + if r.err != nil { + logger.V(logs.LogDebug).Info( + fmt.Sprintf("Failed to download repository index: %v", r.err)) + return r.err + } + case <-time.After(indexDownloadTimeout): + return fmt.Errorf("timed out downloading index for repository %s", repoURL) } } diff --git a/controllers/handlers_utils.go b/controllers/handlers_utils.go index a9f9c803..4e1b24fd 100644 --- a/controllers/handlers_utils.go +++ b/controllers/handlers_utils.go @@ -57,6 +57,7 @@ import ( "github.com/projectsveltos/libsveltos/lib/deployer" "github.com/projectsveltos/libsveltos/lib/k8s_utils" logs "github.com/projectsveltos/libsveltos/lib/logsettings" + "github.com/projectsveltos/libsveltos/lib/mgmtagent" "github.com/projectsveltos/libsveltos/lib/patcher" "github.com/projectsveltos/libsveltos/lib/pullmode" libsveltostemplate "github.com/projectsveltos/libsveltos/lib/template" @@ -1646,8 +1647,90 @@ func updateReloaderWithDeployedResources(ctx context.Context, clusterSummary *co return err } - return clusterops.UpdateReloaderWithDeployedResources(ctx, reloaderClient, profileRef, feature, resources, - removeReloader, logger) + if err := clusterops.UpdateReloaderWithDeployedResources(ctx, reloaderClient, profileRef, feature, resources, + removeReloader, logger); err != nil { + return err + } + + if getAgentInMgmtCluster() { + reloaderName := clusterops.GetReloaderName(profileRef.Name, feature) + if removeReloader { + return removeReloaderFromConfigMap(ctx, getManagementClusterClient(), + clusterSummary.Spec.ClusterNamespace, clusterSummary.Spec.ClusterName, + clusterSummary.Spec.ClusterType, reloaderName, logger) + } + return addReloaderToConfigMap(ctx, getManagementClusterClient(), + clusterSummary.Spec.ClusterNamespace, clusterSummary.Spec.ClusterName, + clusterSummary.Spec.ClusterType, reloaderName, logger) + } + + return nil +} + +// addReloaderToConfigMap records the given Reloader instance in the per-cluster ConfigMap so that +// sveltos-agent running in the management cluster knows which Reloaders apply to this cluster. +func addReloaderToConfigMap(ctx context.Context, c client.Client, clusterNamespace, clusterName string, + clusterType libsveltosv1beta1.ClusterType, reloaderName string, logger logr.Logger) error { + + configMapName := mgmtagent.GetConfigMapName(clusterName, clusterType) + key := mgmtagent.GetKeyForReloader(reloaderName) + + return retry.RetryOnConflict(retry.DefaultRetry, func() error { + currentConfigMap := &corev1.ConfigMap{} + err := c.Get(ctx, types.NamespacedName{Namespace: clusterNamespace, Name: configMapName}, currentConfigMap) + if err != nil { + if apierrors.IsNotFound(err) { + currentConfigMap = &corev1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: clusterNamespace, + Name: configMapName, + }, + Data: map[string]string{ + key: reloaderName, + }, + } + logger.V(logs.LogDebug).Info(fmt.Sprintf("creating entry %s in ConfigMap %s/%s", + key, clusterNamespace, configMapName)) + return c.Create(ctx, currentConfigMap) + } + return err + } + + if currentConfigMap.Data == nil { + currentConfigMap.Data = map[string]string{} + } + currentConfigMap.Data[key] = reloaderName + logger.V(logs.LogDebug).Info(fmt.Sprintf("updating entry %s in ConfigMap %s/%s", + key, clusterNamespace, configMapName)) + return c.Update(ctx, currentConfigMap) + }) +} + +// removeReloaderFromConfigMap removes the given Reloader instance entry from the per-cluster ConfigMap. +func removeReloaderFromConfigMap(ctx context.Context, c client.Client, clusterNamespace, clusterName string, + clusterType libsveltosv1beta1.ClusterType, reloaderName string, logger logr.Logger) error { + + configMapName := mgmtagent.GetConfigMapName(clusterName, clusterType) + key := mgmtagent.GetKeyForReloader(reloaderName) + + return retry.RetryOnConflict(retry.DefaultRetry, func() error { + currentConfigMap := &corev1.ConfigMap{} + err := c.Get(ctx, types.NamespacedName{Namespace: clusterNamespace, Name: configMapName}, currentConfigMap) + if err != nil { + if apierrors.IsNotFound(err) { + return nil + } + return err + } + + if _, ok := currentConfigMap.Data[key]; !ok { + return nil + } + delete(currentConfigMap.Data, key) + logger.V(logs.LogDebug).Info(fmt.Sprintf("removing entry %s from ConfigMap %s/%s", + key, clusterNamespace, configMapName)) + return c.Update(ctx, currentConfigMap) + }) } // Reloader instances reside in the same cluster as the sveltos-agent component. diff --git a/go.mod b/go.mod index ec6eb699..369c1ed4 100644 --- a/go.mod +++ b/go.mod @@ -8,29 +8,29 @@ require ( github.com/TwiN/go-color v1.4.1 github.com/dariubs/percent v1.0.0 github.com/docker/cli v29.5.3+incompatible - github.com/fluxcd/pkg/apis/meta v1.28.0 + github.com/fluxcd/pkg/apis/meta v1.30.0 github.com/fluxcd/pkg/http/fetch v0.25.0 github.com/fluxcd/pkg/tar v1.2.0 github.com/fluxcd/source-controller/api v1.8.5 github.com/gdexlab/go-render v1.0.1 github.com/go-logr/logr v1.4.3 github.com/hexops/gotextdiff v1.0.3 - github.com/onsi/ginkgo/v2 v2.29.0 + github.com/onsi/ginkgo/v2 v2.30.0 github.com/onsi/gomega v1.41.0 github.com/pkg/errors v0.9.1 - github.com/projectsveltos/libsveltos v1.11.0 + github.com/projectsveltos/libsveltos v1.11.1 github.com/prometheus/client_golang v1.23.2 github.com/robfig/cron v1.2.0 github.com/spf13/pflag v1.0.10 github.com/yuin/gopher-lua v1.1.2 golang.org/x/text v0.38.0 - helm.sh/helm/v4 v4.2.0 - k8s.io/api v0.36.1 - k8s.io/apiextensions-apiserver v0.36.1 - k8s.io/apimachinery v0.36.1 - k8s.io/cli-runtime v0.36.1 - k8s.io/client-go v0.36.1 - k8s.io/component-base v0.36.1 + helm.sh/helm/v4 v4.2.1 + k8s.io/api v0.36.2 + k8s.io/apiextensions-apiserver v0.36.2 + k8s.io/apimachinery v0.36.2 + k8s.io/cli-runtime v0.36.2 + k8s.io/client-go v0.36.2 + k8s.io/component-base v0.36.2 k8s.io/klog/v2 v2.140.0 k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 sigs.k8s.io/cluster-api v1.13.2 @@ -68,7 +68,7 @@ require ( github.com/extism/go-sdk v1.7.1 // indirect github.com/fatih/color v1.19.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fluxcd/cli-utils v1.2.0 // indirect + github.com/fluxcd/cli-utils v1.2.1 // indirect github.com/fluxcd/pkg/apis/acl v0.9.0 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect @@ -136,7 +136,7 @@ require ( github.com/spf13/cast v1.10.0 // indirect github.com/spf13/cobra v1.10.2 // indirect github.com/tetratelabs/wabin v0.0.0-20230304001439-f6f874872834 // indirect - github.com/tetratelabs/wazero v1.11.0 // indirect + github.com/tetratelabs/wazero v1.12.0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/zeebo/blake3 v0.2.4 // indirect @@ -151,14 +151,14 @@ require ( go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.51.0 // indirect + golang.org/x/crypto v0.53.0 // indirect golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect golang.org/x/mod v0.36.0 // indirect - golang.org/x/net v0.54.0 // indirect + golang.org/x/net v0.55.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.21.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/term v0.43.0 // indirect + golang.org/x/sys v0.46.0 // indirect + golang.org/x/term v0.44.0 // indirect golang.org/x/time v0.15.0 // indirect golang.org/x/tools v0.45.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect @@ -170,12 +170,12 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.4.0 // indirect - k8s.io/apiserver v0.36.1 // indirect + k8s.io/apiserver v0.36.2 // indirect k8s.io/cluster-bootstrap v0.36.0 // indirect k8s.io/kube-openapi v0.0.0-20260427204847-8949caaa1199 // indirect - k8s.io/kubectl v0.36.0 // indirect - k8s.io/streaming v0.36.1 // indirect - oras.land/oras-go/v2 v2.6.0 // indirect + k8s.io/kubectl v0.36.1 // indirect + k8s.io/streaming v0.36.2 // indirect + oras.land/oras-go/v2 v2.6.1 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 // indirect sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/go.sum b/go.sum index 4d110aa3..ceefb980 100644 --- a/go.sum +++ b/go.sum @@ -90,12 +90,12 @@ github.com/fatih/color v1.19.0 h1:Zp3PiM21/9Ld6FzSKyL5c/BULoe/ONr9KlbYVOfG8+w= github.com/fatih/color v1.19.0/go.mod h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fluxcd/cli-utils v1.2.0 h1:1o07pXTMxJ/XJ1GpAbLtjdXwfCUMq4Ku1OcnvJHLohI= -github.com/fluxcd/cli-utils v1.2.0/go.mod h1:d5HdTDdR5sCbsIbgtOQ7x7srKYwYeZORU6CD2yn4j/M= +github.com/fluxcd/cli-utils v1.2.1 h1:ug9CicKW7H9QXnvNDapTSKuryZvWcu4Nw7pRvQa6jDY= +github.com/fluxcd/cli-utils v1.2.1/go.mod h1:cky6M6eHvTQkoPtsuFYLIgAMYdpTCSLoor4IA6vueSw= github.com/fluxcd/pkg/apis/acl v0.9.0 h1:wBpgsKT+jcyZEcM//OmZr9RiF8klL3ebrDp2u2ThsnA= github.com/fluxcd/pkg/apis/acl v0.9.0/go.mod h1:TttNS+gocsGLwnvmgVi3/Yscwqrjc17+vhgYfqkfrV4= -github.com/fluxcd/pkg/apis/meta v1.28.0 h1:eJjMlLnfObnh23cyUB6xiIwDbgJaRU2MgfzzuilLFxI= -github.com/fluxcd/pkg/apis/meta v1.28.0/go.mod h1:3DmYMnyH3XdY8/g2gXfsVIGEd/zpcB2PEkuurv2vgHU= +github.com/fluxcd/pkg/apis/meta v1.30.0 h1:26TOd1hbamH3c5KOb/CIMGpUDB4G4JV+WCcPyUhmuaM= +github.com/fluxcd/pkg/apis/meta v1.30.0/go.mod h1:q1YjUeCmf0syhkZoMcRmP3pkBaLKFLl7g0mUvVGG4CM= github.com/fluxcd/pkg/http/fetch v0.25.0 h1:BM2sv9MygBBQ7+G+ISuTEGLVRV4GX9bpKK5UoAKLiQo= github.com/fluxcd/pkg/http/fetch v0.25.0/go.mod h1:UOpeGiEBB+I7jW8uMBdptnvWa4zlyGnGfGwUxtzM4vo= github.com/fluxcd/pkg/tar v1.2.0 h1:T6WFB5M0YRHktlrgdKNskqpdp76TVDdWTOeuWz33CFs= @@ -254,8 +254,8 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/onsi/ginkgo/v2 v2.29.0 h1:rfh+ZFjgJhYWRoIqVf3Uwx/W20yLrcrE2h2GmYVRaag= -github.com/onsi/ginkgo/v2 v2.29.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= +github.com/onsi/ginkgo/v2 v2.30.0 h1:zxM/9XneXFIy64j6/wAmBIX4zRC7Hu6U8XFNZvDnCQc= +github.com/onsi/ginkgo/v2 v2.30.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= github.com/onsi/gomega v1.41.0 h1:OwKp4pXNgVxf6sCplzYo794OFNuoL2q2SBMU5NSWOjA= github.com/onsi/gomega v1.41.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= github.com/opencontainers/go-digest v1.0.1-0.20260423074420-acc66fb5367c h1:dTJQx6HDrRNmA3p5JlfVYw81R3g2RfWdG0+ZBaJeqcc= @@ -273,8 +273,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= -github.com/projectsveltos/libsveltos v1.11.0 h1:E67QyQMj2VNTGisBQJI0AYenR9OFKUK3v1OSFu/9jCc= -github.com/projectsveltos/libsveltos v1.11.0/go.mod h1:B9tm32CB/AKIqmy/J02NmIUiwatec3NR1RcW5W/v0UM= +github.com/projectsveltos/libsveltos v1.11.1 h1:7Hjs7+6MEYgPzLjeYZkaRFZVPg1hJqOxml477Q6n23o= +github.com/projectsveltos/libsveltos v1.11.1/go.mod h1:B9tm32CB/AKIqmy/J02NmIUiwatec3NR1RcW5W/v0UM= github.com/projectsveltos/lua-utils/glua-json v0.0.0-20251212200258-2b3cdcb7c0f5 h1:khnc+994UszxZYu69J+R5FKiLA/Nk1JQj0EYAkwTWz0= github.com/projectsveltos/lua-utils/glua-json v0.0.0-20251212200258-2b3cdcb7c0f5/go.mod h1:yVL8KQFa9tmcxgwl9nwIMtKgtmIVC1zaFRSCfOwYvPY= github.com/projectsveltos/lua-utils/glua-runes v0.0.0-20251212200258-2b3cdcb7c0f5 h1:YbsebwRwTRhV8QacvEAdFqxcxHdeu7JTVtsBovbkgos= @@ -341,8 +341,8 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/tetratelabs/wabin v0.0.0-20230304001439-f6f874872834 h1:ZF+QBjOI+tILZjBaFj3HgFonKXUcwgJ4djLb6i42S3Q= github.com/tetratelabs/wabin v0.0.0-20230304001439-f6f874872834/go.mod h1:m9ymHTgNSEjuxvw8E7WWe4Pl4hZQHXONY8wE6dMLaRk= -github.com/tetratelabs/wazero v1.11.0 h1:+gKemEuKCTevU4d7ZTzlsvgd1uaToIDtlQlmNbwqYhA= -github.com/tetratelabs/wazero v1.11.0/go.mod h1:eV28rsN8Q+xwjogd7f4/Pp4xFxO7uOGbLcD/LzB1wiU= +github.com/tetratelabs/wazero v1.12.0 h1:DuWcpNu/FzgEXgGBDp8J1Spc+CWOvvtvVyjKlaZopYU= +github.com/tetratelabs/wazero v1.12.0/go.mod h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -423,8 +423,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI= -golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8= +golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= +golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -433,8 +433,8 @@ golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/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.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -447,10 +447,10 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= -golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= +golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= 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.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= @@ -492,36 +492,36 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= -helm.sh/helm/v4 v4.2.0 h1:J+0TmTtPK2NuS6z9Z2WOcIX0nGGJylokEZLt0fi0X4U= -helm.sh/helm/v4 v4.2.0/go.mod h1:sDQRGAct/I/ogTvOX8QqE/8bBWuLH4BHbB3QFL5G3do= -k8s.io/api v0.36.1 h1:XbL/EMj8K2aJpJtePmqUyQMsM0D4QI2pvl7YKJ20FTY= -k8s.io/api v0.36.1/go.mod h1:KOWo4ey3TINlXjeHVuwB3i+tXXnu+UcwFBHlI/9dvEo= -k8s.io/apiextensions-apiserver v0.36.1 h1:6JfYmPUsuUIHuN+3QxutXYWj492RqF5fBSx67GYK5Ks= -k8s.io/apiextensions-apiserver v0.36.1/go.mod h1:pLzZin90riwisdzKwv/GoTwENooytoIx5zWJb4Hkby8= -k8s.io/apimachinery v0.36.1 h1:G63Gjx2W+q0YD+72Vo8oY0nDnePVwnuzTmmy5ENrVSA= -k8s.io/apimachinery v0.36.1/go.mod h1:ibYOR00vW/I1kzvi5SF0dRuJ52BvKtfvRdOn35GPQ+8= -k8s.io/apiserver v0.36.1 h1:iMS5V+rPUertv5P9RaqJgmHHTuh4quWpoxchvMUY+JY= -k8s.io/apiserver v0.36.1/go.mod h1:Cby1PbLWztu0GDOxoO6iFOyyqIsziHNEW+w9zVQ22Kw= -k8s.io/cli-runtime v0.36.1 h1:yuC/BGnnj1YYPh6D1P+pZnzinCs6DvMq86yAeNqoqzM= -k8s.io/cli-runtime v0.36.1/go.mod h1:ZQWHGt8xAF7KnviB79vX0lYNyUUqKIpU+LQg7exuFAw= -k8s.io/client-go v0.36.1 h1:FN/K8QIT2CEDt+2WB2HnWrUANZ50AP5GII43/SP2JR0= -k8s.io/client-go v0.36.1/go.mod h1:s6rAnCtTGYDQnpNjEhSaISV+2O8jwruZ6m3QOYBFbtU= +helm.sh/helm/v4 v4.2.1 h1:esMHK7az2udPJvsRLA1EsxB7lJwqXcsb3biYnlFIjrg= +helm.sh/helm/v4 v4.2.1/go.mod h1:dp3ihfy1AhCLKANDaPETmVWhqPkOmwvJtpK/biHfopE= +k8s.io/api v0.36.2 h1:TF6YDLIzKfccK7cq9YpTcGX8TJmEkHVRv78DM51fRYY= +k8s.io/api v0.36.2/go.mod h1:F4LbMO4brjZYh7yFkXWhynSvtB7YauxV4c+HHkNRGNg= +k8s.io/apiextensions-apiserver v0.36.2 h1:3O5gqOj/dt2XWWbpMe+TXWpE9yU6pjM/tXxtHHJT/K4= +k8s.io/apiextensions-apiserver v0.36.2/go.mod h1:cL1tBWe8XSaP1H30iWKGo7hf6iAUUUJPEU70dskmAnA= +k8s.io/apimachinery v0.36.2 h1:0PE/W/WNy1UX61NLbXY5TMbJ6UwLL6E6lAPkYrKFxbQ= +k8s.io/apimachinery v0.36.2/go.mod h1:fvf/HOLXq9RId0rnDIbN1OEBvHXdQbLMM8nu0LcBUf4= +k8s.io/apiserver v0.36.2 h1:6vMnkmHZPeBloNkHUhmZYq7Ylv8WIB8xjyEl+eSt26E= +k8s.io/apiserver v0.36.2/go.mod h1:9PoQ2ikCytrZyZg11mGhLEF5m8Rgsb5FJmYJ4Wvnl1k= +k8s.io/cli-runtime v0.36.2 h1:CconTvEeV4DJs4ZX3HQKCFbFRGsm6OtuBM9yjmMP2VM= +k8s.io/cli-runtime v0.36.2/go.mod h1:LddcjiMf4YlnHO7c1Y7rEtDqL84FyiYVLco7V679GUU= +k8s.io/client-go v0.36.2 h1:bfgxmFKc9CgqsgX4xKLAAdmTQlWee7Ob/HlDOrJ5TBI= +k8s.io/client-go v0.36.2/go.mod h1:1vgO4OAlfPnoLcb+Rze2GF5rAr14w8qjrYMoyXJzQj0= k8s.io/cluster-bootstrap v0.36.0 h1:qh2yyP86NmlHaGFn/xXNv+sStL+kRaGE2125DeP6H78= k8s.io/cluster-bootstrap v0.36.0/go.mod h1:acf/PNjOL4lj0E5SM57yiiBTT8amthsyYs/KLNvEc4A= -k8s.io/component-base v0.36.1 h1:iG6GsELftXqTNG9HG6kiVjatSgAw1sf5pJ6R5a6N0kA= -k8s.io/component-base v0.36.1/go.mod h1:nf9XPlntRdqO6WMeEWAA5F93Y4ICZQdeT9GeqLDB3JI= +k8s.io/component-base v0.36.2 h1:Z0VH80O7Ng0HDZnZj3WRR3urEGa0kTwmO8CwEwjVK1w= +k8s.io/component-base v0.36.2/go.mod h1:mGfFOA7Gwpdm1VW2cwSQYbiDIlz8GD2WGwH88QSeCyA= k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc= k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0= k8s.io/kube-openapi v0.0.0-20260427204847-8949caaa1199 h1:sWu4Td5mgJlwunsUydnhKEAfNUHM7hm1wfKEQmD7G5c= k8s.io/kube-openapi v0.0.0-20260427204847-8949caaa1199/go.mod h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0= -k8s.io/kubectl v0.36.0 h1:hEGr8NvIm2Wjqs2Xy48Uzmvo6lpHdGKlLyMvau2gTms= -k8s.io/kubectl v0.36.0/go.mod h1:iDe8aV5BEi45W8k+5n71I2pJ/nwE0PHDu+/2cejzYoo= -k8s.io/streaming v0.36.1 h1:L+K68n4Gg940BGNNYtUBvL1WTLL0YnKT3s+P1MNAmR4= -k8s.io/streaming v0.36.1/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= +k8s.io/kubectl v0.36.1 h1:96HqS9twIdHM0MlJLTwbo14b9kUKPkOzZ4tlRDLv4qI= +k8s.io/kubectl v0.36.1/go.mod h1:/DGPAIewKsFWF9VFgGvkPhao2Ev4SNuE3BioZo8yPbk= +k8s.io/streaming v0.36.2 h1:NSKthPPg9UFSKsRauVJUVGH2Dvn8fhKmY4qrMkw/p98= +k8s.io/streaming v0.36.2/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s= k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 h1:wU4tMEhLGgIbLvXQb1cfN+EcM0wf7zC6CPF+C79jroc= k8s.io/utils v0.0.0-20260507154919-ff6756f316d2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk= -oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc= -oras.land/oras-go/v2 v2.6.0/go.mod h1:magiQDfG6H1O9APp+rOsvCPcW1GD2MM7vgnKY0Y+u1o= +oras.land/oras-go/v2 v2.6.1 h1:bonOEkjLfp8tt6qXWRRWP6p1F+9octchOf2EqnWB4Zs= +oras.land/oras-go/v2 v2.6.1/go.mod h1:dhtFrFOuZuDtAVeZ9FUnaa5zfzplG3ZnFX9/uH1J/Yk= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= sigs.k8s.io/cluster-api v1.13.2 h1:NVdbVLmh6IyfdtENQAi80AijJf/FjfQLODz/6caDjlc= diff --git a/hack/tools/go.mod b/hack/tools/go.mod index a4acaabd..3826855a 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -4,10 +4,10 @@ go 1.26.4 require ( github.com/a8m/envsubst v1.4.3 - github.com/onsi/ginkgo/v2 v2.29.0 + github.com/onsi/ginkgo/v2 v2.30.0 golang.org/x/oauth2 v0.36.0 - golang.org/x/tools v0.45.0 - k8s.io/client-go v0.36.1 + golang.org/x/tools v0.46.0 + k8s.io/client-go v0.36.2 sigs.k8s.io/controller-tools v0.21.0 ) @@ -48,21 +48,21 @@ require ( github.com/x448/float16 v0.8.4 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/mod v0.36.0 // indirect - golang.org/x/net v0.54.0 // indirect - golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.44.0 // indirect - golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 // indirect - golang.org/x/term v0.43.0 // indirect - golang.org/x/text v0.37.0 // indirect + golang.org/x/mod v0.37.0 // indirect + golang.org/x/net v0.56.0 // indirect + golang.org/x/sync v0.21.0 // indirect + golang.org/x/sys v0.46.0 // indirect + golang.org/x/telemetry v0.0.0-20260610154732-fb80ec83bdd9 // indirect + golang.org/x/term v0.44.0 // indirect + golang.org/x/text v0.38.0 // indirect golang.org/x/time v0.15.0 // indirect google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.36.1 // indirect + k8s.io/api v0.36.2 // indirect k8s.io/apiextensions-apiserver v0.36.0 // indirect - k8s.io/apimachinery v0.36.1 // indirect + k8s.io/apimachinery v0.36.2 // indirect k8s.io/code-generator v0.36.0 // indirect k8s.io/gengo/v2 v2.0.0-20260408192533-25e2208e0dc3 // indirect k8s.io/klog/v2 v2.140.0 // indirect diff --git a/hack/tools/go.sum b/hack/tools/go.sum index 7dd53e0e..c43d7a3d 100644 --- a/hack/tools/go.sum +++ b/hack/tools/go.sum @@ -124,8 +124,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.29.0 h1:rfh+ZFjgJhYWRoIqVf3Uwx/W20yLrcrE2h2GmYVRaag= -github.com/onsi/ginkgo/v2 v2.29.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= +github.com/onsi/ginkgo/v2 v2.30.0 h1:zxM/9XneXFIy64j6/wAmBIX4zRC7Hu6U8XFNZvDnCQc= +github.com/onsi/ginkgo/v2 v2.30.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= github.com/onsi/gomega v1.40.0 h1:Vtol0e1MghCD2ZVIilPDIg44XSL9l2QAn8ZNaljWcJc= github.com/onsi/gomega v1.40.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -194,27 +194,27 @@ go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0= golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= -golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= -golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= -golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w= -golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ= +golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= +golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= +golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= +golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= -golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= -golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= +golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ= -golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6 h1:HjU6IWBiAgRIdAJ9/y1rwCn+UELEmwV+VsTLzj/W4sE= -golang.org/x/telemetry v0.0.0-20260508192327-42602be52be6/go.mod h1:Eqhaxk/wZsWEH8CRxLwj6xzEJbz7k1EFGqx7nyCoabE= -golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= -golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= -golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= -golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= +golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= +golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20260610154732-fb80ec83bdd9 h1:FjUup8XrRy7lv+XHONi6KKUSizeF2NnVrTnz/HhbohQ= +golang.org/x/telemetry v0.0.0-20260610154732-fb80ec83bdd9/go.mod h1:3AWMyWHS+caVoiEXpiq6+tzKA40J4vQT3MYr80ZtQpc= +golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc= +golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y= +golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= +golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= -golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= -golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= +golang.org/x/tools v0.46.0 h1:7jTurBkPZu4moS/Uy4OQT1M+QBlsj3wejyZwsT8Z7rk= +golang.org/x/tools v0.46.0/go.mod h1:FrD85F8l+NWL+9XWBSyVSHO6Ne4jutsfIFba7AWQ5Ys= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= @@ -241,16 +241,16 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 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.36.1 h1:XbL/EMj8K2aJpJtePmqUyQMsM0D4QI2pvl7YKJ20FTY= -k8s.io/api v0.36.1/go.mod h1:KOWo4ey3TINlXjeHVuwB3i+tXXnu+UcwFBHlI/9dvEo= +k8s.io/api v0.36.2 h1:TF6YDLIzKfccK7cq9YpTcGX8TJmEkHVRv78DM51fRYY= +k8s.io/api v0.36.2/go.mod h1:F4LbMO4brjZYh7yFkXWhynSvtB7YauxV4c+HHkNRGNg= k8s.io/apiextensions-apiserver v0.36.0 h1:Wt7E8J+VBCbj4FjiBfDTK/neXDDjyJVJc7xfuOHImZ0= k8s.io/apiextensions-apiserver v0.36.0/go.mod h1:kGDjH0msuiIB3tgsYRV0kS9GqpMYMUsQ3GHv7TApyug= -k8s.io/apimachinery v0.36.1 h1:G63Gjx2W+q0YD+72Vo8oY0nDnePVwnuzTmmy5ENrVSA= -k8s.io/apimachinery v0.36.1/go.mod h1:ibYOR00vW/I1kzvi5SF0dRuJ52BvKtfvRdOn35GPQ+8= +k8s.io/apimachinery v0.36.2 h1:0PE/W/WNy1UX61NLbXY5TMbJ6UwLL6E6lAPkYrKFxbQ= +k8s.io/apimachinery v0.36.2/go.mod h1:fvf/HOLXq9RId0rnDIbN1OEBvHXdQbLMM8nu0LcBUf4= k8s.io/apiserver v0.36.0 h1:Jg5OFAENUACByUCg15CmhZAYrr5ZyJ+jodyA1mHl3YE= k8s.io/apiserver v0.36.0/go.mod h1:mHvwdHf+qKEm+1/hYm756SV+oREOKSPnsjagOpx6Vho= -k8s.io/client-go v0.36.1 h1:FN/K8QIT2CEDt+2WB2HnWrUANZ50AP5GII43/SP2JR0= -k8s.io/client-go v0.36.1/go.mod h1:s6rAnCtTGYDQnpNjEhSaISV+2O8jwruZ6m3QOYBFbtU= +k8s.io/client-go v0.36.2 h1:bfgxmFKc9CgqsgX4xKLAAdmTQlWee7Ob/HlDOrJ5TBI= +k8s.io/client-go v0.36.2/go.mod h1:1vgO4OAlfPnoLcb+Rze2GF5rAr14w8qjrYMoyXJzQj0= k8s.io/code-generator v0.36.0 h1:XWAkrhnArm0VWMmSFO7kyB+wE2LROwep7hEH0GPGkqA= k8s.io/code-generator v0.36.0/go.mod h1:Tr2UhfBRdlyRoadfob9aPCmmGe8PUs5XPK9MEJ2nx+w= k8s.io/component-base v0.36.0 h1:hFjEktssxiJhrK1zfybkH4kJOi8iZuF+mIDCqS5+jRo= diff --git a/lib/clusterops/reloader.go b/lib/clusterops/reloader.go index 518371cf..0010cc72 100644 --- a/lib/clusterops/reloader.go +++ b/lib/clusterops/reloader.go @@ -137,7 +137,8 @@ func deployReloaderInstance(ctx context.Context, reloaderClient client.Client, return reloaderClient.Update(ctx, reloader) } -func getReloaderName(profileName string, feature libsveltosv1beta1.FeatureID) string { +// GetReloaderName returns the name used for a Reloader instance created for a given profile and feature. +func GetReloaderName(profileName string, feature libsveltosv1beta1.FeatureID) string { return fmt.Sprintf("%s--%s", profileName, strings.ToLower(string(feature))) } @@ -146,7 +147,7 @@ func getReloader(profileName string, feature libsveltosv1beta1.FeatureID, return &libsveltosv1beta1.Reloader{ ObjectMeta: metav1.ObjectMeta{ - Name: getReloaderName(profileName, feature), + Name: GetReloaderName(profileName, feature), Labels: getReloaderLabels(profileName, feature), Annotations: getReloaderAnnotations(), }, diff --git a/manifest/deployment-agentless.yaml b/manifest/deployment-agentless.yaml index 4ec2aad9..f9834fbe 100644 --- a/manifest/deployment-agentless.yaml +++ b/manifest/deployment-agentless.yaml @@ -26,7 +26,7 @@ spec: - --shard-key= - --capi-onboard-annotation= - --v=5 - - --version=v1.11.0 + - --version=main - --agent-in-mgmt-cluster=true command: - /manager @@ -43,7 +43,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/addon-controller:v1.11.0 + image: docker.io/projectsveltos/addon-controller:main livenessProbe: failureThreshold: 3 httpGet: @@ -101,7 +101,7 @@ spec: fieldPath: metadata.namespace - name: IS_INITIALIZATION value: "true" - image: docker.io/projectsveltos/addon-controller:v1.11.0 + image: docker.io/projectsveltos/addon-controller:main name: initialization securityContext: allowPrivilegeEscalation: false diff --git a/manifest/deployment-shard.yaml b/manifest/deployment-shard.yaml index 7437d710..afc418ad 100644 --- a/manifest/deployment-shard.yaml +++ b/manifest/deployment-shard.yaml @@ -26,7 +26,7 @@ spec: - --shard-key={{.SHARD}} - --capi-onboard-annotation= - --v=5 - - --version=v1.11.0 + - --version=main - --agent-in-mgmt-cluster=false command: - /manager @@ -43,7 +43,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/addon-controller:v1.11.0 + image: docker.io/projectsveltos/addon-controller:main livenessProbe: failureThreshold: 3 httpGet: @@ -101,7 +101,7 @@ spec: fieldPath: metadata.namespace - name: IS_INITIALIZATION value: "true" - image: docker.io/projectsveltos/addon-controller:v1.11.0 + image: docker.io/projectsveltos/addon-controller:main name: initialization securityContext: allowPrivilegeEscalation: false diff --git a/manifest/extra-role-agentless.yaml b/manifest/extra-role-agentless.yaml new file mode 100644 index 00000000..281a1d74 --- /dev/null +++ b/manifest/extra-role-agentless.yaml @@ -0,0 +1,34 @@ +# In agentless mode sveltos-agent runs in the management cluster, one instance per +# managed cluster. To tell each agent which Reloader instances apply to its cluster, +# addon-controller writes a per-cluster ConfigMap in the cluster's namespace +# (clusterNamespace). That namespace varies across clusters, so a cluster-scoped +# rule is required instead of a namespace-scoped Role. +# +# This ClusterRole and ClusterRoleBinding must be applied when deploying Sveltos +# in agentless mode. They are not part of the default installation because the +# write permission on ConfigMaps cluster-wide is not needed in standard +# (non-agentless) deployments. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: addon-controller-role-agentless +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - "*" +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: addon-controller-rolebinding-agentless +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: addon-controller-role-agentless +subjects: +- kind: ServiceAccount + name: addon-controller + namespace: projectsveltos diff --git a/manifest/manifest.yaml b/manifest/manifest.yaml index 3098a054..38aa4f2e 100644 --- a/manifest/manifest.yaml +++ b/manifest/manifest.yaml @@ -10162,7 +10162,7 @@ spec: - --shard-key= - --capi-onboard-annotation= - --v=5 - - --version=v1.11.0 + - --version=main - --agent-in-mgmt-cluster=false command: - /manager @@ -10179,7 +10179,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/addon-controller:v1.11.0 + image: docker.io/projectsveltos/addon-controller:main livenessProbe: failureThreshold: 3 httpGet: @@ -10237,7 +10237,7 @@ spec: fieldPath: metadata.namespace - name: IS_INITIALIZATION value: "true" - image: docker.io/projectsveltos/addon-controller:v1.11.0 + image: docker.io/projectsveltos/addon-controller:main name: initialization securityContext: allowPrivilegeEscalation: false diff --git a/pkg/drift-detection/drift-detection-manager-in-mgmt-cluster.go b/pkg/drift-detection/drift-detection-manager-in-mgmt-cluster.go index c47d7816..1485d56d 100644 --- a/pkg/drift-detection/drift-detection-manager-in-mgmt-cluster.go +++ b/pkg/drift-detection/drift-detection-manager-in-mgmt-cluster.go @@ -44,7 +44,7 @@ spec: - --cluster-type= - --current-cluster=management-cluster - --run-mode=do-not-send-updates - - --version=v1.11.0 + - --version=main command: - /manager env: @@ -60,7 +60,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/drift-detection-manager@sha256:3fc2ea2b3814de27923d90c4a6b68e05afddd6e84b344d8b8d6866cb6815965d + image: docker.io/projectsveltos/drift-detection-manager@sha256:1d7b6de20fd97634a21cc27d087fa58266fa5e2dc78a113e87cd911a7c7a9f69 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/drift-detection/drift-detection-manager-in-mgmt-cluster.yaml b/pkg/drift-detection/drift-detection-manager-in-mgmt-cluster.yaml index dd558c60..b1a14315 100644 --- a/pkg/drift-detection/drift-detection-manager-in-mgmt-cluster.yaml +++ b/pkg/drift-detection/drift-detection-manager-in-mgmt-cluster.yaml @@ -26,7 +26,7 @@ spec: - --cluster-type= - --current-cluster=management-cluster - --run-mode=do-not-send-updates - - --version=v1.11.0 + - --version=main command: - /manager env: @@ -42,7 +42,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/drift-detection-manager@sha256:3fc2ea2b3814de27923d90c4a6b68e05afddd6e84b344d8b8d6866cb6815965d + image: docker.io/projectsveltos/drift-detection-manager@sha256:1d7b6de20fd97634a21cc27d087fa58266fa5e2dc78a113e87cd911a7c7a9f69 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/drift-detection/drift-detection-manager.go b/pkg/drift-detection/drift-detection-manager.go index 1ddb82ff..dfb85c67 100644 --- a/pkg/drift-detection/drift-detection-manager.go +++ b/pkg/drift-detection/drift-detection-manager.go @@ -146,7 +146,7 @@ spec: - --cluster-type= - --current-cluster=managed-cluster - --run-mode=do-not-send-updates - - --version=v1.11.0 + - --version=main command: - /manager env: @@ -162,7 +162,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/drift-detection-manager@sha256:3fc2ea2b3814de27923d90c4a6b68e05afddd6e84b344d8b8d6866cb6815965d + image: docker.io/projectsveltos/drift-detection-manager@sha256:1d7b6de20fd97634a21cc27d087fa58266fa5e2dc78a113e87cd911a7c7a9f69 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/drift-detection/drift-detection-manager.yaml b/pkg/drift-detection/drift-detection-manager.yaml index 1d087c48..2ebca7a1 100644 --- a/pkg/drift-detection/drift-detection-manager.yaml +++ b/pkg/drift-detection/drift-detection-manager.yaml @@ -128,7 +128,7 @@ spec: - --cluster-type= - --current-cluster=managed-cluster - --run-mode=do-not-send-updates - - --version=v1.11.0 + - --version=main command: - /manager env: @@ -144,7 +144,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/drift-detection-manager@sha256:3fc2ea2b3814de27923d90c4a6b68e05afddd6e84b344d8b8d6866cb6815965d + image: docker.io/projectsveltos/drift-detection-manager@sha256:1d7b6de20fd97634a21cc27d087fa58266fa5e2dc78a113e87cd911a7c7a9f69 livenessProbe: failureThreshold: 3 httpGet: diff --git a/test/fv/auto_deploy_dependencies_test.go b/test/fv/auto_deploy_dependencies_test.go index bc7ea359..fa255560 100644 --- a/test/fv/auto_deploy_dependencies_test.go +++ b/test/fv/auto_deploy_dependencies_test.go @@ -105,7 +105,7 @@ var _ = Describe("Feature", func() { RepositoryURL: kyvernoRepoURL, RepositoryName: kyvernoNamespace, ChartName: kyvernoChartName, - ChartVersion: kyvernoVersion352, + ChartVersion: kyvernoVersion372, ReleaseName: kyvernoLatestRelease, ReleaseNamespace: kyvernoNamespace, HelmChartAction: configv1beta1.HelmChartActionInstall, @@ -167,7 +167,7 @@ var _ = Describe("Feature", func() { kindWorkloadCluster.GetNamespace(), kindWorkloadCluster.GetName(), getClusterType()) charts := []configv1beta1.Chart{ - {ReleaseName: kyvernoLatestRelease, ChartVersion: kyvernoVersion352S, Namespace: kyvernoNamespace}, + {ReleaseName: kyvernoLatestRelease, ChartVersion: kyvernoVersion372S, Namespace: kyvernoNamespace}, } verifyClusterConfiguration(configv1beta1.ClusterProfileKind, helmClusterProfile.Name, helmClusterSummary.Spec.ClusterNamespace, helmClusterSummary.Spec.ClusterName, libsveltosv1beta1.FeatureHelm, diff --git a/test/fv/drift_test.go b/test/fv/drift_test.go index 9a0ab0a9..5c6db267 100644 --- a/test/fv/drift_test.go +++ b/test/fv/drift_test.go @@ -97,8 +97,8 @@ const ( kyvernoNamespace = "kyverno" admissionControllerDeplName = "kyverno-admission-controller" cleanupControllerDeplName = "kyverno-cleanup-controller" - cleanupImage = "reg.kyverno.io/kyverno/cleanup-controller:v1.15.1" - admissionImage = "reg.kyverno.io/kyverno/kyverno:v1.15.1" + cleanupImage = "reg.kyverno.io/kyverno/cleanup-controller:v1.17.1" + admissionImage = "reg.kyverno.io/kyverno/kyverno:v1.17.1" ) var _ = Describe("Helm", Serial, func() { @@ -181,7 +181,7 @@ var _ = Describe("Helm", Serial, func() { RepositoryURL: kyvernoRepoURL, RepositoryName: kyvernoNamespace, ChartName: kyvernoChartName, - ChartVersion: kyvernoVersion352, + ChartVersion: kyvernoVersion372, ReleaseName: kyvernoLatestRelease, ReleaseNamespace: kyvernoNamespace, HelmChartAction: configv1beta1.HelmChartActionInstall, @@ -322,7 +322,7 @@ reportsController: verifyFeatureStatusIsProvisioned(kindWorkloadCluster.GetNamespace(), clusterSummary.Name, libsveltosv1beta1.FeatureHelm) charts := []configv1beta1.Chart{ - {ReleaseName: kyvernoLatestRelease, ChartVersion: kyvernoVersion352S, Namespace: kyvernoNamespace}, + {ReleaseName: kyvernoLatestRelease, ChartVersion: kyvernoVersion372S, Namespace: kyvernoNamespace}, } verifyClusterConfiguration(configv1beta1.ClusterProfileKind, clusterProfile.Name, @@ -358,7 +358,7 @@ reportsController: types.NamespacedName{Namespace: kyvernoNamespace, Name: cleanupControllerDeplName}, depl)).To(Succeed()) for i := range depl.Spec.Template.Spec.Containers { if depl.Spec.Template.Spec.Containers[i].Name == kyvernoCleanupImageName { - By("Kyverno image is set to v1.15.1") + By("Kyverno image is set to v1.17.1") Expect(depl.Spec.Template.Spec.Containers[i].Image).To(Equal(cleanupImage)) } } @@ -373,12 +373,12 @@ reportsController: } for i := range depl.Spec.Template.Spec.Containers { if depl.Spec.Template.Spec.Containers[i].Name == kyvernoCleanupImageName { - return depl.Spec.Template.Spec.Containers[i].Image == "reg.kyverno.io/kyverno/cleanup-controller:v1.15.2" + return depl.Spec.Template.Spec.Containers[i].Image == "reg.kyverno.io/kyverno/cleanup-controller:v1.17.2" } } return false }, timeout, pollingInterval).Should(BeTrue()) - By("Kyverno image is reset to v1.15.2") + By("Kyverno image is reset to v1.17.2") Byf("Verifying ClusterSummary %s status is set to Deployed for Helm feature", clusterSummary.Name) verifyFeatureStatusIsProvisioned(kindWorkloadCluster.GetNamespace(), clusterSummary.Name, libsveltosv1beta1.FeatureHelm) @@ -404,7 +404,7 @@ reportsController: } for i := range depl.Spec.Template.Spec.Containers { if depl.Spec.Template.Spec.Containers[i].Name == kyvernoNamespace { - By("Kyverno image is set to v1.15.1") + By("Kyverno image is set to v1.17.1") return depl.Spec.Template.Spec.Containers[i].Image == admissionImage } } @@ -429,7 +429,7 @@ reportsController: } return false }, timeout/4, pollingInterval).Should(BeTrue()) - By("Kyverno image is NOT reset to v1.15.2") + By("Kyverno image is NOT reset to v1.17.2") By("Change values section") Expect(k8sClient.Get(context.TODO(), @@ -440,7 +440,7 @@ reportsController: RepositoryURL: kyvernoRepoURL, RepositoryName: kyvernoNamespace, ChartName: kyvernoChartName, - ChartVersion: kyvernoVersion351, + ChartVersion: kyvernoVersion371, ReleaseName: kyvernoLatestRelease, ReleaseNamespace: kyvernoNamespace, HelmChartAction: configv1beta1.HelmChartActionInstall, diff --git a/test/fv/helm_failure_message_test.go b/test/fv/helm_failure_message_test.go index fd60004d..22e8a3a7 100644 --- a/test/fv/helm_failure_message_test.go +++ b/test/fv/helm_failure_message_test.go @@ -131,7 +131,7 @@ var _ = Describe("Helm with conflicts", func() { for i := range currentClusterSummary.Status.HelmReleaseSummaries { if currentClusterSummary.Status.HelmReleaseSummaries[i].FailureMessage != nil && - *currentClusterSummary.Status.HelmReleaseSummaries[i].FailureMessage == "context deadline exceeded" { + *currentClusterSummary.Status.HelmReleaseSummaries[i].FailureMessage != "" { return true } } diff --git a/test/fv/helm_test.go b/test/fv/helm_test.go index fa8f427f..bf6d4ba4 100644 --- a/test/fv/helm_test.go +++ b/test/fv/helm_test.go @@ -82,9 +82,6 @@ var _ = Describe("Helm", func() { ReleaseName: kyvernoLatestRelease, ReleaseNamespace: kyvernoNamespace, HelmChartAction: configv1beta1.HelmChartActionInstall, - Options: &configv1beta1.HelmOptions{ - RunTests: true, - }, }, { RepositoryURL: wildflyRepoURL, @@ -152,7 +149,7 @@ var _ = Describe("Helm", func() { verifyFeatureStatusIsProvisioned(kindWorkloadCluster.GetNamespace(), clusterSummary.Name, libsveltosv1beta1.FeatureHelm) charts := []configv1beta1.Chart{ - {ReleaseName: kyvernoLatestRelease, ChartVersion: "3.7.1", Namespace: kyvernoNamespace}, + {ReleaseName: kyvernoLatestRelease, ChartVersion: kyvernoVersion371S, Namespace: kyvernoNamespace}, {ReleaseName: wildflyName, ChartVersion: wildflyVersion, Namespace: wildflyName}, } diff --git a/test/fv/reloader_test.go b/test/fv/reloader_test.go index 768696eb..51f8e474 100644 --- a/test/fv/reloader_test.go +++ b/test/fv/reloader_test.go @@ -32,6 +32,7 @@ import ( configv1beta1 "github.com/projectsveltos/addon-controller/api/v1beta1" "github.com/projectsveltos/addon-controller/lib/clusterops" libsveltosv1beta1 "github.com/projectsveltos/libsveltos/api/v1beta1" + "github.com/projectsveltos/libsveltos/lib/mgmtagent" ) const ( @@ -157,6 +158,27 @@ var _ = Describe("Reloader", func() { Name: deploymentName, }, )) + + reloaderName := getReloaderName(clusterProfile.Name) + reloaderKey := mgmtagent.GetKeyForReloader(reloaderName) + configMapName := mgmtagent.GetConfigMapName(kindWorkloadCluster.GetName(), + libsveltosv1beta1.ClusterType(getClusterType())) + + Byf("Verifying per-cluster ConfigMap %s/%s contains Reloader entry %s", + kindWorkloadCluster.GetNamespace(), configMapName, reloaderKey) + Eventually(func() bool { + perClusterCM := &corev1.ConfigMap{} + err := k8sClient.Get(context.TODO(), + types.NamespacedName{ + Namespace: kindWorkloadCluster.GetNamespace(), + Name: configMapName, + }, perClusterCM) + if err != nil { + return false + } + v, ok := perClusterCM.Data[reloaderKey] + return ok && v == reloaderName + }, timeout, pollingInterval).Should(BeTrue()) } else { Byf("Verifying Reloader is present in the managed cluster") currentReloader := &libsveltosv1beta1.Reloader{} @@ -185,6 +207,30 @@ var _ = Describe("Reloader", func() { currentReloader) return err != nil && apierrors.IsNotFound(err) }, timeout, pollingInterval).Should(BeTrue()) + + reloaderName := getReloaderName(clusterProfile.Name) + reloaderKey := mgmtagent.GetKeyForReloader(reloaderName) + configMapName := mgmtagent.GetConfigMapName(kindWorkloadCluster.GetName(), + libsveltosv1beta1.ClusterType(getClusterType())) + + Byf("Verifying per-cluster ConfigMap %s/%s no longer contains Reloader entry %s", + kindWorkloadCluster.GetNamespace(), configMapName, reloaderKey) + Eventually(func() bool { + perClusterCM := &corev1.ConfigMap{} + err = k8sClient.Get(context.TODO(), + types.NamespacedName{ + Namespace: kindWorkloadCluster.GetNamespace(), + Name: configMapName, + }, perClusterCM) + if apierrors.IsNotFound(err) { + return true + } + if err != nil { + return false + } + _, ok := perClusterCM.Data[reloaderKey] + return !ok + }, timeout, pollingInterval).Should(BeTrue()) } else { Byf("Verifying Reloader is removed from the workload cluster") Eventually(func() bool { diff --git a/test/fv/test_constants_test.go b/test/fv/test_constants_test.go index c518f3a4..ef2d1d56 100644 --- a/test/fv/test_constants_test.go +++ b/test/fv/test_constants_test.go @@ -20,9 +20,10 @@ const ( // Kyverno chart details kyvernoRepoURL = "https://kyverno.github.io/kyverno/" kyvernoChartName = "kyverno/kyverno" - kyvernoVersion352 = "v3.5.2" - kyvernoVersion352S = "3.5.2" - kyvernoVersion351 = "v3.5.1" + kyvernoVersion372 = "v3.7.2" + kyvernoVersion372S = "3.7.2" + kyvernoVersion371 = "v3.7.1" + kyvernoVersion371S = "3.7.1" kyvernoLatestRelease = "kyverno-latest" // Prometheus community chart details diff --git a/test/fv/tier_test.go b/test/fv/tier_test.go index 2c491589..e7ba0944 100644 --- a/test/fv/tier_test.go +++ b/test/fv/tier_test.go @@ -59,7 +59,7 @@ var _ = Describe("Helm", Serial, func() { RepositoryURL: kyvernoRepoURL, RepositoryName: kyvernoNamespace, ChartName: kyvernoChartName, - ChartVersion: kyvernoVersion352, + ChartVersion: kyvernoVersion372, ReleaseName: kyvernoLatestRelease, ReleaseNamespace: kyvernoNamespace, HelmChartAction: configv1beta1.HelmChartActionInstall, @@ -113,7 +113,7 @@ var _ = Describe("Helm", Serial, func() { verifyFeatureStatusIsProvisioned(kindWorkloadCluster.GetNamespace(), clusterSummary.Name, libsveltosv1beta1.FeatureHelm) charts := []configv1beta1.Chart{ - {ReleaseName: kyvernoLatestRelease, ChartVersion: kyvernoVersion352S, Namespace: kyvernoNamespace}, + {ReleaseName: kyvernoLatestRelease, ChartVersion: kyvernoVersion372S, Namespace: kyvernoNamespace}, {ReleaseName: grafanaRepoName, ChartVersion: grafanaVersion1000, Namespace: grafanaRepoName}, {ReleaseName: prometheusRelease, ChartVersion: prometheusVersion2739, Namespace: prometheusRelease}, } @@ -136,7 +136,7 @@ var _ = Describe("Helm", Serial, func() { RepositoryURL: kyvernoRepoURL, RepositoryName: kyvernoNamespace, ChartName: kyvernoChartName, - ChartVersion: kyvernoVersion351, + ChartVersion: kyvernoVersion371, ReleaseName: kyvernoLatestRelease, ReleaseNamespace: kyvernoNamespace, HelmChartAction: configv1beta1.HelmChartActionInstall, @@ -199,7 +199,7 @@ var _ = Describe("Helm", Serial, func() { nil, charts) charts = []configv1beta1.Chart{ - {ReleaseName: kyvernoLatestRelease, ChartVersion: "3.5.1", Namespace: kyvernoNamespace}, + {ReleaseName: kyvernoLatestRelease, ChartVersion: kyvernoVersion371S, Namespace: kyvernoNamespace}, } verifyClusterConfiguration(configv1beta1.ClusterProfileKind, newClusterProfile.Name,