Skip to content

Commit 1fc5833

Browse files
committed
fix(deploy): wrong values rendered (many reverts)
This reverts commits: 9adab3f b3425a8 f340fa3 a6d39ae 222d031 d3eed01 8fd1a04 01b8c10 Signed-off-by: Ilya Lesikov <ilya@lesikov.com>
1 parent 31d3b88 commit 1fc5833

File tree

31 files changed

+166
-263
lines changed

31 files changed

+166
-263
lines changed

cmd/werf/bundle/apply/apply.go

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ import (
1515
"github.com/samber/lo"
1616
"github.com/spf13/cobra"
1717

18-
"github.com/werf/3p-helm/pkg/werf/helmopts"
18+
"github.com/werf/3p-helm/pkg/chart"
19+
"github.com/werf/3p-helm/pkg/chartutil"
20+
"github.com/werf/3p-helm/pkg/werf/secrets"
21+
"github.com/werf/common-go/pkg/secrets_manager"
1922
"github.com/werf/common-go/pkg/util"
2023
"github.com/werf/nelm/pkg/action"
2124
"github.com/werf/werf/v2/cmd/werf/common"
@@ -116,8 +119,6 @@ func NewCmd(ctx context.Context) *cobra.Command {
116119
common.SetupRollbackGraphPath(&commonCmdData, cmd)
117120

118121
common.SetupRenderSubchartNotes(&commonCmdData, cmd)
119-
common.SetupNoInstallCRDs(&commonCmdData, cmd)
120-
common.SetupReleaseLabel(&commonCmdData, cmd)
121122

122123
defaultTag := os.Getenv("WERF_TAG")
123124
if defaultTag == "" {
@@ -179,7 +180,9 @@ func runApply(ctx context.Context) error {
179180

180181
registryCredentialsPath := docker.GetDockerConfigCredentialsFile(*commonCmdData.DockerConfig)
181182

182-
serviceValues, err := helpers.GetBundleServiceValues(ctx, helpers.ServiceValuesOptions{
183+
secrets.CoalesceTablesFunc = chartutil.CoalesceTables
184+
secrets_manager.DisableSecretsDecryption = *commonCmdData.IgnoreSecretKey
185+
chartutil.ServiceValues, err = helpers.GetBundleServiceValues(ctx, helpers.ServiceValuesOptions{
183186
Env: *commonCmdData.Environment,
184187
Namespace: releaseNamespace,
185188
SetDockerConfigJsonValue: *commonCmdData.SetDockerConfigJsonValue,
@@ -193,18 +196,9 @@ func runApply(ctx context.Context) error {
193196
if err != nil {
194197
return fmt.Errorf("get current working directory: %w", err)
195198
}
199+
secrets.SecretsWorkingDir = secretWorkDir
196200

197-
if err := bundles.Pull(ctx, fmt.Sprintf("%s:%s", repoAddress, cmdData.Tag), bundlePath, bundlesRegistryClient, helmopts.HelmOptions{
198-
ChartLoadOpts: helmopts.ChartLoadOptions{
199-
ChartDir: bundlePath,
200-
NoDecryptSecrets: *commonCmdData.IgnoreSecretKey,
201-
NoDefaultSecretValues: *commonCmdData.DisableDefaultSecretValues,
202-
NoDefaultValues: *commonCmdData.DisableDefaultValues,
203-
SecretValuesFiles: common.GetSecretValues(&commonCmdData),
204-
SecretsWorkingDir: secretWorkDir,
205-
ExtraValues: serviceValues,
206-
},
207-
}); err != nil {
201+
if err := bundles.Pull(ctx, fmt.Sprintf("%s:%s", repoAddress, cmdData.Tag), bundlePath, bundlesRegistryClient); err != nil {
208202
return fmt.Errorf("pull bundle: %w", err)
209203
}
210204

@@ -213,10 +207,7 @@ func runApply(ctx context.Context) error {
213207
return fmt.Errorf("get annotations and labels: %w", err)
214208
}
215209

216-
releaseLabels, err := common.GetReleaseLabels(&commonCmdData)
217-
if err != nil {
218-
return fmt.Errorf("get release labels: %w", err)
219-
}
210+
chart.CurrentChartType = chart.ChartTypeBundle
220211

221212
ctx = action.SetupLogging(ctx, cmp.Or(common.GetNelmLogLevel(&commonCmdData), action.DefaultReleaseInstallLogLevel), action.SetupLoggingOptions{
222213
ColorMode: *commonCmdData.LogColorMode,
@@ -245,17 +236,13 @@ func runApply(ctx context.Context) error {
245236
KubeSkipTLSVerify: *commonCmdData.SkipTlsVerifyKube,
246237
KubeTLSServerName: *commonCmdData.KubeTlsServer,
247238
KubeToken: *commonCmdData.KubeToken,
248-
LegacyChartType: helmopts.ChartTypeBundle,
249-
LegacyExtraValues: serviceValues,
250239
LogRegistryStreamOut: os.Stdout,
251240
NetworkParallelism: common.GetNetworkParallelism(&commonCmdData),
252-
NoInstallCRDs: *commonCmdData.NoInstallCRDs,
253241
NoProgressTablePrint: *commonCmdData.StatusProgressPeriodSeconds == -1,
254242
ProgressTablePrintInterval: time.Duration(*commonCmdData.StatusProgressPeriodSeconds) * time.Second,
255243
RegistryCredentialsPath: registryCredentialsPath,
256244
ReleaseHistoryLimit: *commonCmdData.ReleasesHistoryMax,
257245
ReleaseInfoAnnotations: serviceAnnotations,
258-
ReleaseLabels: releaseLabels,
259246
ReleaseStorageDriver: os.Getenv("HELM_DRIVER"),
260247
RollbackGraphPath: common.GetRollbackGraphPath(&commonCmdData),
261248
SecretKeyIgnore: *commonCmdData.IgnoreSecretKey,

cmd/werf/bundle/copy/copy.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import (
88
"github.com/spf13/cobra"
99

1010
helm_v3 "github.com/werf/3p-helm/cmd/helm"
11-
"github.com/werf/3p-helm/pkg/werf/helmopts"
11+
"github.com/werf/3p-helm/pkg/chart"
12+
"github.com/werf/3p-helm/pkg/chartutil"
13+
"github.com/werf/3p-helm/pkg/werf/secrets"
14+
"github.com/werf/common-go/pkg/secrets_manager"
1215
"github.com/werf/logboek"
1316
"github.com/werf/werf/v2/cmd/werf/common"
1417
"github.com/werf/werf/v2/pkg/deploy/bundles"
@@ -130,6 +133,17 @@ func runCopy(ctx context.Context) error {
130133
return fmt.Errorf("incompatible options specified, could not use --helm-compatible-chart and --rename-chart=%q at the same time", *commonCmdData.RenameChart)
131134
}
132135

136+
secrets.CoalesceTablesFunc = chartutil.CoalesceTables
137+
secrets_manager.DisableSecretsDecryption = true
138+
139+
secretWorkDir, err := os.Getwd()
140+
if err != nil {
141+
return fmt.Errorf("get current working directory: %w", err)
142+
}
143+
secrets.SecretsWorkingDir = secretWorkDir
144+
145+
chart.CurrentChartType = chart.ChartTypeBundle
146+
133147
return logboek.Context(ctx).LogProcess("Copy bundle").DoError(func() error {
134148
logboek.Context(ctx).LogFDetails("From: %s\n", fromAddr.String())
135149
logboek.Context(ctx).LogFDetails("To: %s\n", toAddr.String())
@@ -140,12 +154,6 @@ func runCopy(ctx context.Context) error {
140154
ToRegistryClient: toRegistry,
141155
HelmCompatibleChart: *commonCmdData.HelmCompatibleChart,
142156
RenameChart: *commonCmdData.RenameChart,
143-
HelmOptions: helmopts.HelmOptions{
144-
ChartLoadOpts: helmopts.ChartLoadOptions{
145-
ChartType: helmopts.ChartTypeBundle,
146-
NoSecrets: true,
147-
},
148-
},
149157
})
150158
})
151159
}

cmd/werf/bundle/publish/publish.go

Lines changed: 35 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@ import (
2323
"github.com/werf/3p-helm/pkg/cli/values"
2424
"github.com/werf/3p-helm/pkg/downloader"
2525
"github.com/werf/3p-helm/pkg/getter"
26-
"github.com/werf/3p-helm/pkg/werf/file"
27-
"github.com/werf/3p-helm/pkg/werf/helmopts"
26+
"github.com/werf/3p-helm/pkg/werf/chartextender"
2827
"github.com/werf/3p-helm/pkg/werf/secrets"
2928
"github.com/werf/3p-helm/pkg/werf/secrets/runtimedata"
3029
"github.com/werf/common-go/pkg/secrets_manager"
@@ -332,7 +331,7 @@ func runPublish(ctx context.Context, imageNameListFromArgs []string) error {
332331
return err
333332
}
334333

335-
file.ChartFileReader = giterminismManager.FileReader()
334+
loader.ChartFileReader = giterminismManager.FileReader()
336335

337336
headHash, err := giterminismManager.LocalGitRepo().HeadCommitHash(ctx)
338337
if err != nil {
@@ -344,7 +343,7 @@ func runPublish(ctx context.Context, imageNameListFromArgs []string) error {
344343
return fmt.Errorf("getting HEAD commit time failed: %w", err)
345344
}
346345

347-
serviceValues, err := helpers.GetServiceValues(ctx, werfConfig.Meta.Project, imagesRepo, imagesInfoGetters, helpers.ServiceValuesOptions{
346+
chartutil.ServiceValues, err = helpers.GetServiceValues(ctx, werfConfig.Meta.Project, imagesRepo, imagesInfoGetters, helpers.ServiceValuesOptions{
348347
Env: *commonCmdData.Environment,
349348
CommitHash: headHash,
350349
CommitDate: headTime,
@@ -355,6 +354,17 @@ func runPublish(ctx context.Context, imageNameListFromArgs []string) error {
355354

356355
helm_v3.Settings.Debug = *commonCmdData.LogDebug
357356

357+
loader.WithoutDefaultSecretValues = *commonCmdData.DisableDefaultSecretValues
358+
loader.WithoutDefaultValues = *commonCmdData.DisableDefaultValues
359+
secrets.CoalesceTablesFunc = chartutil.CoalesceTables
360+
secrets.SecretsWorkingDir = giterminismManager.ProjectDir()
361+
secrets_manager.DisableSecretsDecryption = *commonCmdData.IgnoreSecretKey
362+
363+
chartextender.DefaultChartAPIVersion = chart.APIVersionV2
364+
chartextender.DefaultChartName = werfConfig.Meta.Project
365+
chartextender.DefaultChartVersion = "1.0.0"
366+
chartextender.ChartAppVersion = common.GetHelmChartConfigAppVersion(werfConfig)
367+
358368
// FIXME(1.3): compatibility mode with older 1.2 versions, which do not require WERF_SECRET_KEY in the 'werf bundle publish' command
359369
if err := secrets_manager.Manager.AllowMissedSecretKeyMode(giterminismManager.ProjectDir()); err != nil {
360370
return err
@@ -369,35 +379,23 @@ func runPublish(ctx context.Context, imageNameListFromArgs []string) error {
369379
bundleTmpDir := filepath.Join(werf.GetServiceDir(), "tmp", "bundles", uuid.NewString())
370380
defer os.RemoveAll(bundleTmpDir)
371381

372-
opts := helmopts.HelmOptions{
373-
ChartLoadOpts: helmopts.ChartLoadOptions{
374-
ChartAppVersion: common.GetHelmChartConfigAppVersion(werfConfig),
375-
ChartDir: bundleTmpDir,
376-
DefaultChartAPIVersion: chart.APIVersionV2,
377-
DefaultChartName: werfConfig.Meta.Project,
378-
DefaultChartVersion: "1.0.0",
379-
DepDownloader: &downloader.Manager{
380-
Out: logboek.Context(ctx).OutStream(),
381-
ChartPath: bundleTmpDir,
382-
AllowMissingRepos: true,
383-
Getters: getter.All(helm_v3.Settings),
384-
RegistryClient: helmRegistryClient,
385-
RepositoryConfig: helm_v3.Settings.RepositoryConfig,
386-
RepositoryCache: helm_v3.Settings.RepositoryCache,
387-
Debug: helm_v3.Settings.Debug,
388-
},
389-
NoDecryptSecrets: *commonCmdData.IgnoreSecretKey,
390-
NoDefaultSecretValues: *commonCmdData.DisableDefaultSecretValues,
391-
NoDefaultValues: *commonCmdData.DisableDefaultValues,
392-
SecretValuesFiles: common.GetSecretValues(&commonCmdData),
393-
SecretsWorkingDir: giterminismManager.ProjectDir(),
394-
ExtraValues: serviceValues,
395-
},
382+
downloader := &downloader.Manager{
383+
Out: logboek.Context(ctx).OutStream(),
384+
ChartPath: bundleTmpDir,
385+
AllowMissingRepos: true,
386+
Getters: getter.All(helm_v3.Settings),
387+
RegistryClient: helmRegistryClient,
388+
RepositoryConfig: helm_v3.Settings.RepositoryConfig,
389+
RepositoryCache: helm_v3.Settings.RepositoryCache,
390+
Debug: helm_v3.Settings.Debug,
396391
}
392+
loader.SetChartPathFunc = downloader.SetChartPath
393+
loader.DepsBuildFunc = downloader.Build
394+
395+
loader.SetServiceDir(werf.GetServiceDir())
397396

398397
if err = createNewBundle(
399398
ctx,
400-
serviceValues,
401399
extraAnnotations,
402400
serviceAnnotations,
403401
extraLabels,
@@ -411,7 +409,6 @@ func runPublish(ctx context.Context, imageNameListFromArgs []string) error {
411409
Values: common.GetSet(&commonCmdData),
412410
FileValues: common.GetSetFile(&commonCmdData),
413411
},
414-
opts,
415412
); err != nil {
416413
return fmt.Errorf("create bundle: %w", err)
417414
}
@@ -423,18 +420,16 @@ func runPublish(ctx context.Context, imageNameListFromArgs []string) error {
423420
bundleRepo = stagesStorage.Address()
424421
}
425422

426-
opts.ChartLoadOpts.ChartType = helmopts.ChartTypeBundle
423+
chart.CurrentChartType = chart.ChartTypeBundle
427424

428425
return bundles.Publish(ctx, bundleTmpDir, fmt.Sprintf("%s:%s", bundleRepo, cmdData.Tag), bundlesRegistryClient, bundles.PublishOptions{
429426
HelmCompatibleChart: *commonCmdData.HelmCompatibleChart,
430427
RenameChart: *commonCmdData.RenameChart,
431-
HelmOptions: opts,
432428
})
433429
}
434430

435431
func createNewBundle(
436432
ctx context.Context,
437-
serviceValues map[string]interface{},
438433
extraAnnotations map[string]string,
439434
serviceAnnotations map[string]string,
440435
extraLabels map[string]string,
@@ -443,23 +438,22 @@ func createNewBundle(
443438
destDir string,
444439
chartVersion string,
445440
vals *values.Options,
446-
opts helmopts.HelmOptions,
447441
) error {
448442
chartPath := filepath.Join(projectDir, chartDir)
449-
chrt, err := loader.LoadDir(chartPath, opts)
443+
chrt, err := loader.LoadDir(chartPath)
450444
if err != nil {
451445
return fmt.Errorf("error loading chart %q: %w", chartPath, err)
452446
}
453447

454448
var valsData []byte
455449
{
456450
p := getter.All(helm_v3.Settings)
457-
vals, err := vals.MergeValues(p, opts)
451+
vals, err := vals.MergeValues(p)
458452
if err != nil {
459453
return fmt.Errorf("unable to merge input values: %w", err)
460454
}
461455

462-
bundleVals, err := makeBundleValues(chrt, vals, serviceValues)
456+
bundleVals, err := makeBundleValues(chrt, vals)
463457
if err != nil {
464458
return fmt.Errorf("unable to construct bundle values: %w", err)
465459
}
@@ -472,7 +466,7 @@ func createNewBundle(
472466

473467
var secretValsData []byte
474468
if chrt.SecretsRuntimeData != nil && !secrets_manager.Manager.IsMissedSecretKeyModeEnabled() {
475-
vals, err := makeBundleSecretValues(ctx, chrt.SecretsRuntimeData, opts)
469+
vals, err := makeBundleSecretValues(ctx, chrt.SecretsRuntimeData)
476470
if err != nil {
477471
return fmt.Errorf("unable to construct bundle secret values: %w", err)
478472
}
@@ -487,7 +481,7 @@ func createNewBundle(
487481
destDir = chrt.Metadata.Name
488482
}
489483

490-
opts.ChartLoadOpts.ChartDir = destDir
484+
secrets.ChartDir = destDir
491485

492486
if err := os.RemoveAll(destDir); err != nil {
493487
return fmt.Errorf("unable to remove %q: %w", destDir, err)
@@ -648,11 +642,10 @@ func writeBundleJsonMap(dataMap map[string]string, path string) error {
648642
func makeBundleValues(
649643
chrt *chart.Chart,
650644
inputVals map[string]interface{},
651-
serviceValues map[string]interface{},
652645
) (map[string]interface{}, error) {
653646
chartutil.DebugPrintValues(context.Background(), "input", inputVals)
654647

655-
vals, err := chartutil.MergeInternal(context.Background(), inputVals, serviceValues, nil)
648+
vals, err := chartutil.MergeInternal(context.Background(), inputVals, chartutil.ServiceValues, nil)
656649
if err != nil {
657650
return nil, fmt.Errorf("failed to coalesce werf chart values: %w", err)
658651
}
@@ -678,10 +671,9 @@ func makeBundleValues(
678671
func makeBundleSecretValues(
679672
ctx context.Context,
680673
secretsRuntimeData runtimedata.RuntimeData,
681-
opts helmopts.HelmOptions,
682674
) (map[string]interface{}, error) {
683675
if chartutil.DebugSecretValues() {
684676
chartutil.DebugPrintValues(context.Background(), "secret", secretsRuntimeData.GetDecryptedSecretValues())
685677
}
686-
return secretsRuntimeData.GetEncodedSecretValues(ctx, secrets_manager.Manager, opts.ChartLoadOpts.SecretsWorkingDir, opts.ChartLoadOpts.NoDecryptSecrets)
678+
return secretsRuntimeData.GetEncodedSecretValues(ctx, secrets_manager.Manager, false)
687679
}

0 commit comments

Comments
 (0)