From f722ec99d6594700e85b6d91acc4cb91030aed04 Mon Sep 17 00:00:00 2001 From: Timofey Kirillov Date: Wed, 13 Jul 2022 11:51:47 +0300 Subject: [PATCH] fix(bundles): --secret-values option for bundle-render command + Fix panic when null-value in secret-values.yaml exist. Refs https://github.com/werf/werf/issues/4600 Signed-off-by: Timofey Kirillov --- cmd/werf/bundle/render/render.go | 8 +++++++- pkg/util/secretvalues/mask.go | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/cmd/werf/bundle/render/render.go b/cmd/werf/bundle/render/render.go index e45647cd7a..02264fe16b 100644 --- a/cmd/werf/bundle/render/render.go +++ b/cmd/werf/bundle/render/render.go @@ -21,6 +21,7 @@ import ( "github.com/werf/werf/pkg/deploy/helm/chart_extender" "github.com/werf/werf/pkg/deploy/helm/chart_extender/helpers" "github.com/werf/werf/pkg/deploy/helm/command_helpers" + "github.com/werf/werf/pkg/deploy/secrets_manager" "github.com/werf/werf/pkg/storage" "github.com/werf/werf/pkg/util" "github.com/werf/werf/pkg/werf" @@ -85,6 +86,8 @@ func NewCmd(ctx context.Context) *cobra.Command { common.SetupSetString(&commonCmdData, cmd) common.SetupSetFile(&commonCmdData, cmd) common.SetupValues(&commonCmdData, cmd) + common.SetupSecretValues(&commonCmdData, cmd) + common.SetupIgnoreSecretKey(&commonCmdData, cmd) common.SetupRelease(&commonCmdData, cmd) common.SetupNamespace(&commonCmdData, cmd) @@ -184,7 +187,10 @@ func runRender(ctx context.Context) error { userExtraAnnotations["project.werf.io/env"] = *commonCmdData.Environment } - bundle, err := chart_extender.NewBundle(ctx, bundleDir, helm_v3.Settings, helmRegistryClientHandle, nil, chart_extender.BundleOptions{ + secretsManager := secrets_manager.NewSecretsManager(secrets_manager.SecretsManagerOptions{DisableSecretsDecryption: *commonCmdData.IgnoreSecretKey}) + + bundle, err := chart_extender.NewBundle(ctx, bundleDir, helm_v3.Settings, helmRegistryClientHandle, secretsManager, chart_extender.BundleOptions{ + SecretValueFiles: common.GetSecretValues(&commonCmdData), BuildChartDependenciesOpts: command_helpers.BuildChartDependenciesOptions{IgnoreInvalidAnnotationsAndLabels: false}, IgnoreInvalidAnnotationsAndLabels: false, ExtraAnnotations: userExtraAnnotations, diff --git a/pkg/util/secretvalues/mask.go b/pkg/util/secretvalues/mask.go index 5cbccfff05..523227bda4 100644 --- a/pkg/util/secretvalues/mask.go +++ b/pkg/util/secretvalues/mask.go @@ -15,7 +15,12 @@ func ExtractSecretValuesFromMap(data map[string]interface{}) []string { var elemI interface{} elemI, queue = queue[0], queue[1:] - switch reflect.TypeOf(elemI).Kind() { + elemType := reflect.TypeOf(elemI) + if elemType == nil { + continue + } + + switch elemType.Kind() { case reflect.Slice, reflect.Array: elem := reflect.ValueOf(elemI) for i := 0; i < elem.Len(); i++ {