diff --git a/README.md b/README.md index 20bc555b..94701d19 100644 --- a/README.md +++ b/README.md @@ -298,6 +298,8 @@ environments: # Use "Warn", "Info", or "Debug" if you want helmfile to not fail when a values file is missing, while just leaving # a message about the missing file at the log-level. missingFileHandler: Error + # kubeContext to use for this environment + kubeContext: kube-context # # Advanced Configuration: Layering diff --git a/pkg/state/environment.go b/pkg/state/environment.go index 13259f1d..13b1c137 100644 --- a/pkg/state/environment.go +++ b/pkg/state/environment.go @@ -1,8 +1,9 @@ package state type EnvironmentSpec struct { - Values []interface{} `yaml:"values,omitempty"` - Secrets []string `yaml:"secrets,omitempty"` + Values []interface{} `yaml:"values,omitempty"` + Secrets []string `yaml:"secrets,omitempty"` + KubeContext string `yaml:"kubeContext,omitempty"` // MissingFileHandler instructs helmfile to fail when unable to find a environment values file listed // under `environments.NAME.values`. diff --git a/pkg/state/state.go b/pkg/state/state.go index 7ffe20c1..491ab549 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -2216,6 +2216,8 @@ func (st *HelmState) connectionFlags(helm helmexec.Interface, release *ReleaseSp if release.KubeContext != "" { flags = append(flags, "--kube-context", release.KubeContext) + } else if st.Environments[st.Env.Name].KubeContext != "" { + flags = append(flags, "--kube-context", st.Environments[st.Env.Name].KubeContext) } else if st.HelmDefaults.KubeContext != "" { flags = append(flags, "--kube-context", st.HelmDefaults.KubeContext) }