From 9ca7b6d135871fb4b2c538b69ee30accfc9ee447 Mon Sep 17 00:00:00 2001 From: yxxhero <11087727+yxxhero@users.noreply.github.com> Date: Wed, 23 Oct 2024 09:41:12 +0800 Subject: [PATCH] feat: add skip-schema-validation feature (#676) * feat: add skip-schema-validation feature Signed-off-by: yxxhero * feat: add --skip-schema-validation flag Signed-off-by: yxxhero --------- Signed-off-by: yxxhero --- README.md | 2 ++ cmd/helm3.go | 4 ++++ cmd/upgrade.go | 2 ++ 3 files changed, 8 insertions(+) diff --git a/README.md b/README.md index 1a9aa675..7a1db62e 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,7 @@ Flags: --disable-validation disables rendered templates validation against the Kubernetes cluster you are currently pointing to. This is the same validation performed on an install --dry-run disables cluster access and show diff as if it was install. Implies --install, --reset-values, and --disable-validation --enable-dns enable DNS lookups when rendering templates + --skip-schema-validation disables rendered templates validation against the Kubernetes OpenAPI Schema -D, --find-renames float32 Enable rename detection if set to any value greater than 0. If specified, the value denotes the maximum fraction of changed content as lines added + removed compared to total lines in a diff for considering it a rename. Only objects of the same Kind are attempted to be matched -h, --help help for diff --include-tests enable the diffing of the helm test hooks @@ -185,6 +186,7 @@ Flags: --disable-validation disables rendered templates validation against the Kubernetes cluster you are currently pointing to. This is the same validation performed on an install --dry-run disables cluster access and show diff as if it was install. Implies --install, --reset-values, and --disable-validation --enable-dns enable DNS lookups when rendering templates + --skip-schema-validation skip validation of rendered templates against the Kubernetes OpenAPI Schema -D, --find-renames float32 Enable rename detection if set to any value greater than 0. If specified, the value denotes the maximum fraction of changed content as lines added + removed compared to total lines in a diff for considering it a rename. Only objects of the same Kind are attempted to be matched -h, --help help for upgrade --include-tests enable the diffing of the helm test hooks diff --git a/cmd/helm3.go b/cmd/helm3.go index f3f7db9e..4ff147c5 100644 --- a/cmd/helm3.go +++ b/cmd/helm3.go @@ -215,6 +215,10 @@ func (d *diffCmd) template(isUpgrade bool) ([]byte, error) { flags = append(flags, "--enable-dns") } + if d.SkipSchemaValidation { + flags = append(flags, "--skip-schema-validation") + } + var ( subcmd string filter func([]byte) []byte diff --git a/cmd/upgrade.go b/cmd/upgrade.go index 21ffd724..59344f56 100644 --- a/cmd/upgrade.go +++ b/cmd/upgrade.go @@ -47,6 +47,7 @@ type diffCmd struct { disableValidation bool disableOpenAPIValidation bool enableDNS bool + SkipSchemaValidation bool namespace string // namespace to assume the release to be installed into. Defaults to the current kube config namespace. valueFiles valueFiles values []string @@ -255,6 +256,7 @@ func newChartCommand() *cobra.Command { " --dry-run=server enables the cluster access with helm-get and the lookup template function.") f.Lookup("dry-run").NoOptDefVal = dryRunNoOptDefVal f.BoolVar(&diff.enableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") + f.BoolVar(&diff.SkipSchemaValidation, "skip-schema-validation", false, "skip validation of the rendered manifests against the Kubernetes OpenAPI schema") f.StringVar(&diff.postRenderer, "post-renderer", "", "the path to an executable to be used for post rendering. If it exists in $PATH, the binary will be used, otherwise it will try to look for the executable at the given path") f.StringArrayVar(&diff.postRendererArgs, "post-renderer-args", []string{}, "an argument to the post-renderer (can specify multiple)") f.BoolVar(&diff.insecureSkipTLSVerify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart download")