From 70b2a2d0b458ed584946d76d4fc82e4805ac82d7 Mon Sep 17 00:00:00 2001 From: jie <2771725056@qq.com> Date: Wed, 19 Aug 2020 11:11:11 +0800 Subject: [PATCH] Add a parameter "create_namespace" --- docs/parameter_reference.md | 1 + internal/env/config.go | 1 + internal/run/upgrade.go | 59 ++++++++++++++++++++----------------- 3 files changed, 34 insertions(+), 27 deletions(-) diff --git a/docs/parameter_reference.md b/docs/parameter_reference.md index ad28ae6..4524643 100644 --- a/docs/parameter_reference.md +++ b/docs/parameter_reference.md @@ -48,6 +48,7 @@ Installations are triggered when the `mode` setting is "upgrade." They can also | values_files | list\ | | | Values to use as `--values` arguments to `helm upgrade`. | | reuse_values | boolean | | | Reuse the values from a previous release. | | skip_tls_verify | boolean | | | Connect to the Kubernetes cluster without checking for a valid TLS certificate. Not recommended in production. | +| create_namespace | boolean | | | Pass --create-namespace to `helm upgrade`. | ## Uninstallation diff --git a/internal/env/config.go b/internal/env/config.go index 6751be9..36fcee9 100644 --- a/internal/env/config.go +++ b/internal/env/config.go @@ -33,6 +33,7 @@ type Config struct { StringValues string `split_words:"true"` // Argument to pass to --set-string in applicable helm commands ValuesFiles []string `split_words:"true"` // Arguments to pass to --values in applicable helm commands Namespace string `` // Kubernetes namespace for all helm commands + CreateNamespace bool `split_words:"true"` // Pass --create-namespace to `helm upgrade` KubeToken string `split_words:"true"` // Kubernetes authentication token to put in .kube/config SkipTLSVerify bool `envconfig:"skip_tls_verify"` // Put insecure-skip-tls-verify in .kube/config Certificate string `envconfig:"kube_certificate"` // The Kubernetes cluster CA's self-signed certificate (must be base64-encoded) diff --git a/internal/run/upgrade.go b/internal/run/upgrade.go index b76948e..dc224e1 100644 --- a/internal/run/upgrade.go +++ b/internal/run/upgrade.go @@ -11,18 +11,19 @@ type Upgrade struct { chart string release string - chartVersion string - dryRun bool - wait bool - values string - stringValues string - valuesFiles []string - reuseValues bool - timeout string - force bool - atomic bool - cleanupOnFail bool - certs *repoCerts + chartVersion string + dryRun bool + wait bool + values string + stringValues string + valuesFiles []string + reuseValues bool + timeout string + force bool + atomic bool + cleanupOnFail bool + certs *repoCerts + createNamespace bool cmd cmd } @@ -30,21 +31,22 @@ type Upgrade struct { // NewUpgrade creates an Upgrade using fields from the given Config. No validation is performed at this time. func NewUpgrade(cfg env.Config) *Upgrade { return &Upgrade{ - config: newConfig(cfg), - chart: cfg.Chart, - release: cfg.Release, - chartVersion: cfg.ChartVersion, - dryRun: cfg.DryRun, - wait: cfg.Wait, - values: cfg.Values, - stringValues: cfg.StringValues, - valuesFiles: cfg.ValuesFiles, - reuseValues: cfg.ReuseValues, - timeout: cfg.Timeout, - force: cfg.Force, - atomic: cfg.AtomicUpgrade, - cleanupOnFail: cfg.CleanupOnFail, - certs: newRepoCerts(cfg), + config: newConfig(cfg), + chart: cfg.Chart, + release: cfg.Release, + chartVersion: cfg.ChartVersion, + dryRun: cfg.DryRun, + wait: cfg.Wait, + values: cfg.Values, + stringValues: cfg.StringValues, + valuesFiles: cfg.ValuesFiles, + reuseValues: cfg.ReuseValues, + timeout: cfg.Timeout, + force: cfg.Force, + atomic: cfg.AtomicUpgrade, + cleanupOnFail: cfg.CleanupOnFail, + certs: newRepoCerts(cfg), + createNamespace: cfg.CreateNamespace, } } @@ -95,6 +97,9 @@ func (u *Upgrade) Prepare() error { if u.stringValues != "" { args = append(args, "--set-string", u.stringValues) } + if u.createNamespace { + args = append(args, "--create-namespace") + } for _, vFile := range u.valuesFiles { args = append(args, "--values", vFile) }