diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml
index ed7ef3f..38fd395 100644
--- a/.github/workflows/codeql.yaml
+++ b/.github/workflows/codeql.yaml
@@ -33,10 +33,10 @@ jobs:
- name: Set up Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
- go-version: 1.27.1
+ go-version: 1.27.3
- name: Initialize CodeQL
- uses: github/codeql-action/init@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
+ uses: github/codeql-action/init@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
with:
languages: ${{ matrix.language }}
@@ -46,6 +46,6 @@ jobs:
run: go build ./...
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
+ uses: github/codeql-action/analyze@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
with:
category: "/language:${{ matrix.language }}"
diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
index dac2d5c..96842a7 100644
--- a/.github/workflows/main.yaml
+++ b/.github/workflows/main.yaml
@@ -18,7 +18,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
- go-version: 1.27.1
+ go-version: 1.27.3
- name: Build
run: make build
- name: FMT
@@ -39,7 +39,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
- go-version: 1.27.1
+ go-version: 1.27.3
- name: fv
run: make create-cluster fv
env:
diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml
index d0eede6..6194d26 100644
--- a/.github/workflows/scorecard.yaml
+++ b/.github/workflows/scorecard.yaml
@@ -26,20 +26,20 @@ jobs:
persist-credentials: false
- name: Run analysis
- uses: ossf/scorecard-action@2d1146689b8cda280b9bc96326124645441f03bc # v2.4.4
+ uses: ossf/scorecard-action@fa7117db83c52d787ae5a89f350999701505d78e # v2.5.0
with:
results_file: results.sarif
results_format: sarif
publish_results: true
- name: Upload artifact
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: SARIF file
path: results.sarif
retention-days: 5
- name: Upload to code-scanning
- uses: github/codeql-action/upload-sarif@2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2 # v4.38.2
+ uses: github/codeql-action/upload-sarif@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
with:
sarif_file: results.sarif
diff --git a/Dockerfile b/Dockerfile
index 702f440..64a1e5d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
# Build the manager binary
-FROM golang:1.27.1 AS builder
+FROM golang:1.27.3 AS builder
ARG BUILDOS
ARG TARGETARCH
diff --git a/Makefile b/Makefile
index 449ed76..311b3ac 100644
--- a/Makefile
+++ b/Makefile
@@ -21,7 +21,7 @@ ARCH ?= amd64
OS ?= $(shell uname -s | tr A-Z a-z)
K8S_LATEST_VER ?= $(shell curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
export CONTROLLER_IMG ?= $(REGISTRY)/$(IMAGE_NAME)
-TAG ?= v1.16.0
+TAG ?= v1.17.0
.PHONY: all
all: build
@@ -60,7 +60,7 @@ GINKGO := $(TOOLS_BIN_DIR)/ginkgo
KIND := $(TOOLS_BIN_DIR)/kind
KUBECTL := $(TOOLS_BIN_DIR)/kubectl
-GOLANGCI_LINT_VERSION := "v2.13.2"
+GOLANGCI_LINT_VERSION := "v2.15.0"
$(GOLANGCI_LINT): # Build golangci-lint from tools folder.
cd $(TOOLS_DIR); ./get-golangci-lint.sh $(GOLANGCI_LINT_VERSION)
diff --git a/README.md b/README.md
index 6186e7b..80287e9 100644
--- a/README.md
+++ b/README.md
@@ -16,6 +16,11 @@
+
+
+
+
+
## What this repository is
Libraries containing all pieces common across different repositories
diff --git a/go.mod b/go.mod
index 3362d10..d7f169a 100644
--- a/go.mod
+++ b/go.mod
@@ -1,43 +1,43 @@
module github.com/projectsveltos/crd-manager
-go 1.27.1
+go 1.27.3
require (
github.com/TwiN/go-color v1.4.1
github.com/go-logr/logr v1.4.4
- github.com/onsi/ginkgo/v2 v2.33.0
+ github.com/onsi/ginkgo/v2 v2.33.1
github.com/onsi/gomega v1.44.0
- github.com/projectsveltos/libsveltos v1.16.0
+ github.com/projectsveltos/libsveltos v1.17.0
github.com/spf13/pflag v1.0.10
- k8s.io/apiextensions-apiserver v0.37.1
- k8s.io/apimachinery v0.37.1
- k8s.io/client-go v0.37.1
- k8s.io/component-base v0.37.1
+ k8s.io/apiextensions-apiserver v0.37.2
+ k8s.io/apimachinery v0.37.2
+ k8s.io/client-go v0.37.2
+ k8s.io/component-base v0.37.2
k8s.io/klog/v2 v2.140.0
sigs.k8s.io/controller-runtime v0.25.2
)
require (
cloud.google.com/go/compute/metadata v0.9.0 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.2 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.1 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 // indirect
- github.com/AzureAD/microsoft-authentication-library-for-go v1.8.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.3 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.15.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.13.0 // indirect
+ github.com/AzureAD/microsoft-authentication-library-for-go v1.10.1 // indirect
github.com/Masterminds/semver/v3 v3.4.0 // indirect
- github.com/aws/aws-sdk-go-v2 v1.47.1 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.33.6 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.20.6 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.1 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.4 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.4 // indirect
- github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.4 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.4 // indirect
- github.com/aws/aws-sdk-go-v2/service/signin v1.10.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.38.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.51.1 // indirect
- github.com/aws/smithy-go v1.28.1 // indirect
+ github.com/aws/aws-sdk-go-v2 v1.47.5 // indirect
+ github.com/aws/aws-sdk-go-v2/config v1.33.13 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.20.13 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.5 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.8 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.8 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.8 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.23 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.8 // indirect
+ github.com/aws/aws-sdk-go-v2/service/signin v1.12.1 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.39.1 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.44.1 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.51.6 // indirect
+ github.com/aws/smithy-go v1.28.7 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/blang/semver/v4 v4.0.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
@@ -88,26 +88,26 @@ require (
github.com/xlab/treeprint v1.2.0 // indirect
go.yaml.in/yaml/v2 v2.4.4 // indirect
go.yaml.in/yaml/v3 v3.0.5 // indirect
- golang.org/x/crypto v0.56.0 // indirect
+ golang.org/x/crypto v0.57.0 // indirect
golang.org/x/mod v0.41.0 // indirect
- golang.org/x/net v0.58.0 // indirect
+ golang.org/x/net v0.59.0 // indirect
golang.org/x/oauth2 v0.37.0 // indirect
- golang.org/x/sync v0.23.0 // indirect
+ golang.org/x/sync v0.24.0 // indirect
golang.org/x/sys v0.48.0 // indirect
- golang.org/x/term v0.45.0 // indirect
- golang.org/x/text v0.42.0 // indirect
+ golang.org/x/term v0.46.0 // indirect
+ golang.org/x/text v0.43.0 // indirect
golang.org/x/time v0.15.0 // indirect
- golang.org/x/tools v0.49.0 // indirect
+ golang.org/x/tools v0.51.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect
google.golang.org/protobuf v1.36.12 // indirect
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
- k8s.io/api v0.37.1 // indirect
+ k8s.io/api v0.37.2 // indirect
k8s.io/cluster-bootstrap v0.36.3 // indirect
k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad // indirect
- k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 // indirect
- sigs.k8s.io/cluster-api v1.14.2 // indirect
- sigs.k8s.io/cluster-api/api v1.14.2 // indirect
+ k8s.io/utils v0.0.0-20261023123148-ca04ba58ecab // indirect
+ sigs.k8s.io/cluster-api v1.14.3 // indirect
+ sigs.k8s.io/cluster-api/api v1.14.3 // indirect
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
sigs.k8s.io/kustomize/api v0.21.2 // indirect
sigs.k8s.io/kustomize/kyaml v0.21.2 // indirect
diff --git a/go.sum b/go.sum
index 670139d..a356f60 100644
--- a/go.sum
+++ b/go.sum
@@ -1,49 +1,49 @@
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.2 h1:utpeoEeZjd+A8J41zvoLsOOrqXHhX1Kx/X/tCW9dEYQ=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.2/go.mod h1:iptorS+VYKFL2N6PnebpS91dubG35eAOEERnT4PJbQU=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.1 h1:u93s+zU2JD62im61Bm5CZIc1ZrOJaIAWEg0WOrMVkEo=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.14.1/go.mod h1:oXtinPO4OLj9d1DOTrqrL1oRwGhcqadvAmrl6wTeGlk=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.3 h1:qgnWTiWs1G7AqcKZegFvkJD1bmXJcaDU3uC0ELSgZ5U=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.23.3/go.mod h1:XtxD48QPInqoj+GMlcRlXHEYsoOxFnP6w2JgIZ9rDS4=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.15.0 h1:w3gDUJlJ0BfBsHH02DCBDwbkmMSXJqBj6nBOCo9iocY=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.15.0/go.mod h1:7scl8mG/IFLVjJ9ef/ltdND2T1z0CkgVSaQoUxLvmeU=
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.4.0 h1:xFaZZ+IubdftrDHnGGwZ6QvQ3KHTtWl2MCK+GMt2vxs=
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.4.0/go.mod h1:mCBhUhlMjLLJKr5aqw2TNS/VqJOie8MzWq3DAMJeKso=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 h1:fhqpLE3UEXi9lPaBRpQ6XuRW0nU7hgg4zlmZZa+a9q4=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0/go.mod h1:7dCRMLwisfRH3dBupKeNCioWYUZ4SS09Z14H+7i8ZoY=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.13.0 h1:Terj1CMW4+NY5CpWjSRkqLoxh2DkYDdv/FH2z0897Uc=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.13.0/go.mod h1:7Ut2Qw9vcwpLW5Q4MBy43uSxXS7tK2yjs94OJ6j5thE=
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM=
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.8.0 h1:Nljr4q1GRA/5vCrMONS+g4u4LRHNgOXVSh3O43J2CnI=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.8.0/go.mod h1:Y33QHnf0FfdVewFFISOGe20mkZbxX4H839o955/PoeI=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.10.1 h1:0O6j18nQDoIff6/mtosT5LNU2WehEwp+LqfX6699oqY=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.10.1/go.mod h1:xdYAf5bjkOpsd3auA8riiJW4vneBubt9caavL7626jQ=
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/TwiN/go-color v1.4.1 h1:mqG0P/KBgHKVqmtL5ye7K0/Gr4l6hTksPgTgMk3mUzc=
github.com/TwiN/go-color v1.4.1/go.mod h1:WcPf/jtiW95WBIsEeY1Lc/b8aaWoiqQpu5cf8WFxu+s=
-github.com/aws/aws-sdk-go-v2 v1.47.1 h1:uOIZnp4PK3ZhKI0dNrJrhTEsLxbpXHTAJlwoS1pvAtw=
-github.com/aws/aws-sdk-go-v2 v1.47.1/go.mod h1:bttEH6JqnUL8LepvDVfdrds/fZ5bCIxzpe3abyUrhDU=
-github.com/aws/aws-sdk-go-v2/config v1.33.6 h1:MBjkSTLczek/UgiK+EYPIoRTqE7gP8vtW3OFbFo7Nug=
-github.com/aws/aws-sdk-go-v2/config v1.33.6/go.mod h1:grRAFzdAZJrwcbasJRg2MPvIrVjtlfXllHssN6+E1JE=
-github.com/aws/aws-sdk-go-v2/credentials v1.20.6 h1:NpAFXCU7NzXNkdGK3zQTtsRJ+3v9tZQV0xcdRw8uBdw=
-github.com/aws/aws-sdk-go-v2/credentials v1.20.6/go.mod h1:mcZCoiPnyMvP8VMNbygNX5lLqSlkYJIMPODylQMurOk=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.1 h1:8gALAAmacnIXh+z6VkdDanv4/IkG5APdg4DZLDTmLog=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.1/go.mod h1:Z7IJhJU+poOdJjUR2wpyY21ossQ1XS/R3Lk9Msq5kM4=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.4 h1:CLq4+8UHCI+ZZYl/EuJxXovaIVN2xeeT8JV+dsApQ5E=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.4/go.mod h1:Wv4q5sAM04xAMkoOedxLx2inVf6K5FdxYp+A61L+q/0=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.4 h1:dD4MR81I7YkpEBRk6UP9rocC2QnT3qVuXwzlYTtfGEs=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.4/go.mod h1:EcXV1kAFd5XwSkDHlj94gnF3q5CkJyYiIJfH8N0VmrE=
-github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.4 h1:7Wo47d/xn/7KttCSBd8EGYeZ7ULRFRkUHr6vkZPBzVQ=
-github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.4/go.mod h1:tDB2IVC1xC3vX8o+6uRlzhTxP3g1b77CZXFX/oD2FnQ=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 h1:bAdDl/HkGCcGPoe25ToSHEw23VIxt6CT5fLcg111BKg=
-github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19/go.mod h1:KaUzbLxv4CeSxh6ZCl9B4m7CuFenS8kUEaDs+f/DQr4=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.4 h1:29SvnfGhXjTl8ONxFwbj2rs6lbhiFXD2CgFQmbT/bXY=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.4/go.mod h1:wm04I5DMuNVvZHFe/dHnUxincvNbbK7AiNBbYsQivek=
-github.com/aws/aws-sdk-go-v2/service/signin v1.10.1 h1:DzCCWLzcIRQ77F3DEUljud7bEjTgFOIKXP52NmVRyhU=
-github.com/aws/aws-sdk-go-v2/service/signin v1.10.1/go.mod h1:xpo/geVldu8payT375WekctUzopG/hBU7miiqItMUlw=
-github.com/aws/aws-sdk-go-v2/service/sso v1.38.1 h1:Umtl/0YZhng4xndfW3lKJrYYP7NLEjI6bGXVomwLcs0=
-github.com/aws/aws-sdk-go-v2/service/sso v1.38.1/go.mod h1:rRD/dnm7q0HYE/I5TMaPgkWyyUGLcwuxHLABsLnQ3e0=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.1 h1:orIWdNiLgzrhu/11RcPPKO/SBzUUymbUQuZbSPImghg=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.1/go.mod h1:skwM/xsbR/1ReUTesv9BhpJp1VjajR7DWQnuVLwiXsQ=
-github.com/aws/aws-sdk-go-v2/service/sts v1.51.1 h1:0HOqZXRvMytH6bFHVIc0oJX07sZjfhz0zXtjs6gdE8s=
-github.com/aws/aws-sdk-go-v2/service/sts v1.51.1/go.mod h1:26zA0GhDrLo+yiLI2yXWxqB1PdsShfLikoI7GOEgugM=
-github.com/aws/smithy-go v1.28.1 h1:R/nXH00c8qcfCzQVELtRw+eLQWtzv+VAIEFJ1/xxXlQ=
-github.com/aws/smithy-go v1.28.1/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
+github.com/aws/aws-sdk-go-v2 v1.47.5 h1:5yA+A+BiXbDq1ZLbYwPViwhEGDMdR0MEhL8Jh2LnLS4=
+github.com/aws/aws-sdk-go-v2 v1.47.5/go.mod h1:iNIkogrRvFwm+1OQIUOP2lPBtlXZboOIUWiCa+pHEMw=
+github.com/aws/aws-sdk-go-v2/config v1.33.13 h1:u52x6ISQOx172tpwM0VRxhJzEsTJYpMcEYUGM2A1wrw=
+github.com/aws/aws-sdk-go-v2/config v1.33.13/go.mod h1:/ixtz6XPHb42zekjQ0LqD9XjTpTysNWhIGwufY1OzI4=
+github.com/aws/aws-sdk-go-v2/credentials v1.20.13 h1:j4z41OtspmQ3ftQycaDunJ26b69a9SHfaSVUPqgRv8k=
+github.com/aws/aws-sdk-go-v2/credentials v1.20.13/go.mod h1:SgPA1oS3b+dlMxZb618jDmGNscpXSCaxz15igS52OlE=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.5 h1:iXjy2SFhGYNB1jWZBhQqq8HbhsbPF23w+/zbMvPXsTg=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.5/go.mod h1:k0RUiBnyXU0AXRJ9tJmY2jQke6XUIX2PNVnWtvgaPtc=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.8 h1:gzIWc3DTPfPbWKrQnmL6BV6WD7NPD1htxzgdk/bQ/Z4=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.8/go.mod h1:vvUA5cDAZWGo4R14FZPZfXfJCmgsafOWEq78Kg0D+ug=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.8 h1:PWv+vG8aCLS8qd+HPdYhK7Vees90aKHWFFQ1AGYD/8E=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.8/go.mod h1:xxPZEpflYHJA12366ZGyq66z9dHPCoeCIu99Jck+MPw=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.8 h1:WOp5De9iWdEHDPh2Kb0tBP3vGBm/dVAuRGh4a4tqduo=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.8/go.mod h1:z8W8YgfhbWl62XqcTtK+CxPrE+iHGRVUOtrrbIOp7ZY=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.23 h1:MCIR6iZaCKO4UE0hUvoWWLI6JVjppopV64JfAJaMjng=
+github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.23/go.mod h1:pphWFS+z0MmIPivj8c/6bATd1Z+Av7Ust75DPdEFsPA=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.8 h1:+PMpWlJYOn2tm7sm6OZ/ZLd4jStl17T7wjNapd1Rczs=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.8/go.mod h1:cnG3xZLGQL4c/bt8pjdzlFtZsW7epBBuNS04a5xMjdo=
+github.com/aws/aws-sdk-go-v2/service/signin v1.12.1 h1:WZLC+k/CZx11kZGQDqu9mpA8yhiXGX2I//jhuJE1FDo=
+github.com/aws/aws-sdk-go-v2/service/signin v1.12.1/go.mod h1:wxAk0D2oVBSjuXEIzvcKxTZfM90zticdAbh/VD42L0Y=
+github.com/aws/aws-sdk-go-v2/service/sso v1.39.1 h1:4VB/dnDo7pmXSLQMszSoBzWndENuc7mzwTpD6lQn77A=
+github.com/aws/aws-sdk-go-v2/service/sso v1.39.1/go.mod h1:UGsEYgWz4Gi+46vDQ5zkFLqUgJziyOE2SXjZjgmfmHc=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.44.1 h1:w8yui2ZqdHmGwVBDGvazoIvKw/DnLENBLkYnN8q8iqo=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.44.1/go.mod h1:gJSdIY6YUzDvqQLcMtPVZgBRHrFwzHryvpE8Igzbxps=
+github.com/aws/aws-sdk-go-v2/service/sts v1.51.6 h1:BVjKrtRUtSYKztBCCfE1oAB+d3ViKcW2cKZfserOqMQ=
+github.com/aws/aws-sdk-go-v2/service/sts v1.51.6/go.mod h1:eSukFLeLkPMm+1OxDR+F0joauZdyBkF47Ow7MqjZiJw=
+github.com/aws/smithy-go v1.28.7 h1:h/n1SHrwVtaDYLz8mR1/Kq4Xh4RaFbFW7bOYckg9mfE=
+github.com/aws/smithy-go v1.28.7/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
@@ -162,8 +162,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.33.0 h1:C8gBA6Uc2ZEubiV+SXiu5tZnMTwEmXHgkJwGozKtZf8=
-github.com/onsi/ginkgo/v2 v2.33.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44=
+github.com/onsi/ginkgo/v2 v2.33.1 h1:62XfWJbEIjPSCSDYrsCPP/SHcmH7O0M8ne8zfqQ2iz4=
+github.com/onsi/ginkgo/v2 v2.33.1/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44=
github.com/onsi/gomega v1.44.0 h1:eAiGl3Pw5jz5GQdDff0BcxYpAX1JxW8xD7mFUuwNfZQ=
github.com/onsi/gomega v1.44.0/go.mod h1:e/C2HwaZ1DhvjzXXuFhcR7hY7Sh9pl7MmoWKEjzwcdA=
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
@@ -173,8 +173,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/projectsveltos/libsveltos v1.16.0 h1:XdmoMatjwU1a2Ede0FY5eddxlvD4CGx7Bse+VZ7qxFc=
-github.com/projectsveltos/libsveltos v1.16.0/go.mod h1:wup25BAf1SHuG6FsY8D+tnm1U3/3NiuzcKec/In/fB4=
+github.com/projectsveltos/libsveltos v1.17.0 h1:7oIvY+bg9oLRYm8wlyZypYVvCcMspYl/FT9VG8XvQG0=
+github.com/projectsveltos/libsveltos v1.17.0/go.mod h1:dHJrl1V5/WrNda5wzxbHs2dlsvoV/FUlwK1TXy2X3pA=
github.com/prometheus/client_golang v1.24.0 h1:5XStIklKuAtJSNpdD3s8XJj/Yv78IQmE1kbNk87JrAI=
github.com/prometheus/client_golang v1.24.0/go.mod h1:QcsNdotprC2nS4BTM2ucbcqxd2CeXTEa9jW7zHO9iDE=
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
@@ -228,27 +228,27 @@ go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg=
-golang.org/x/crypto v0.56.0 h1:GUh5Ii4J5jtcseSMiRqr1jXCNHoxjeV9Fmekc2oLy6Y=
-golang.org/x/crypto v0.56.0/go.mod h1:OMW5y6CY9l38uPLmxU6l6pwcXp1obtLo3e6gT7gQR2I=
+golang.org/x/crypto v0.57.0 h1:3ZVCjf8Ggz7zneR/EHRVx68Ctf+2pmIMP2UFhh9cC6M=
+golang.org/x/crypto v0.57.0/go.mod h1:Fdz0i5U6CoizGwLda9DttjSk6qlZo25zYNtR+ycvuZA=
golang.org/x/mod v0.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c=
golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o=
-golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
-golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
+golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues=
+golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
golang.org/x/oauth2 v0.37.0 h1:JUlcxA8oAtauLfiH8FX2/FkAWHAdi0QtGCGc+hofE98=
golang.org/x/oauth2 v0.37.0/go.mod h1:IxwZNxUULJmpBFf9K/9NTMSIfZZuvuTy1gGxhigP/58=
-golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk=
-golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
+golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA=
+golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
-golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0=
-golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w=
-golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
-golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
+golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE=
+golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc=
+golang.org/x/text v0.43.0 h1:1QivrlhwAsnMOcqgOdl9my7s9OyZl8O5/UGUTJVXoWc=
+golang.org/x/text v0.43.0/go.mod h1:hbSIYA/amXcRXTFSZqh8tWHEoqRvvbKPJ2uz/KU+a+s=
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.49.0 h1:3NI7VXzL9+1WZD52Dx2ttoPwD5DWrFGpl9mFZDlmisI=
-golang.org/x/tools v0.49.0/go.mod h1:SJNXV9DBKT0UbdttsQjbfJlAE/q+y36++zo3uL3N0Oo=
+golang.org/x/tools v0.51.0 h1:k4Xc/1Om9jwkBJBo4NVLMSARBoWtK10mx+W5BnXCeAI=
+golang.org/x/tools v0.51.0/go.mod h1:9eEncMayCV6zRMGhR5eZEC2iBx98qWcF1HZ9Z7wJOoA=
gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0=
gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc=
@@ -260,28 +260,28 @@ 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.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-k8s.io/api v0.37.1 h1:l6N77U7tjwB5L056bgrBTJIEdevac/naBZ3iSvDNfpM=
-k8s.io/api v0.37.1/go.mod h1:zSlbB1YpJ1YQlFVQy20UYll81UJSJJUMLhkhvg6Z78M=
-k8s.io/apiextensions-apiserver v0.37.1 h1:7fIQG8eThDSTVYBWg/DOpI8v5wYfKCo0N8/TDMjj+zY=
-k8s.io/apiextensions-apiserver v0.37.1/go.mod h1:1Q3ujWwHgnhBoGsdmGORflwK1sDFmuaqH1OsMDWk2Gs=
-k8s.io/apimachinery v0.37.1 h1:hGCYyvKHCwtwMitj2vU4vYx0Z16N9GyZk9BBnz0wDAE=
-k8s.io/apimachinery v0.37.1/go.mod h1:jF84AyUi/IRIXRot5f+lm6MpxoWI+F1XgjaMmwCdTFw=
-k8s.io/client-go v0.37.1 h1:QTv/5ha4jAHtW9qxxVBkQVFBRDb4jHfFopQqqMdc+wM=
-k8s.io/client-go v0.37.1/go.mod h1:dnAPtTnCNY38Ho04D2KdY1F4IKausa9UbqaAZKl60SY=
+k8s.io/api v0.37.2 h1:PnxqnUFy93jr2GcpWDkKOm8wfy25kT9wa572MuQS8oc=
+k8s.io/api v0.37.2/go.mod h1:+NVRLft99kx+Jg9v34GmHw867Dapim89TSyCsn2hK+M=
+k8s.io/apiextensions-apiserver v0.37.2 h1:myaUiAlm1NRLYdpAvWYTqdgeiCepFupJiRFVVueMUYw=
+k8s.io/apiextensions-apiserver v0.37.2/go.mod h1:BFl1aPC89HsgFgYI+3xpFtckvkAeenDTZP84njA9yw4=
+k8s.io/apimachinery v0.37.2 h1:G4t9RGoPDbQML38hz/kQQiltttgd3egg2ODCR8aIc2o=
+k8s.io/apimachinery v0.37.2/go.mod h1:qaAvSNvgU2x07wRM95MSHSJTPQ/ob/LeNAGbeDgqQJg=
+k8s.io/client-go v0.37.2 h1:sgFtyRZukGkOrsu+QgS7LYnbFFJ5ut3MchdBNduD//E=
+k8s.io/client-go v0.37.2/go.mod h1:bo3LFC8YbCtKFPX21Yj8puMsoJLAv/+SvuOODma0s54=
k8s.io/cluster-bootstrap v0.36.3 h1:pyPFVCjsHrwl3mIQV3dp7YuXn//1DHVpCDzpcjqF6tI=
k8s.io/cluster-bootstrap v0.36.3/go.mod h1:yWUirkNm9DKtLZhGP/lbdJAIU9iUuH/Z9NDdZnkutAk=
-k8s.io/component-base v0.37.1 h1:93DMmlENnK7gNLkL4pMqLO5M/HVf3p3sM4q/GasLveY=
-k8s.io/component-base v0.37.1/go.mod h1:bBrdziT4dreQG5lzTaPVxBwsZe1oxphG+ZVdD56dQWQ=
+k8s.io/component-base v0.37.2 h1:Ia9IKTg1yWrUntJU5lVetapkC9pXlLg9L6P3R1IkbcY=
+k8s.io/component-base v0.37.2/go.mod h1:qq+ueHZyLfzRJzxyDoyxHWNhF1JPv4zm3hcaddXWDvY=
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-20260721132016-d427ff9ee9ad h1:oXImqH8mQNk7PmvzKhmN3ddJoY6OnyM225MXwGHPm0A=
k8s.io/kube-openapi v0.0.0-20260721132016-d427ff9ee9ad/go.mod h1:0/mqHCVhlumdJ3BhCfnjSZQE037nAhNodh1/hK0T8/I=
-k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3 h1:jVkFFVfXdXP74B/zbO3hM3hpSFD0xvhQ5U686DPurkE=
-k8s.io/utils v0.0.0-20260707023825-cf1189d6abe3/go.mod h1:M2s5JB1lIYP3jzZdorPLHXIPJzt9vv2muW5a6L9DtNM=
-sigs.k8s.io/cluster-api v1.14.2 h1:o3GFNaeNFAOEEMpDPfhCK+2CjmV6gtQ8yLEcUwCg7bA=
-sigs.k8s.io/cluster-api v1.14.2/go.mod h1:QGMq7dEyUsceFGBLIrnPDVmX2J316yfY20Woq1S9GuU=
-sigs.k8s.io/cluster-api/api v1.14.2 h1:B0XWZGFrb4+R1pH2nApdR9d4tcQGIhpEquRxxf36fHg=
-sigs.k8s.io/cluster-api/api v1.14.2/go.mod h1:LJ/5hdS9tqTBi9YqyLRnd1t53Sn/cXsa7rEVaY0bBms=
+k8s.io/utils v0.0.0-20261023123148-ca04ba58ecab h1:pjQrNLaF//ytZtWwCAHtW+pqwSKjtWDqzA8+TCX37RI=
+k8s.io/utils v0.0.0-20261023123148-ca04ba58ecab/go.mod h1:DdQ0BJxlQtuMlKDqdg7X5IMMQCXIk2b3d1/4M9OhUYo=
+sigs.k8s.io/cluster-api v1.14.3 h1:xc2krMm7SfUV7/sVo3XcHwNz33fkYupy+iSD/W/TA/Q=
+sigs.k8s.io/cluster-api v1.14.3/go.mod h1:NB3GmqTA/hlMaGDv01gt36/5k0DJ+ixGTJFHUe5Ib3Q=
+sigs.k8s.io/cluster-api/api v1.14.3 h1:lTjHLULtlJHRXvroECdeiM2fXZOsvu93y+LYRjm/5II=
+sigs.k8s.io/cluster-api/api v1.14.3/go.mod h1:LJ/5hdS9tqTBi9YqyLRnd1t53Sn/cXsa7rEVaY0bBms=
sigs.k8s.io/controller-runtime v0.25.2 h1:bEkK3PVOIVK9X8QWLGVhJgmFc++47vfT6wakSzAOLsQ=
sigs.k8s.io/controller-runtime v0.25.2/go.mod h1:4QqLdT6z/L6Olj8JJCtvztid4/fnIiYsfaTFScegctc=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
diff --git a/hack/tools/go.mod b/hack/tools/go.mod
index 90b0486..26c8a50 100644
--- a/hack/tools/go.mod
+++ b/hack/tools/go.mod
@@ -1,14 +1,14 @@
module github.com/projectsveltos/crd-manager/hack/tools
-go 1.27.1
+go 1.27.3
require (
github.com/a8m/envsubst v1.4.3
- github.com/onsi/ginkgo/v2 v2.33.0
+ github.com/onsi/ginkgo/v2 v2.33.1
golang.org/x/oauth2 v0.37.0
- golang.org/x/tools v0.51.0
- k8s.io/client-go v0.37.1
- sigs.k8s.io/controller-tools v0.22.0
+ golang.org/x/tools v0.52.0
+ k8s.io/client-go v0.37.2
+ sigs.k8s.io/controller-tools v0.23.0
sigs.k8s.io/kind v0.33.0
)
@@ -54,19 +54,19 @@ 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.5 // indirect
- golang.org/x/mod v0.41.0 // indirect
- golang.org/x/net v0.59.0 // indirect
- golang.org/x/sync v0.23.0 // indirect
- golang.org/x/sys v0.48.0 // indirect
- golang.org/x/telemetry v0.0.0-20260924152758-ed294f943157 // indirect
- golang.org/x/term v0.46.0 // indirect
- golang.org/x/text v0.42.0 // indirect
+ golang.org/x/mod v0.42.0 // indirect
+ golang.org/x/net v0.61.0 // indirect
+ golang.org/x/sync v0.24.0 // indirect
+ golang.org/x/sys v0.49.0 // indirect
+ golang.org/x/telemetry v0.0.0-20261009151841-97e8ea77aa2a // indirect
+ golang.org/x/term v0.47.0 // indirect
+ golang.org/x/text v0.43.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
- k8s.io/api v0.37.1 // indirect
+ k8s.io/api v0.37.2 // indirect
k8s.io/apiextensions-apiserver v0.37.0 // indirect
- k8s.io/apimachinery v0.37.1 // indirect
+ k8s.io/apimachinery v0.37.2 // indirect
k8s.io/code-generator v0.37.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 9b63b01..a74ef3d 100644
--- a/hack/tools/go.sum
+++ b/hack/tools/go.sum
@@ -126,10 +126,10 @@ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFd
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
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.33.0 h1:C8gBA6Uc2ZEubiV+SXiu5tZnMTwEmXHgkJwGozKtZf8=
-github.com/onsi/ginkgo/v2 v2.33.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44=
-github.com/onsi/gomega v1.43.0 h1:VlG/1FxqNxhSO+lq/OHBNaaqwiBK/mO8JbVkX9Y+FeU=
-github.com/onsi/gomega v1.43.0/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg=
+github.com/onsi/ginkgo/v2 v2.33.1 h1:62XfWJbEIjPSCSDYrsCPP/SHcmH7O0M8ne8zfqQ2iz4=
+github.com/onsi/ginkgo/v2 v2.33.1/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44=
+github.com/onsi/gomega v1.44.0 h1:eAiGl3Pw5jz5GQdDff0BcxYpAX1JxW8xD7mFUuwNfZQ=
+github.com/onsi/gomega v1.44.0/go.mod h1:e/C2HwaZ1DhvjzXXuFhcR7hY7Sh9pl7MmoWKEjzwcdA=
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
@@ -199,27 +199,27 @@ go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg=
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM=
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80=
-golang.org/x/mod v0.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c=
-golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o=
-golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues=
-golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
+golang.org/x/mod v0.42.0 h1:ICeL3t2L30ljSPHHxDnR4fqVcBt/zR2zJAb9juavmQg=
+golang.org/x/mod v0.42.0/go.mod h1:u5fzIrRInkL8MaO1cbRkUHT64v303YIT5KEqpNr7jRs=
+golang.org/x/net v0.61.0 h1:RR+6j/BTBCrggOLugxa+66R8FvoN6MHlzDlZIbN9YFw=
+golang.org/x/net v0.61.0/go.mod h1:WgDCOTH8iwtB66T4/GfI94AHo/hhdb7Hah9NDseQfiI=
golang.org/x/oauth2 v0.37.0 h1:JUlcxA8oAtauLfiH8FX2/FkAWHAdi0QtGCGc+hofE98=
golang.org/x/oauth2 v0.37.0/go.mod h1:IxwZNxUULJmpBFf9K/9NTMSIfZZuvuTy1gGxhigP/58=
-golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk=
-golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
+golang.org/x/sync v0.24.0 h1:iqiDrGoDgyuvAKrhLQthUEzU/R378N78gXbBjxed7oA=
+golang.org/x/sync v0.24.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
-golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
-golang.org/x/telemetry v0.0.0-20260924152758-ed294f943157 h1:DftxASHKl6JolFPqoN+2WrFO53JvkHwRXvFqf8gsivA=
-golang.org/x/telemetry v0.0.0-20260924152758-ed294f943157/go.mod h1:i+ivNqjDnTF3WTElsdk5g9V5DTSBYgdNo7xTU9SDwYA=
-golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE=
-golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc=
-golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
-golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
+golang.org/x/sys v0.49.0 h1:XbzkgYJHdqh/8m2Uu0W/dQv8nktxx4BFHp1M0gROTXA=
+golang.org/x/sys v0.49.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
+golang.org/x/telemetry v0.0.0-20261009151841-97e8ea77aa2a h1:wnveMBKHwx8/nIb8WYT5P9vtefdXOvIWxzycCkc5n6Q=
+golang.org/x/telemetry v0.0.0-20261009151841-97e8ea77aa2a/go.mod h1:i+ivNqjDnTF3WTElsdk5g9V5DTSBYgdNo7xTU9SDwYA=
+golang.org/x/term v0.47.0 h1:cpyOwQkr2Nzxe2p6KnrTG7Ei2wtzjsuSjhpXXepZ/BM=
+golang.org/x/term v0.47.0/go.mod h1:efAfAuG6RKABvg1ArGebRkvX6LXul14SM67o2e4mUCY=
+golang.org/x/text v0.43.0 h1:1QivrlhwAsnMOcqgOdl9my7s9OyZl8O5/UGUTJVXoWc=
+golang.org/x/text v0.43.0/go.mod h1:hbSIYA/amXcRXTFSZqh8tWHEoqRvvbKPJ2uz/KU+a+s=
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.51.0 h1:k4Xc/1Om9jwkBJBo4NVLMSARBoWtK10mx+W5BnXCeAI=
-golang.org/x/tools v0.51.0/go.mod h1:9eEncMayCV6zRMGhR5eZEC2iBx98qWcF1HZ9Z7wJOoA=
+golang.org/x/tools v0.52.0 h1:ryxg4U63oaUYk7uOLTF37n43f4qgtGvqV4Ioit1BaEs=
+golang.org/x/tools v0.52.0/go.mod h1:ItcP5UNaVGG+Yc4eIYmaFLNJ4soEopkx5Y2d4lcEurs=
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=
@@ -240,16 +240,16 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
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.37.1 h1:l6N77U7tjwB5L056bgrBTJIEdevac/naBZ3iSvDNfpM=
-k8s.io/api v0.37.1/go.mod h1:zSlbB1YpJ1YQlFVQy20UYll81UJSJJUMLhkhvg6Z78M=
+k8s.io/api v0.37.2 h1:PnxqnUFy93jr2GcpWDkKOm8wfy25kT9wa572MuQS8oc=
+k8s.io/api v0.37.2/go.mod h1:+NVRLft99kx+Jg9v34GmHw867Dapim89TSyCsn2hK+M=
k8s.io/apiextensions-apiserver v0.37.0 h1:zRMQ3+/LIE5oZ0tVvXwYHC+dIkSP5cjNWju7AZU1LOI=
k8s.io/apiextensions-apiserver v0.37.0/go.mod h1:HU0PfSBwchHL5iDau6jjt9zU6ryWkDDlaVUiq91NK80=
-k8s.io/apimachinery v0.37.1 h1:hGCYyvKHCwtwMitj2vU4vYx0Z16N9GyZk9BBnz0wDAE=
-k8s.io/apimachinery v0.37.1/go.mod h1:jF84AyUi/IRIXRot5f+lm6MpxoWI+F1XgjaMmwCdTFw=
+k8s.io/apimachinery v0.37.2 h1:G4t9RGoPDbQML38hz/kQQiltttgd3egg2ODCR8aIc2o=
+k8s.io/apimachinery v0.37.2/go.mod h1:qaAvSNvgU2x07wRM95MSHSJTPQ/ob/LeNAGbeDgqQJg=
k8s.io/apiserver v0.37.0 h1:TXg7OxsOWrAH8J4Zi/gBAZuMw1Dfdd+6cca2h4qjRqo=
k8s.io/apiserver v0.37.0/go.mod h1:OddHDF4gy9qyIb8o/3+qaeP6S0vEObWLgOygVqXksv0=
-k8s.io/client-go v0.37.1 h1:QTv/5ha4jAHtW9qxxVBkQVFBRDb4jHfFopQqqMdc+wM=
-k8s.io/client-go v0.37.1/go.mod h1:dnAPtTnCNY38Ho04D2KdY1F4IKausa9UbqaAZKl60SY=
+k8s.io/client-go v0.37.2 h1:sgFtyRZukGkOrsu+QgS7LYnbFFJ5ut3MchdBNduD//E=
+k8s.io/client-go v0.37.2/go.mod h1:bo3LFC8YbCtKFPX21Yj8puMsoJLAv/+SvuOODma0s54=
k8s.io/code-generator v0.37.0 h1:AC915wukzlVHHODAQYxvQ25WKibPh95faJ2kxf8dzuo=
k8s.io/code-generator v0.37.0/go.mod h1:qg7E/uDlyvevVRL1V8+h2z9UWmi/8gxaRka/lVXUBdk=
k8s.io/component-base v0.37.0 h1:3SdSa4+itMdFTDFTeR8CxKGmSTSMXFlKL4ky8OqjguM=
@@ -264,8 +264,8 @@ k8s.io/utils v0.0.0-20260626114624-be93311217bd h1:Ea7fgQ5we8Y9T0OX5o0dAHzQOBRI0
k8s.io/utils v0.0.0-20260626114624-be93311217bd/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0 h1:/YpDJ4vReG7ZmzSpBGxduXgywWkJU9zHubgJG03MT+Y=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.36.0/go.mod h1:tJo1aepTXyR+8Xs3sUsGBDk4Ub2AM5dPAPKJx0mpm5c=
-sigs.k8s.io/controller-tools v0.22.0 h1:eG3FAVja/KnlXKIWg95udIFz1cMyAtMjP11cqBh3t+k=
-sigs.k8s.io/controller-tools v0.22.0/go.mod h1:VizwUStoZK7rReCj704czGGrB7mLxXTiJSJt7wN5ilI=
+sigs.k8s.io/controller-tools v0.23.0 h1:GFmPTaHSyje/kZv/4XOdR1v3rWz0/OJixwpPnGyV4Sw=
+sigs.k8s.io/controller-tools v0.23.0/go.mod h1:JJRl1h3BoHJWtCVgwGsITk+dusn8LatINcIBhO8aP9A=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
sigs.k8s.io/kind v0.33.0 h1:AjvDv3vOygb/VKLVQW87lfktIBzkxR8Ump9DjxC8+Lk=
diff --git a/k8s/manifest.yaml b/k8s/manifest.yaml
index b1d1fb9..f6aa834 100644
--- a/k8s/manifest.yaml
+++ b/k8s/manifest.yaml
@@ -59,7 +59,7 @@ spec:
runAsNonRoot: true
containers:
- name: crd-manager
- image: docker.io/projectsveltos/crd-manager:v1.16.0
+ image: docker.io/projectsveltos/crd-manager:v1.17.0
imagePullPolicy: IfNotPresent
resources:
requests:
diff --git a/manifest/manifest.yaml b/manifest/manifest.yaml
index b1d1fb9..f6aa834 100644
--- a/manifest/manifest.yaml
+++ b/manifest/manifest.yaml
@@ -59,7 +59,7 @@ spec:
runAsNonRoot: true
containers:
- name: crd-manager
- image: docker.io/projectsveltos/crd-manager:v1.16.0
+ image: docker.io/projectsveltos/crd-manager:v1.17.0
imagePullPolicy: IfNotPresent
resources:
requests:
diff --git a/pkg/crds/crds.go b/pkg/crds/crds.go
index fbd1d52..20c7414 100644
--- a/pkg/crds/crds.go
+++ b/pkg/crds/crds.go
@@ -764,6 +764,55 @@ spec:
spec:
description: ClusterHealthCheckSpec defines the desired state of ClusterHealthCheck
properties:
+ clusterRefs:
+ description: |-
+ ClusterRefs identifies clusters to associate to.
+ These are added to the clusters matched by ClusterSelector.
+ items:
+ description: ObjectReference contains enough information to let
+ you inspect or modify the referred object.
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: |-
+ If referring to a piece of an object instead of an entire object, this string
+ should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container within a pod, this would take on a value like:
+ "spec.containers{name}" (where "name" refers to the name of the container that triggered
+ the event) or if no container name is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only to have some well-defined way of
+ referencing a part of an object.
+ type: string
+ kind:
+ description: |-
+ Kind of the referent.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ name:
+ description: |-
+ Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ namespace:
+ description: |-
+ Namespace of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
+ type: string
+ resourceVersion:
+ description: |-
+ Specific resourceVersion to which this reference is made, if any.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
+ type: string
+ uid:
+ description: |-
+ UID of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
clusterSelector:
description: Selector identifies clusters to associate to.
properties:
@@ -931,6 +980,31 @@ spec:
type: string
type: object
x-kubernetes-map-type: atomic
+ policy:
+ description: |-
+ Policy tunes when this notification is delivered, to reduce the number of notifications
+ sent while a cluster is changing. When not set, a notification is delivered every time the
+ status of a liveness check changes or, while a liveness check keeps failing, every time its
+ failure message changes.
+ properties:
+ failingFor:
+ description: |-
+ FailingFor is how long a cluster has to keep failing before a failure is delivered.
+ A failure ending before that is never delivered, and neither is its recovery.
+ type: string
+ minInterval:
+ description: |-
+ MinInterval is the minimum time between two notifications for the same cluster.
+ Changes happening inside the interval are coalesced: when the interval ends, the current
+ state is delivered if it differs from the last delivered one.
+ type: string
+ onlyOnTransition:
+ description: |-
+ OnlyOnTransition, when true, delivers a notification only when the cluster moves between
+ passing and failing. A change of the failure message while the cluster keeps failing is not
+ delivered. A cluster found passing the first time it is evaluated is not delivered either.
+ type: boolean
+ type: object
type:
description: NotificationType specifies the type of notification
enum:
@@ -1086,6 +1160,22 @@ spec:
FailureMessage is a human consumable message explaining the
misconfiguration
type: string
+ lastSentFailing:
+ description: |-
+ LastSentFailing tells whether the cluster was failing when this notification
+ was last delivered. Only set for notifications with a Policy.
+ type: boolean
+ lastSentMessageHash:
+ description: |-
+ LastSentMessageHash is a hash of the failure message delivered the last time.
+ Used to detect a change of the failure message. Only set for notifications with a Policy.
+ type: string
+ lastSentTime:
+ description: |-
+ LastSentTime is when this notification was last delivered for the cluster.
+ Only set for notifications with a Policy.
+ format: date-time
+ type: string
name:
description: Name of the notification check.
type: string
@@ -1108,7 +1198,7 @@ spec:
matchingClusters:
description: |-
MatchingClusterRefs reference all the clusters currently matching
- ClusterHealthCheck ClusterSelector
+ ClusterHealthCheck ClusterSelector or listed in ClusterRefs
items:
description: ObjectReference contains enough information to let
you inspect or modify the referred object.
@@ -1532,6 +1622,15 @@ spec:
type: string
type: array
x-kubernetes-list-type: atomic
+ skipApply:
+ default: false
+ description: |-
+ SkipApply indicates the resources in this ConfigurationBundle must not be applied to the
+ managed cluster in this pass because the component that created the bundle knows they
+ are already deployed with this exact content. The resources are still reported as
+ deployed, so they are not treated as stale and removed.
+ By default (false) the resources are applied.
+ type: boolean
skipNamespaceCreation:
default: false
description: |-
@@ -4647,6 +4746,78 @@ spec:
- releaseNamespace
type: object
type: array
+ driftedResources:
+ description: |-
+ DriftedResources lists the resources that changed out of band since this status was last
+ consumed. It names the resources behind ResourcesChanged, KustomizeResourcesChanged and
+ HelmResourcesChanged. Entries are unique and the list holds at most MaxDriftedResources
+ of them; DriftedResourcesTruncated tells when more resources drifted than are listed.
+ The consumer is expected to clear this list after acting on it, the same way it resets
+ the changed flags.
+ items:
+ description: DriftedResource identifies a resource deployed by Sveltos
+ that was changed out of band.
+ properties:
+ detectedTime:
+ description: DetectedTime is when the drift was detected.
+ format: date-time
+ type: string
+ featureID:
+ description: FeatureID is the feature that deployed the resource.
+ enum:
+ - Resources
+ - Helm
+ - Kustomize
+ type: string
+ group:
+ description: Group of the drifted resource.
+ type: string
+ helmChartRef:
+ description: |-
+ HelmChartRef identifies the Helm release that deployed the resource.
+ Only set when FeatureID is Helm.
+ properties:
+ chartName:
+ description: ChartName is the chart name
+ type: string
+ releaseName:
+ description: ReleaseName is the chart release
+ type: string
+ releaseNamespace:
+ description: ReleaseNamespace is the namespace the release
+ is installed in
+ type: string
+ required:
+ - chartName
+ - releaseName
+ - releaseNamespace
+ type: object
+ kind:
+ description: Kind of the drifted resource.
+ minLength: 1
+ type: string
+ name:
+ description: Name of the drifted resource.
+ minLength: 1
+ type: string
+ namespace:
+ description: |-
+ Namespace of the drifted resource.
+ Empty for resources scoped at cluster level.
+ type: string
+ required:
+ - detectedTime
+ - featureID
+ - group
+ - kind
+ - name
+ type: object
+ type: array
+ driftedResourcesTruncated:
+ description: |-
+ DriftedResourcesTruncated is true when more resources drifted than are listed in
+ DriftedResources.
+ type: boolean
helmResourceHashes:
description: HelmResourceHashes specifies list of resource plus hash.
items:
@@ -7439,6 +7610,52 @@ spec:
ExtraLabels, the value from ExtraLabels will override the existing value.
(Deprecated use Patches instead)
type: object
+ healthMonitoring:
+ description: |-
+ HealthMonitoring, when enabled, continuously monitors the health of the resources
+ this profile deploys in each matching cluster. Unlike ValidateHealths, which are
+ evaluated once during deployment, these checks run for as long as the profile
+ is deployed. Results are available as HealthCheckReports.
+ properties:
+ defaultChecks:
+ default: true
+ description: |-
+ DefaultChecks, when true (default), monitors the Deployments, StatefulSets, DaemonSets,
+ Jobs and PersistentVolumeClaims deployed by this profile (raw resources and Helm charts).
+ Set it to false to monitor only the HealthChecks listed in HealthChecks.
+ type: boolean
+ enabled:
+ description: |-
+ Enabled turns health monitoring on for the resources deployed by this profile.
+ When true, Sveltos creates a HealthCheck and a ClusterHealthCheck for each
+ matching cluster once the profile is provisioned there, and removes them
+ when monitoring is disabled or the cluster does not match anymore.
+ type: boolean
+ healthChecks:
+ description: |-
+ HealthChecks is a list of names of HealthCheck instances to monitor in addition
+ to the default checks. Those are deployed as they are: selecting only the
+ resources deployed by this profile is up to the HealthCheck.
+
+ Only a ClusterProfile can set it. It is ignored for a (namespaced) Profile, which gets the
+ default checks only. A HealthCheck is a cluster-scoped resource referenced by name, and the
+ report it produces is shared by every profile that references it on a given cluster, with
+ no filtering by namespace. Allowing a Profile to reference one would let a tenant name
+ a HealthCheck it does not own, and learn about resources outside its namespace through
+ the shared report. The default checks are safe for a Profile: they select only the
+ resources that profile deployed.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: set
+ required:
+ - enabled
+ type: object
+ x-kubernetes-validations:
+ - message: healthChecks can only be set when enabled is true
+ rule: self.enabled || !has(self.healthChecks) || size(self.healthChecks) == 0
+ - message: 'defaultChecks cannot be false when healthChecks is empty: there would be nothing to monitor'
+ rule: '!self.enabled || !has(self.defaultChecks) || self.defaultChecks || (has(self.healthChecks) && size(self.healthChecks) > 0)'
helmCharts:
description: Helm charts is a list of helm charts that need to be deployed
items:
@@ -7513,6 +7730,21 @@ spec:
disable hooks on install
Default to false
type: boolean
+ existingCRDs:
+ default: Fail
+ description: |-
+ ExistingCRDs controls what happens when a CRD in the chart's crds/ directory (subcharts
+ included) already exists in the cluster with a different definition. CRDs not yet in the
+ cluster are always created. Ignored when SkipCRDs is true.
+ Fail fails the installation and reports the CRDs that differ. No CRD is created or changed.
+ Skip leaves the existing CRD as it is, logs it and carries on with the rest of the chart.
+ Overwrite applies the CRD of the chart over the existing one.
+ Default to Fail
+ enum:
+ - Skip
+ - Fail
+ - Overwrite
+ type: string
recoverAfterConsecutiveFailures:
default: 5
description: |-
@@ -9862,6 +10094,52 @@ spec:
type: object
type: array
x-kubernetes-list-type: atomic
+ healthMonitoring:
+ description: |-
+ HealthMonitoring, when enabled, continuously monitors the health of the resources
+ this profile deploys in each matching cluster. Unlike ValidateHealths, which are
+ evaluated once during deployment, these checks run for as long as the profile
+ is deployed. Results are available as HealthCheckReports.
+ properties:
+ defaultChecks:
+ default: true
+ description: |-
+ DefaultChecks, when true (default), monitors the Deployments, StatefulSets, DaemonSets,
+ Jobs and PersistentVolumeClaims deployed by this profile (raw resources and Helm charts).
+ Set it to false to monitor only the HealthChecks listed in HealthChecks.
+ type: boolean
+ enabled:
+ description: |-
+ Enabled turns health monitoring on for the resources deployed by this profile.
+ When true, Sveltos creates a HealthCheck and a ClusterHealthCheck for each
+ matching cluster once the profile is provisioned there, and removes them
+ when monitoring is disabled or the cluster does not match anymore.
+ type: boolean
+ healthChecks:
+ description: |-
+ HealthChecks is a list of names of HealthCheck instances to monitor in addition
+ to the default checks. Those are deployed as they are: selecting only the
+ resources deployed by this profile is up to the HealthCheck.
+
+ Only a ClusterProfile can set it. It is ignored for a (namespaced) Profile, which gets the
+ default checks only. A HealthCheck is a cluster-scoped resource referenced by name, and the
+ report it produces is shared by every profile that references it on a given cluster, with
+ no filtering by namespace. Allowing a Profile to reference one would let a tenant name
+ a HealthCheck it does not own, and learn about resources outside its namespace through
+ the shared report. The default checks are safe for a Profile: they select only the
+ resources that profile deployed.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: set
+ required:
+ - enabled
+ type: object
+ x-kubernetes-validations:
+ - message: healthChecks can only be set when enabled is true
+ rule: self.enabled || !has(self.healthChecks) || size(self.healthChecks) == 0
+ - message: 'defaultChecks cannot be false when healthChecks is empty: there would be nothing to monitor'
+ rule: '!self.enabled || !has(self.defaultChecks) || self.defaultChecks || (has(self.healthChecks) && size(self.healthChecks) > 0)'
helmCharts:
description: Helm charts is a list of helm charts that need to be deployed
items:
@@ -9936,6 +10214,21 @@ spec:
disable hooks on install
Default to false
type: boolean
+ existingCRDs:
+ default: Fail
+ description: |-
+ ExistingCRDs controls what happens when a CRD in the chart's crds/ directory (subcharts
+ included) already exists in the cluster with a different definition. CRDs not yet in the
+ cluster are always created. Ignored when SkipCRDs is true.
+ Fail fails the installation and reports the CRDs that differ. No CRD is created or changed.
+ Skip leaves the existing CRD as it is, logs it and carries on with the rest of the chart.
+ Overwrite applies the CRD of the chart over the existing one.
+ Default to Fail
+ enum:
+ - Skip
+ - Fail
+ - Overwrite
+ type: string
recoverAfterConsecutiveFailures:
default: 5
description: |-
@@ -13404,6 +13697,52 @@ spec:
ExtraLabels, the value from ExtraLabels will override the existing value.
(Deprecated use Patches instead)
type: object
+ healthMonitoring:
+ description: |-
+ HealthMonitoring, when enabled, continuously monitors the health of the resources
+ this profile deploys in each matching cluster. Unlike ValidateHealths, which are
+ evaluated once during deployment, these checks run for as long as the profile
+ is deployed. Results are available as HealthCheckReports.
+ properties:
+ defaultChecks:
+ default: true
+ description: |-
+ DefaultChecks, when true (default), monitors the Deployments, StatefulSets, DaemonSets,
+ Jobs and PersistentVolumeClaims deployed by this profile (raw resources and Helm charts).
+ Set it to false to monitor only the HealthChecks listed in HealthChecks.
+ type: boolean
+ enabled:
+ description: |-
+ Enabled turns health monitoring on for the resources deployed by this profile.
+ When true, Sveltos creates a HealthCheck and a ClusterHealthCheck for each
+ matching cluster once the profile is provisioned there, and removes them
+ when monitoring is disabled or the cluster does not match anymore.
+ type: boolean
+ healthChecks:
+ description: |-
+ HealthChecks is a list of names of HealthCheck instances to monitor in addition
+ to the default checks. Those are deployed as they are: selecting only the
+ resources deployed by this profile is up to the HealthCheck.
+
+ Only a ClusterProfile can set it. It is ignored for a (namespaced) Profile, which gets the
+ default checks only. A HealthCheck is a cluster-scoped resource referenced by name, and the
+ report it produces is shared by every profile that references it on a given cluster, with
+ no filtering by namespace. Allowing a Profile to reference one would let a tenant name
+ a HealthCheck it does not own, and learn about resources outside its namespace through
+ the shared report. The default checks are safe for a Profile: they select only the
+ resources that profile deployed.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: set
+ required:
+ - enabled
+ type: object
+ x-kubernetes-validations:
+ - message: healthChecks can only be set when enabled is true
+ rule: self.enabled || !has(self.healthChecks) || size(self.healthChecks) == 0
+ - message: 'defaultChecks cannot be false when healthChecks is empty: there would be nothing to monitor'
+ rule: '!self.enabled || !has(self.defaultChecks) || self.defaultChecks || (has(self.healthChecks) && size(self.healthChecks) > 0)'
helmCharts:
description: Helm charts is a list of helm charts that need to be deployed
items:
@@ -13478,6 +13817,21 @@ spec:
disable hooks on install
Default to false
type: boolean
+ existingCRDs:
+ default: Fail
+ description: |-
+ ExistingCRDs controls what happens when a CRD in the chart's crds/ directory (subcharts
+ included) already exists in the cluster with a different definition. CRDs not yet in the
+ cluster are always created. Ignored when SkipCRDs is true.
+ Fail fails the installation and reports the CRDs that differ. No CRD is created or changed.
+ Skip leaves the existing CRD as it is, logs it and carries on with the rest of the chart.
+ Overwrite applies the CRD of the chart over the existing one.
+ Default to Fail
+ enum:
+ - Skip
+ - Fail
+ - Overwrite
+ type: string
recoverAfterConsecutiveFailures:
default: 5
description: |-
@@ -15501,6 +15855,67 @@ spec:
items:
type: string
type: array
+ driftHistory:
+ description: |-
+ DriftHistory records the configuration drifts detected on the resources this feature
+ deployed. Only set when SyncMode is ContinuousWithDriftDetection. It is kept after a
+ drift has been corrected by a redeploy, and every new drift is added to it.
+ properties:
+ lastDetectedTime:
+ description: |-
+ LastDetectedTime is when the most recent drift was detected. When the component that
+ detected it did not report a time, it is the time the drift was collected.
+ format: date-time
+ type: string
+ resources:
+ description: |-
+ Resources lists the resources that drifted, the most recently drifted first. A resource
+ that drifts again is listed once, with the time of its latest drift. When more than
+ MaxDriftedResources resources drifted, the oldest ones are dropped. Empty when the
+ component that detected the drift did not report which resources changed.
+ items:
+ description: DriftedResourceRef identifies a resource that drifted.
+ properties:
+ detectedTime:
+ description: DetectedTime is when the latest drift of this resource was detected.
+ format: date-time
+ type: string
+ group:
+ description: Group of the resource.
+ type: string
+ helmReleaseName:
+ description: |-
+ HelmReleaseName is the name of the Helm release that deployed the resource.
+ Only set for the Helm feature.
+ type: string
+ helmReleaseNamespace:
+ description: |-
+ HelmReleaseNamespace is the namespace of the Helm release that deployed the resource.
+ Only set for the Helm feature.
+ type: string
+ kind:
+ description: Kind of the resource.
+ type: string
+ name:
+ description: Name of the resource.
+ type: string
+ namespace:
+ description: Namespace of the resource. Empty for cluster scoped resources.
+ type: string
+ required:
+ - detectedTime
+ - kind
+ - name
+ type: object
+ type: array
+ truncated:
+ description: |-
+ Truncated is true when the most recent drift involved more resources than the component
+ that detected it could report, so some of the resources that drifted are not listed.
+ type: boolean
+ required:
+ - lastDetectedTime
+ type: object
failureMessage:
description: FailureMessage provides more information about the error.
type: string
@@ -15555,6 +15970,15 @@ spec:
directly managed by ClusterProfile.
items:
properties:
+ appliedContentHash:
+ description: |-
+ AppliedContentHash is, in pull mode, the hash of what sveltos-applier last confirmed as applied
+ for this chart: the rendered resources plus the settings that change how they are applied.
+ While it matches the hash of the chart about to be applied, and drift-detection has not
+ reported the chart, sveltos-applier is told not to apply it again.
+ Not set in push mode.
+ format: byte
+ type: string
chartName:
description: |-
ChartName, RepositoryName, RepoURL, and ChartVersion mirror the fully resolved
@@ -15624,6 +16048,14 @@ spec:
type: string
repositoryName:
type: string
+ stagedContentHash:
+ description: |-
+ StagedContentHash is, in pull mode, the hash of what has been staged for sveltos-applier and
+ is not yet confirmed as applied. It becomes AppliedContentHash once sveltos-applier reports
+ success. While set, the chart is never skipped, so a failed apply is retried.
+ Not set in push mode.
+ format: byte
+ type: string
status:
description: |-
Status indicates whether ClusterSummary can manage the helm
@@ -18521,6 +18953,52 @@ spec:
ExtraLabels, the value from ExtraLabels will override the existing value.
(Deprecated use Patches instead)
type: object
+ healthMonitoring:
+ description: |-
+ HealthMonitoring, when enabled, continuously monitors the health of the resources
+ this profile deploys in each matching cluster. Unlike ValidateHealths, which are
+ evaluated once during deployment, these checks run for as long as the profile
+ is deployed. Results are available as HealthCheckReports.
+ properties:
+ defaultChecks:
+ default: true
+ description: |-
+ DefaultChecks, when true (default), monitors the Deployments, StatefulSets, DaemonSets,
+ Jobs and PersistentVolumeClaims deployed by this profile (raw resources and Helm charts).
+ Set it to false to monitor only the HealthChecks listed in HealthChecks.
+ type: boolean
+ enabled:
+ description: |-
+ Enabled turns health monitoring on for the resources deployed by this profile.
+ When true, Sveltos creates a HealthCheck and a ClusterHealthCheck for each
+ matching cluster once the profile is provisioned there, and removes them
+ when monitoring is disabled or the cluster does not match anymore.
+ type: boolean
+ healthChecks:
+ description: |-
+ HealthChecks is a list of names of HealthCheck instances to monitor in addition
+ to the default checks. Those are deployed as they are: selecting only the
+ resources deployed by this profile is up to the HealthCheck.
+
+ Only a ClusterProfile can set it. It is ignored for a (namespaced) Profile, which gets the
+ default checks only. A HealthCheck is a cluster-scoped resource referenced by name, and the
+ report it produces is shared by every profile that references it on a given cluster, with
+ no filtering by namespace. Allowing a Profile to reference one would let a tenant name
+ a HealthCheck it does not own, and learn about resources outside its namespace through
+ the shared report. The default checks are safe for a Profile: they select only the
+ resources that profile deployed.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: set
+ required:
+ - enabled
+ type: object
+ x-kubernetes-validations:
+ - message: healthChecks can only be set when enabled is true
+ rule: self.enabled || !has(self.healthChecks) || size(self.healthChecks) == 0
+ - message: 'defaultChecks cannot be false when healthChecks is empty: there would be nothing to monitor'
+ rule: '!self.enabled || !has(self.defaultChecks) || self.defaultChecks || (has(self.healthChecks) && size(self.healthChecks) > 0)'
helmCharts:
description: Helm charts is a list of helm charts that need to be deployed
items:
@@ -18595,6 +19073,21 @@ spec:
disable hooks on install
Default to false
type: boolean
+ existingCRDs:
+ default: Fail
+ description: |-
+ ExistingCRDs controls what happens when a CRD in the chart's crds/ directory (subcharts
+ included) already exists in the cluster with a different definition. CRDs not yet in the
+ cluster are always created. Ignored when SkipCRDs is true.
+ Fail fails the installation and reports the CRDs that differ. No CRD is created or changed.
+ Skip leaves the existing CRD as it is, logs it and carries on with the rest of the chart.
+ Overwrite applies the CRD of the chart over the existing one.
+ Default to Fail
+ enum:
+ - Skip
+ - Fail
+ - Overwrite
+ type: string
recoverAfterConsecutiveFailures:
default: 5
description: |-
diff --git a/pkg/crds/crds.yaml b/pkg/crds/crds.yaml
index b428807..fdd363c 100644
--- a/pkg/crds/crds.yaml
+++ b/pkg/crds/crds.yaml
@@ -746,6 +746,55 @@ spec:
spec:
description: ClusterHealthCheckSpec defines the desired state of ClusterHealthCheck
properties:
+ clusterRefs:
+ description: |-
+ ClusterRefs identifies clusters to associate to.
+ These are added to the clusters matched by ClusterSelector.
+ items:
+ description: ObjectReference contains enough information to let
+ you inspect or modify the referred object.
+ properties:
+ apiVersion:
+ description: API version of the referent.
+ type: string
+ fieldPath:
+ description: |-
+ If referring to a piece of an object instead of an entire object, this string
+ should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
+ For example, if the object reference is to a container within a pod, this would take on a value like:
+ "spec.containers{name}" (where "name" refers to the name of the container that triggered
+ the event) or if no container name is specified "spec.containers[2]" (container with
+ index 2 in this pod). This syntax is chosen only to have some well-defined way of
+ referencing a part of an object.
+ type: string
+ kind:
+ description: |-
+ Kind of the referent.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+ type: string
+ name:
+ description: |-
+ Name of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ type: string
+ namespace:
+ description: |-
+ Namespace of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
+ type: string
+ resourceVersion:
+ description: |-
+ Specific resourceVersion to which this reference is made, if any.
+ More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
+ type: string
+ uid:
+ description: |-
+ UID of the referent.
+ More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
+ type: string
+ type: object
+ x-kubernetes-map-type: atomic
+ type: array
clusterSelector:
description: Selector identifies clusters to associate to.
properties:
@@ -913,6 +962,31 @@ spec:
type: string
type: object
x-kubernetes-map-type: atomic
+ policy:
+ description: |-
+ Policy tunes when this notification is delivered, to reduce the number of notifications
+ sent while a cluster is changing. When not set, a notification is delivered every time the
+ status of a liveness check changes or, while a liveness check keeps failing, every time its
+ failure message changes.
+ properties:
+ failingFor:
+ description: |-
+ FailingFor is how long a cluster has to keep failing before a failure is delivered.
+ A failure ending before that is never delivered, and neither is its recovery.
+ type: string
+ minInterval:
+ description: |-
+ MinInterval is the minimum time between two notifications for the same cluster.
+ Changes happening inside the interval are coalesced: when the interval ends, the current
+ state is delivered if it differs from the last delivered one.
+ type: string
+ onlyOnTransition:
+ description: |-
+ OnlyOnTransition, when true, delivers a notification only when the cluster moves between
+ passing and failing. A change of the failure message while the cluster keeps failing is not
+ delivered. A cluster found passing the first time it is evaluated is not delivered either.
+ type: boolean
+ type: object
type:
description: NotificationType specifies the type of notification
enum:
@@ -1068,6 +1142,22 @@ spec:
FailureMessage is a human consumable message explaining the
misconfiguration
type: string
+ lastSentFailing:
+ description: |-
+ LastSentFailing tells whether the cluster was failing when this notification
+ was last delivered. Only set for notifications with a Policy.
+ type: boolean
+ lastSentMessageHash:
+ description: |-
+ LastSentMessageHash is a hash of the failure message delivered the last time.
+ Used to detect a change of the failure message. Only set for notifications with a Policy.
+ type: string
+ lastSentTime:
+ description: |-
+ LastSentTime is when this notification was last delivered for the cluster.
+ Only set for notifications with a Policy.
+ format: date-time
+ type: string
name:
description: Name of the notification check.
type: string
@@ -1090,7 +1180,7 @@ spec:
matchingClusters:
description: |-
MatchingClusterRefs reference all the clusters currently matching
- ClusterHealthCheck ClusterSelector
+ ClusterHealthCheck ClusterSelector or listed in ClusterRefs
items:
description: ObjectReference contains enough information to let
you inspect or modify the referred object.
@@ -1514,6 +1604,15 @@ spec:
type: string
type: array
x-kubernetes-list-type: atomic
+ skipApply:
+ default: false
+ description: |-
+ SkipApply indicates the resources in this ConfigurationBundle must not be applied to the
+ managed cluster in this pass because the component that created the bundle knows they
+ are already deployed with this exact content. The resources are still reported as
+ deployed, so they are not treated as stale and removed.
+ By default (false) the resources are applied.
+ type: boolean
skipNamespaceCreation:
default: false
description: |-
@@ -4629,6 +4728,78 @@ spec:
- releaseNamespace
type: object
type: array
+ driftedResources:
+ description: |-
+ DriftedResources lists the resources that changed out of band since this status was last
+ consumed. It names the resources behind ResourcesChanged, KustomizeResourcesChanged and
+ HelmResourcesChanged. Entries are unique and the list holds at most MaxDriftedResources
+ of them; DriftedResourcesTruncated tells when more resources drifted than are listed.
+ The consumer is expected to clear this list after acting on it, the same way it resets
+ the changed flags.
+ items:
+ description: DriftedResource identifies a resource deployed by Sveltos
+ that was changed out of band.
+ properties:
+ detectedTime:
+ description: DetectedTime is when the drift was detected.
+ format: date-time
+ type: string
+ featureID:
+ description: FeatureID is the feature that deployed the resource.
+ enum:
+ - Resources
+ - Helm
+ - Kustomize
+ type: string
+ group:
+ description: Group of the drifted resource.
+ type: string
+ helmChartRef:
+ description: |-
+ HelmChartRef identifies the Helm release that deployed the resource.
+ Only set when FeatureID is Helm.
+ properties:
+ chartName:
+ description: ChartName is the chart name
+ type: string
+ releaseName:
+ description: ReleaseName is the chart release
+ type: string
+ releaseNamespace:
+ description: ReleaseNamespace is the namespace the release
+ is installed in
+ type: string
+ required:
+ - chartName
+ - releaseName
+ - releaseNamespace
+ type: object
+ kind:
+ description: Kind of the drifted resource.
+ minLength: 1
+ type: string
+ name:
+ description: Name of the drifted resource.
+ minLength: 1
+ type: string
+ namespace:
+ description: |-
+ Namespace of the drifted resource.
+ Empty for resources scoped at cluster level.
+ type: string
+ required:
+ - detectedTime
+ - featureID
+ - group
+ - kind
+ - name
+ type: object
+ type: array
+ driftedResourcesTruncated:
+ description: |-
+ DriftedResourcesTruncated is true when more resources drifted than are listed in
+ DriftedResources.
+ type: boolean
helmResourceHashes:
description: HelmResourceHashes specifies list of resource plus hash.
items:
@@ -7421,6 +7592,52 @@ spec:
ExtraLabels, the value from ExtraLabels will override the existing value.
(Deprecated use Patches instead)
type: object
+ healthMonitoring:
+ description: |-
+ HealthMonitoring, when enabled, continuously monitors the health of the resources
+ this profile deploys in each matching cluster. Unlike ValidateHealths, which are
+ evaluated once during deployment, these checks run for as long as the profile
+ is deployed. Results are available as HealthCheckReports.
+ properties:
+ defaultChecks:
+ default: true
+ description: |-
+ DefaultChecks, when true (default), monitors the Deployments, StatefulSets, DaemonSets,
+ Jobs and PersistentVolumeClaims deployed by this profile (raw resources and Helm charts).
+ Set it to false to monitor only the HealthChecks listed in HealthChecks.
+ type: boolean
+ enabled:
+ description: |-
+ Enabled turns health monitoring on for the resources deployed by this profile.
+ When true, Sveltos creates a HealthCheck and a ClusterHealthCheck for each
+ matching cluster once the profile is provisioned there, and removes them
+ when monitoring is disabled or the cluster does not match anymore.
+ type: boolean
+ healthChecks:
+ description: |-
+ HealthChecks is a list of names of HealthCheck instances to monitor in addition
+ to the default checks. Those are deployed as they are: selecting only the
+ resources deployed by this profile is up to the HealthCheck.
+
+ Only a ClusterProfile can set it. It is ignored for a (namespaced) Profile, which gets the
+ default checks only. A HealthCheck is a cluster-scoped resource referenced by name, and the
+ report it produces is shared by every profile that references it on a given cluster, with
+ no filtering by namespace. Allowing a Profile to reference one would let a tenant name
+ a HealthCheck it does not own, and learn about resources outside its namespace through
+ the shared report. The default checks are safe for a Profile: they select only the
+ resources that profile deployed.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: set
+ required:
+ - enabled
+ type: object
+ x-kubernetes-validations:
+ - message: healthChecks can only be set when enabled is true
+ rule: self.enabled || !has(self.healthChecks) || size(self.healthChecks) == 0
+ - message: 'defaultChecks cannot be false when healthChecks is empty: there would be nothing to monitor'
+ rule: '!self.enabled || !has(self.defaultChecks) || self.defaultChecks || (has(self.healthChecks) && size(self.healthChecks) > 0)'
helmCharts:
description: Helm charts is a list of helm charts that need to be deployed
items:
@@ -7495,6 +7712,21 @@ spec:
disable hooks on install
Default to false
type: boolean
+ existingCRDs:
+ default: Fail
+ description: |-
+ ExistingCRDs controls what happens when a CRD in the chart's crds/ directory (subcharts
+ included) already exists in the cluster with a different definition. CRDs not yet in the
+ cluster are always created. Ignored when SkipCRDs is true.
+ Fail fails the installation and reports the CRDs that differ. No CRD is created or changed.
+ Skip leaves the existing CRD as it is, logs it and carries on with the rest of the chart.
+ Overwrite applies the CRD of the chart over the existing one.
+ Default to Fail
+ enum:
+ - Skip
+ - Fail
+ - Overwrite
+ type: string
recoverAfterConsecutiveFailures:
default: 5
description: |-
@@ -9844,6 +10076,52 @@ spec:
type: object
type: array
x-kubernetes-list-type: atomic
+ healthMonitoring:
+ description: |-
+ HealthMonitoring, when enabled, continuously monitors the health of the resources
+ this profile deploys in each matching cluster. Unlike ValidateHealths, which are
+ evaluated once during deployment, these checks run for as long as the profile
+ is deployed. Results are available as HealthCheckReports.
+ properties:
+ defaultChecks:
+ default: true
+ description: |-
+ DefaultChecks, when true (default), monitors the Deployments, StatefulSets, DaemonSets,
+ Jobs and PersistentVolumeClaims deployed by this profile (raw resources and Helm charts).
+ Set it to false to monitor only the HealthChecks listed in HealthChecks.
+ type: boolean
+ enabled:
+ description: |-
+ Enabled turns health monitoring on for the resources deployed by this profile.
+ When true, Sveltos creates a HealthCheck and a ClusterHealthCheck for each
+ matching cluster once the profile is provisioned there, and removes them
+ when monitoring is disabled or the cluster does not match anymore.
+ type: boolean
+ healthChecks:
+ description: |-
+ HealthChecks is a list of names of HealthCheck instances to monitor in addition
+ to the default checks. Those are deployed as they are: selecting only the
+ resources deployed by this profile is up to the HealthCheck.
+
+ Only a ClusterProfile can set it. It is ignored for a (namespaced) Profile, which gets the
+ default checks only. A HealthCheck is a cluster-scoped resource referenced by name, and the
+ report it produces is shared by every profile that references it on a given cluster, with
+ no filtering by namespace. Allowing a Profile to reference one would let a tenant name
+ a HealthCheck it does not own, and learn about resources outside its namespace through
+ the shared report. The default checks are safe for a Profile: they select only the
+ resources that profile deployed.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: set
+ required:
+ - enabled
+ type: object
+ x-kubernetes-validations:
+ - message: healthChecks can only be set when enabled is true
+ rule: self.enabled || !has(self.healthChecks) || size(self.healthChecks) == 0
+ - message: 'defaultChecks cannot be false when healthChecks is empty: there would be nothing to monitor'
+ rule: '!self.enabled || !has(self.defaultChecks) || self.defaultChecks || (has(self.healthChecks) && size(self.healthChecks) > 0)'
helmCharts:
description: Helm charts is a list of helm charts that need to be deployed
items:
@@ -9918,6 +10196,21 @@ spec:
disable hooks on install
Default to false
type: boolean
+ existingCRDs:
+ default: Fail
+ description: |-
+ ExistingCRDs controls what happens when a CRD in the chart's crds/ directory (subcharts
+ included) already exists in the cluster with a different definition. CRDs not yet in the
+ cluster are always created. Ignored when SkipCRDs is true.
+ Fail fails the installation and reports the CRDs that differ. No CRD is created or changed.
+ Skip leaves the existing CRD as it is, logs it and carries on with the rest of the chart.
+ Overwrite applies the CRD of the chart over the existing one.
+ Default to Fail
+ enum:
+ - Skip
+ - Fail
+ - Overwrite
+ type: string
recoverAfterConsecutiveFailures:
default: 5
description: |-
@@ -13386,6 +13679,52 @@ spec:
ExtraLabels, the value from ExtraLabels will override the existing value.
(Deprecated use Patches instead)
type: object
+ healthMonitoring:
+ description: |-
+ HealthMonitoring, when enabled, continuously monitors the health of the resources
+ this profile deploys in each matching cluster. Unlike ValidateHealths, which are
+ evaluated once during deployment, these checks run for as long as the profile
+ is deployed. Results are available as HealthCheckReports.
+ properties:
+ defaultChecks:
+ default: true
+ description: |-
+ DefaultChecks, when true (default), monitors the Deployments, StatefulSets, DaemonSets,
+ Jobs and PersistentVolumeClaims deployed by this profile (raw resources and Helm charts).
+ Set it to false to monitor only the HealthChecks listed in HealthChecks.
+ type: boolean
+ enabled:
+ description: |-
+ Enabled turns health monitoring on for the resources deployed by this profile.
+ When true, Sveltos creates a HealthCheck and a ClusterHealthCheck for each
+ matching cluster once the profile is provisioned there, and removes them
+ when monitoring is disabled or the cluster does not match anymore.
+ type: boolean
+ healthChecks:
+ description: |-
+ HealthChecks is a list of names of HealthCheck instances to monitor in addition
+ to the default checks. Those are deployed as they are: selecting only the
+ resources deployed by this profile is up to the HealthCheck.
+
+ Only a ClusterProfile can set it. It is ignored for a (namespaced) Profile, which gets the
+ default checks only. A HealthCheck is a cluster-scoped resource referenced by name, and the
+ report it produces is shared by every profile that references it on a given cluster, with
+ no filtering by namespace. Allowing a Profile to reference one would let a tenant name
+ a HealthCheck it does not own, and learn about resources outside its namespace through
+ the shared report. The default checks are safe for a Profile: they select only the
+ resources that profile deployed.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: set
+ required:
+ - enabled
+ type: object
+ x-kubernetes-validations:
+ - message: healthChecks can only be set when enabled is true
+ rule: self.enabled || !has(self.healthChecks) || size(self.healthChecks) == 0
+ - message: 'defaultChecks cannot be false when healthChecks is empty: there would be nothing to monitor'
+ rule: '!self.enabled || !has(self.defaultChecks) || self.defaultChecks || (has(self.healthChecks) && size(self.healthChecks) > 0)'
helmCharts:
description: Helm charts is a list of helm charts that need to be deployed
items:
@@ -13460,6 +13799,21 @@ spec:
disable hooks on install
Default to false
type: boolean
+ existingCRDs:
+ default: Fail
+ description: |-
+ ExistingCRDs controls what happens when a CRD in the chart's crds/ directory (subcharts
+ included) already exists in the cluster with a different definition. CRDs not yet in the
+ cluster are always created. Ignored when SkipCRDs is true.
+ Fail fails the installation and reports the CRDs that differ. No CRD is created or changed.
+ Skip leaves the existing CRD as it is, logs it and carries on with the rest of the chart.
+ Overwrite applies the CRD of the chart over the existing one.
+ Default to Fail
+ enum:
+ - Skip
+ - Fail
+ - Overwrite
+ type: string
recoverAfterConsecutiveFailures:
default: 5
description: |-
@@ -15483,6 +15837,67 @@ spec:
items:
type: string
type: array
+ driftHistory:
+ description: |-
+ DriftHistory records the configuration drifts detected on the resources this feature
+ deployed. Only set when SyncMode is ContinuousWithDriftDetection. It is kept after a
+ drift has been corrected by a redeploy, and every new drift is added to it.
+ properties:
+ lastDetectedTime:
+ description: |-
+ LastDetectedTime is when the most recent drift was detected. When the component that
+ detected it did not report a time, it is the time the drift was collected.
+ format: date-time
+ type: string
+ resources:
+ description: |-
+ Resources lists the resources that drifted, the most recently drifted first. A resource
+ that drifts again is listed once, with the time of its latest drift. When more than
+ MaxDriftedResources resources drifted, the oldest ones are dropped. Empty when the
+ component that detected the drift did not report which resources changed.
+ items:
+ description: DriftedResourceRef identifies a resource that drifted.
+ properties:
+ detectedTime:
+ description: DetectedTime is when the latest drift of this resource was detected.
+ format: date-time
+ type: string
+ group:
+ description: Group of the resource.
+ type: string
+ helmReleaseName:
+ description: |-
+ HelmReleaseName is the name of the Helm release that deployed the resource.
+ Only set for the Helm feature.
+ type: string
+ helmReleaseNamespace:
+ description: |-
+ HelmReleaseNamespace is the namespace of the Helm release that deployed the resource.
+ Only set for the Helm feature.
+ type: string
+ kind:
+ description: Kind of the resource.
+ type: string
+ name:
+ description: Name of the resource.
+ type: string
+ namespace:
+ description: Namespace of the resource. Empty for cluster scoped resources.
+ type: string
+ required:
+ - detectedTime
+ - kind
+ - name
+ type: object
+ type: array
+ truncated:
+ description: |-
+ Truncated is true when the most recent drift involved more resources than the component
+ that detected it could report, so some of the resources that drifted are not listed.
+ type: boolean
+ required:
+ - lastDetectedTime
+ type: object
failureMessage:
description: FailureMessage provides more information about the error.
type: string
@@ -15537,6 +15952,15 @@ spec:
directly managed by ClusterProfile.
items:
properties:
+ appliedContentHash:
+ description: |-
+ AppliedContentHash is, in pull mode, the hash of what sveltos-applier last confirmed as applied
+ for this chart: the rendered resources plus the settings that change how they are applied.
+ While it matches the hash of the chart about to be applied, and drift-detection has not
+ reported the chart, sveltos-applier is told not to apply it again.
+ Not set in push mode.
+ format: byte
+ type: string
chartName:
description: |-
ChartName, RepositoryName, RepoURL, and ChartVersion mirror the fully resolved
@@ -15606,6 +16030,14 @@ spec:
type: string
repositoryName:
type: string
+ stagedContentHash:
+ description: |-
+ StagedContentHash is, in pull mode, the hash of what has been staged for sveltos-applier and
+ is not yet confirmed as applied. It becomes AppliedContentHash once sveltos-applier reports
+ success. While set, the chart is never skipped, so a failed apply is retried.
+ Not set in push mode.
+ format: byte
+ type: string
status:
description: |-
Status indicates whether ClusterSummary can manage the helm
@@ -18503,6 +18935,52 @@ spec:
ExtraLabels, the value from ExtraLabels will override the existing value.
(Deprecated use Patches instead)
type: object
+ healthMonitoring:
+ description: |-
+ HealthMonitoring, when enabled, continuously monitors the health of the resources
+ this profile deploys in each matching cluster. Unlike ValidateHealths, which are
+ evaluated once during deployment, these checks run for as long as the profile
+ is deployed. Results are available as HealthCheckReports.
+ properties:
+ defaultChecks:
+ default: true
+ description: |-
+ DefaultChecks, when true (default), monitors the Deployments, StatefulSets, DaemonSets,
+ Jobs and PersistentVolumeClaims deployed by this profile (raw resources and Helm charts).
+ Set it to false to monitor only the HealthChecks listed in HealthChecks.
+ type: boolean
+ enabled:
+ description: |-
+ Enabled turns health monitoring on for the resources deployed by this profile.
+ When true, Sveltos creates a HealthCheck and a ClusterHealthCheck for each
+ matching cluster once the profile is provisioned there, and removes them
+ when monitoring is disabled or the cluster does not match anymore.
+ type: boolean
+ healthChecks:
+ description: |-
+ HealthChecks is a list of names of HealthCheck instances to monitor in addition
+ to the default checks. Those are deployed as they are: selecting only the
+ resources deployed by this profile is up to the HealthCheck.
+
+ Only a ClusterProfile can set it. It is ignored for a (namespaced) Profile, which gets the
+ default checks only. A HealthCheck is a cluster-scoped resource referenced by name, and the
+ report it produces is shared by every profile that references it on a given cluster, with
+ no filtering by namespace. Allowing a Profile to reference one would let a tenant name
+ a HealthCheck it does not own, and learn about resources outside its namespace through
+ the shared report. The default checks are safe for a Profile: they select only the
+ resources that profile deployed.
+ items:
+ type: string
+ type: array
+ x-kubernetes-list-type: set
+ required:
+ - enabled
+ type: object
+ x-kubernetes-validations:
+ - message: healthChecks can only be set when enabled is true
+ rule: self.enabled || !has(self.healthChecks) || size(self.healthChecks) == 0
+ - message: 'defaultChecks cannot be false when healthChecks is empty: there would be nothing to monitor'
+ rule: '!self.enabled || !has(self.defaultChecks) || self.defaultChecks || (has(self.healthChecks) && size(self.healthChecks) > 0)'
helmCharts:
description: Helm charts is a list of helm charts that need to be deployed
items:
@@ -18577,6 +19055,21 @@ spec:
disable hooks on install
Default to false
type: boolean
+ existingCRDs:
+ default: Fail
+ description: |-
+ ExistingCRDs controls what happens when a CRD in the chart's crds/ directory (subcharts
+ included) already exists in the cluster with a different definition. CRDs not yet in the
+ cluster are always created. Ignored when SkipCRDs is true.
+ Fail fails the installation and reports the CRDs that differ. No CRD is created or changed.
+ Skip leaves the existing CRD as it is, logs it and carries on with the rest of the chart.
+ Overwrite applies the CRD of the chart over the existing one.
+ Default to Fail
+ enum:
+ - Skip
+ - Fail
+ - Overwrite
+ type: string
recoverAfterConsecutiveFailures:
default: 5
description: |-