From c378d78559671989c2ce96254b3a8e241f4437aa Mon Sep 17 00:00:00 2001 From: Gianluca Mardente Date: Sun, 1 Nov 2026 09:11:52 +0100 Subject: [PATCH] chore: Prepare for release v1.17.0 --- .github/workflows/codeql.yaml | 6 +- .github/workflows/main.yaml | 4 +- .github/workflows/scorecard.yaml | 6 +- Dockerfile | 2 +- Makefile | 4 +- README.md | 5 + go.mod | 70 ++--- go.sum | 136 ++++----- hack/tools/go.mod | 28 +- hack/tools/go.sum | 56 ++-- k8s/manifest.yaml | 2 +- manifest/manifest.yaml | 2 +- pkg/crds/crds.go | 495 ++++++++++++++++++++++++++++++- pkg/crds/crds.yaml | 495 ++++++++++++++++++++++++++++++- 14 files changed, 1151 insertions(+), 160 deletions(-) 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 @@ +

+ + Admiral Sveltopus, the Sveltos mascot +

+ ## 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: |-