Support the latest Helm (>=v3.3.2) and bump the Helm version in Docker image. (#1488)
Changes: * Bump Helm to v2.16.12 and v3.3.3. * Add --force-update only when using Helm 3.
This commit is contained in:
		
							parent
							
								
									028bcc51dc
								
							
						
					
					
						commit
						988c218096
					
				| 
						 | 
					@ -95,7 +95,7 @@ jobs:
 | 
				
			||||||
      - run:
 | 
					      - run:
 | 
				
			||||||
          name: Install helm
 | 
					          name: Install helm
 | 
				
			||||||
          environment:
 | 
					          environment:
 | 
				
			||||||
            HELM_VERSION: v2.16.1
 | 
					            HELM_VERSION: v2.16.12
 | 
				
			||||||
          command: |
 | 
					          command: |
 | 
				
			||||||
            HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
 | 
					            HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
 | 
				
			||||||
            curl -Lo ${HELM_FILENAME} "https://kubernetes-helm.storage.googleapis.com/${HELM_FILENAME}"
 | 
					            curl -Lo ${HELM_FILENAME} "https://kubernetes-helm.storage.googleapis.com/${HELM_FILENAME}"
 | 
				
			||||||
| 
						 | 
					@ -153,7 +153,7 @@ jobs:
 | 
				
			||||||
    - run:
 | 
					    - run:
 | 
				
			||||||
        name: Install helm
 | 
					        name: Install helm
 | 
				
			||||||
        environment:
 | 
					        environment:
 | 
				
			||||||
          HELM_VERSION: v3.1.0
 | 
					          HELM_VERSION: v3.3.3
 | 
				
			||||||
        command: |
 | 
					        command: |
 | 
				
			||||||
          HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
 | 
					          HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
 | 
				
			||||||
          curl -Lo ${HELM_FILENAME} "https://get.helm.sh/${HELM_FILENAME}"
 | 
					          curl -Lo ${HELM_FILENAME} "https://get.helm.sh/${HELM_FILENAME}"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,10 +11,10 @@ FROM alpine:3.11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN apk add --no-cache ca-certificates git bash curl jq
 | 
					RUN apk add --no-cache ca-certificates git bash curl jq
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ARG HELM_VERSION=v2.16.1
 | 
					ARG HELM_VERSION=v2.16.12
 | 
				
			||||||
ARG HELM_LOCATION="https://kubernetes-helm.storage.googleapis.com"
 | 
					ARG HELM_LOCATION="https://kubernetes-helm.storage.googleapis.com"
 | 
				
			||||||
ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
 | 
					ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
 | 
				
			||||||
ARG HELM_SHA256="7eebaaa2da4734242bbcdced62cc32ba8c7164a18792c8acdf16c77abffce202"
 | 
					ARG HELM_SHA256="756ab375314329b66b452c0f9d569f74b0760141670217c07b79890ad314c214"
 | 
				
			||||||
RUN wget ${HELM_LOCATION}/${HELM_FILENAME} && \
 | 
					RUN wget ${HELM_LOCATION}/${HELM_FILENAME} && \
 | 
				
			||||||
    echo Verifying ${HELM_FILENAME}... && \
 | 
					    echo Verifying ${HELM_FILENAME}... && \
 | 
				
			||||||
    sha256sum ${HELM_FILENAME} | grep -q "${HELM_SHA256}" && \
 | 
					    sha256sum ${HELM_FILENAME} | grep -q "${HELM_SHA256}" && \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,10 +11,10 @@ FROM alpine:3.11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN apk add --no-cache ca-certificates git bash curl jq
 | 
					RUN apk add --no-cache ca-certificates git bash curl jq
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ARG HELM_VERSION=v3.2.1
 | 
					ARG HELM_VERSION=v3.3.3
 | 
				
			||||||
ARG HELM_LOCATION="https://get.helm.sh"
 | 
					ARG HELM_LOCATION="https://get.helm.sh"
 | 
				
			||||||
ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
 | 
					ARG HELM_FILENAME="helm-${HELM_VERSION}-linux-amd64.tar.gz"
 | 
				
			||||||
ARG HELM_SHA256="018f9908cb950701a5d59e757653a790c66d8eda288625dbb185354ca6f41f6b"
 | 
					ARG HELM_SHA256="246d58b6b353e63ae8627415a7340089015e3eb542ff7b5ce124b0b1409369cc"
 | 
				
			||||||
RUN wget ${HELM_LOCATION}/${HELM_FILENAME} && \
 | 
					RUN wget ${HELM_LOCATION}/${HELM_FILENAME} && \
 | 
				
			||||||
    echo Verifying ${HELM_FILENAME}... && \
 | 
					    echo Verifying ${HELM_FILENAME}... && \
 | 
				
			||||||
    sha256sum ${HELM_FILENAME} | grep -q "${HELM_SHA256}" && \
 | 
					    sha256sum ${HELM_FILENAME} | grep -q "${HELM_SHA256}" && \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2462,7 +2462,7 @@ func (helm *mockHelmExec) GetVersion() helmexec.Version {
 | 
				
			||||||
	return helmexec.Version{}
 | 
						return helmexec.Version{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (helm *mockHelmExec) IsVersionAtLeast(major int, minor int) bool {
 | 
					func (helm *mockHelmExec) IsVersionAtLeast(major int, minor int, patch int) bool {
 | 
				
			||||||
	return false
 | 
						return false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,7 +97,7 @@ func (helm *noCallHelmExec) GetVersion() helmexec.Version {
 | 
				
			||||||
	return helmexec.Version{}
 | 
						return helmexec.Version{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (helm *noCallHelmExec) IsVersionAtLeast(major int, minor int) bool {
 | 
					func (helm *noCallHelmExec) IsVersionAtLeast(major int, minor int, patch int) bool {
 | 
				
			||||||
	helm.doPanic()
 | 
						helm.doPanic()
 | 
				
			||||||
	return false
 | 
						return false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -170,12 +170,12 @@ func (helm *Helm) GetVersion() helmexec.Version {
 | 
				
			||||||
	return helmexec.Version{}
 | 
						return helmexec.Version{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (helm *Helm) IsVersionAtLeast(major int, minor int) bool {
 | 
					func (helm *Helm) IsVersionAtLeast(major int, minor int, patch int) bool {
 | 
				
			||||||
	if helm.Version == nil {
 | 
						if helm.Version == nil {
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return helm.Version.Major >= major && minor >= helm.Version.Minor
 | 
						return helm.Version.Major >= major && minor >= helm.Version.Minor && patch >= helm.Version.Patch
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (helm *Helm) sync(m *sync.Mutex, f func()) {
 | 
					func (helm *Helm) sync(m *sync.Mutex, f func()) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -130,6 +130,9 @@ func (helm *execer) AddRepo(name, repository, cafile, certfile, keyfile, usernam
 | 
				
			||||||
		return fmt.Errorf("empty field name")
 | 
							return fmt.Errorf("empty field name")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	args = append(args, "repo", "add", name, repository)
 | 
						args = append(args, "repo", "add", name, repository)
 | 
				
			||||||
 | 
						if helm.IsHelm3() && helm.IsVersionAtLeast(3, 3, 2) {
 | 
				
			||||||
 | 
							args = append(args, "--force-update")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	if certfile != "" && keyfile != "" {
 | 
						if certfile != "" && keyfile != "" {
 | 
				
			||||||
		args = append(args, "--cert-file", certfile, "--key-file", keyfile)
 | 
							args = append(args, "--cert-file", certfile, "--key-file", keyfile)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -398,6 +401,6 @@ func (helm *execer) GetVersion() Version {
 | 
				
			||||||
	return helm.version
 | 
						return helm.version
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (helm *execer) IsVersionAtLeast(major int, minor int) bool {
 | 
					func (helm *execer) IsVersionAtLeast(major int, minor int, patch int) bool {
 | 
				
			||||||
	return helm.version.Major >= major && helm.version.Minor >= minor
 | 
						return helm.version.Major >= major && helm.version.Minor >= minor && helm.version.Patch >= patch
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -557,15 +557,15 @@ func Test_GetVersion(t *testing.T) {
 | 
				
			||||||
func Test_IsVersionAtLeast(t *testing.T) {
 | 
					func Test_IsVersionAtLeast(t *testing.T) {
 | 
				
			||||||
	helm2Runner := mockRunner{output: []byte("Client: v2.16.1+ge13bc94\n")}
 | 
						helm2Runner := mockRunner{output: []byte("Client: v2.16.1+ge13bc94\n")}
 | 
				
			||||||
	helm := New("helm", NewLogger(os.Stdout, "info"), "dev", &helm2Runner)
 | 
						helm := New("helm", NewLogger(os.Stdout, "info"), "dev", &helm2Runner)
 | 
				
			||||||
	if !helm.IsVersionAtLeast(2, 1) {
 | 
						if !helm.IsVersionAtLeast(2, 1, 0) {
 | 
				
			||||||
		t.Error("helmexec.IsVersionAtLeast - 2.16.1 not atleast 2.1")
 | 
							t.Error("helmexec.IsVersionAtLeast - 2.16.1 not atleast 2.1")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if helm.IsVersionAtLeast(2, 19) {
 | 
						if helm.IsVersionAtLeast(2, 19, 0) {
 | 
				
			||||||
		t.Error("helmexec.IsVersionAtLeast - 2.16.1 is atleast 2.19")
 | 
							t.Error("helmexec.IsVersionAtLeast - 2.16.1 is atleast 2.19")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if helm.IsVersionAtLeast(3, 2) {
 | 
						if helm.IsVersionAtLeast(3, 2, 0) {
 | 
				
			||||||
		t.Error("helmexec.IsVersionAtLeast - 2.16.1 is atleast 3.2")
 | 
							t.Error("helmexec.IsVersionAtLeast - 2.16.1 is atleast 3.2")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ type Interface interface {
 | 
				
			||||||
	DecryptSecret(context HelmContext, name string, flags ...string) (string, error)
 | 
						DecryptSecret(context HelmContext, name string, flags ...string) (string, error)
 | 
				
			||||||
	IsHelm3() bool
 | 
						IsHelm3() bool
 | 
				
			||||||
	GetVersion() Version
 | 
						GetVersion() Version
 | 
				
			||||||
	IsVersionAtLeast(major int, minor int) bool
 | 
						IsVersionAtLeast(major int, minor int, patch int) bool
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type DependencyUpdater interface {
 | 
					type DependencyUpdater interface {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,8 +6,6 @@ import (
 | 
				
			||||||
	"encoding/hex"
 | 
						"encoding/hex"
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"github.com/imdario/mergo"
 | 
					 | 
				
			||||||
	"golang.org/x/sync/errgroup"
 | 
					 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
| 
						 | 
					@ -20,6 +18,9 @@ import (
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
	"text/template"
 | 
						"text/template"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/imdario/mergo"
 | 
				
			||||||
 | 
						"golang.org/x/sync/errgroup"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/variantdev/chartify"
 | 
						"github.com/variantdev/chartify"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/roboll/helmfile/pkg/environment"
 | 
						"github.com/roboll/helmfile/pkg/environment"
 | 
				
			||||||
| 
						 | 
					@ -2063,7 +2064,7 @@ func (st *HelmState) flagsForUpgrade(helm helmexec.Interface, release *ReleaseSp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if release.CreateNamespace != nil && *release.CreateNamespace ||
 | 
						if release.CreateNamespace != nil && *release.CreateNamespace ||
 | 
				
			||||||
		release.CreateNamespace == nil && (st.HelmDefaults.CreateNamespace == nil || *st.HelmDefaults.CreateNamespace) {
 | 
							release.CreateNamespace == nil && (st.HelmDefaults.CreateNamespace == nil || *st.HelmDefaults.CreateNamespace) {
 | 
				
			||||||
		if helm.IsVersionAtLeast(3, 2) {
 | 
							if helm.IsVersionAtLeast(3, 2, 0) {
 | 
				
			||||||
			flags = append(flags, "--create-namespace")
 | 
								flags = append(flags, "--create-namespace")
 | 
				
			||||||
		} else if release.CreateNamespace != nil || st.HelmDefaults.CreateNamespace != nil {
 | 
							} else if release.CreateNamespace != nil || st.HelmDefaults.CreateNamespace != nil {
 | 
				
			||||||
			// createNamespace was set explicitly, but not running supported version of helm - error
 | 
								// createNamespace was set explicitly, but not running supported version of helm - error
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue