diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 794fef52c..ac3d6ad65 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -155,6 +155,7 @@ func newInstallCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { func addInstallFlags(cmd *cobra.Command, f *pflag.FlagSet, client *action.Install, valueOpts *values.Options) { f.BoolVar(&client.CreateNamespace, "create-namespace", false, "create the release namespace if not present") f.BoolVar(&client.DryRun, "dry-run", false, "simulate an install") + f.BoolVar(&client.Force, "force", false, "force resource updates through a replacement strategy") f.BoolVar(&client.DisableHooks, "no-hooks", false, "prevent hooks from running during install") f.BoolVar(&client.Replace, "replace", false, "re-use the given name, only if that name is a deleted release which remains in the history. This is unsafe in production") f.DurationVar(&client.Timeout, "timeout", 300*time.Second, "time to wait for any individual Kubernetes operation (like Jobs for hooks)") diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 33db703c4..aa2b5f621 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -104,6 +104,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { instClient := action.NewInstall(cfg) instClient.CreateNamespace = createNamespace instClient.ChartPathOptions = client.ChartPathOptions + instClient.Force = client.Force instClient.DryRun = client.DryRun instClient.DisableHooks = client.DisableHooks instClient.SkipCRDs = client.SkipCRDs diff --git a/pkg/action/install.go b/pkg/action/install.go index fa5508234..425b66f69 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -69,6 +69,7 @@ type Install struct { ChartPathOptions ClientOnly bool + Force bool CreateNamespace bool DryRun bool DisableHooks bool @@ -372,7 +373,7 @@ func (i *Install) performInstall(c chan<- resultMessage, rel *release.Release, t return } } else if len(resources) > 0 { - if _, err := i.cfg.KubeClient.Update(toBeAdopted, resources, false); err != nil { + if _, err := i.cfg.KubeClient.Update(toBeAdopted, resources, i.Force); err != nil { i.reportToRun(c, rel, err) return }