@ -54,6 +54,8 @@ type EnvSettings struct {
KubeAsGroups [ ] string
KubeAsGroups [ ] string
// Kubernetes API Server Endpoint for authentication
// Kubernetes API Server Endpoint for authentication
KubeAPIServer string
KubeAPIServer string
// KubeInsecure indicates whether or not checking kubernetes apiserver's certificate
KubeInsecure bool
// Debug indicates whether or not Helm is running in Debug mode.
// Debug indicates whether or not Helm is running in Debug mode.
Debug bool
Debug bool
// RegistryConfig is the path to the registry config file.
// RegistryConfig is the path to the registry config file.
@ -77,6 +79,7 @@ func New() *EnvSettings {
KubeAsUser : os . Getenv ( "HELM_KUBEASUSER" ) ,
KubeAsUser : os . Getenv ( "HELM_KUBEASUSER" ) ,
KubeAsGroups : envCSV ( "HELM_KUBEASGROUPS" ) ,
KubeAsGroups : envCSV ( "HELM_KUBEASGROUPS" ) ,
KubeAPIServer : os . Getenv ( "HELM_KUBEAPISERVER" ) ,
KubeAPIServer : os . Getenv ( "HELM_KUBEAPISERVER" ) ,
KubeInsecure : envBoolOr ( "HELM_KUBEAPISERVER_INSECURE" , false ) ,
PluginsDirectory : envOr ( "HELM_PLUGINS" , helmpath . DataPath ( "plugins" ) ) ,
PluginsDirectory : envOr ( "HELM_PLUGINS" , helmpath . DataPath ( "plugins" ) ) ,
RegistryConfig : envOr ( "HELM_REGISTRY_CONFIG" , helmpath . ConfigPath ( "registry.json" ) ) ,
RegistryConfig : envOr ( "HELM_REGISTRY_CONFIG" , helmpath . ConfigPath ( "registry.json" ) ) ,
RepositoryConfig : envOr ( "HELM_REPOSITORY_CONFIG" , helmpath . ConfigPath ( "repositories.yaml" ) ) ,
RepositoryConfig : envOr ( "HELM_REPOSITORY_CONFIG" , helmpath . ConfigPath ( "repositories.yaml" ) ) ,
@ -93,6 +96,7 @@ func New() *EnvSettings {
KubeConfig : & env . KubeConfig ,
KubeConfig : & env . KubeConfig ,
Impersonate : & env . KubeAsUser ,
Impersonate : & env . KubeAsUser ,
ImpersonateGroup : & env . KubeAsGroups ,
ImpersonateGroup : & env . KubeAsGroups ,
Insecure : & env . KubeInsecure ,
}
}
return env
return env
}
}
@ -106,6 +110,7 @@ func (s *EnvSettings) AddFlags(fs *pflag.FlagSet) {
fs . StringVar ( & s . KubeAsUser , "kube-as-user" , s . KubeAsUser , "Username to impersonate for the operation" )
fs . StringVar ( & s . KubeAsUser , "kube-as-user" , s . KubeAsUser , "Username to impersonate for the operation" )
fs . StringArrayVar ( & s . KubeAsGroups , "kube-as-group" , s . KubeAsGroups , "Group to impersonate for the operation, this flag can be repeated to specify multiple groups." )
fs . StringArrayVar ( & s . KubeAsGroups , "kube-as-group" , s . KubeAsGroups , "Group to impersonate for the operation, this flag can be repeated to specify multiple groups." )
fs . StringVar ( & s . KubeAPIServer , "kube-apiserver" , s . KubeAPIServer , "the address and the port for the Kubernetes API server" )
fs . StringVar ( & s . KubeAPIServer , "kube-apiserver" , s . KubeAPIServer , "the address and the port for the Kubernetes API server" )
fs . BoolVar ( & s . KubeInsecure , "kube-insecure-skip-tls-verify" , s . KubeInsecure , "if true, the kubernetes apiserver's certificate will not be checked for validity. This will make your HTTPS connections insecure" )
fs . BoolVar ( & s . Debug , "debug" , s . Debug , "enable verbose output" )
fs . BoolVar ( & s . Debug , "debug" , s . Debug , "enable verbose output" )
fs . StringVar ( & s . RegistryConfig , "registry-config" , s . RegistryConfig , "path to the registry config file" )
fs . StringVar ( & s . RegistryConfig , "registry-config" , s . RegistryConfig , "path to the registry config file" )
fs . StringVar ( & s . RepositoryConfig , "repository-config" , s . RepositoryConfig , "path to the file containing repository names and URLs" )
fs . StringVar ( & s . RepositoryConfig , "repository-config" , s . RepositoryConfig , "path to the file containing repository names and URLs" )
@ -139,6 +144,18 @@ func envCSV(name string) (ls []string) {
return
return
}
}
func envBoolOr ( name string , def bool ) bool {
if name == "" {
return def
}
envVal := envOr ( name , strconv . FormatBool ( def ) )
ret , err := strconv . ParseBool ( envVal )
if err != nil {
return def
}
return ret
}
func ( s * EnvSettings ) EnvVars ( ) map [ string ] string {
func ( s * EnvSettings ) EnvVars ( ) map [ string ] string {
envvars := map [ string ] string {
envvars := map [ string ] string {
"HELM_BIN" : os . Args [ 0 ] ,
"HELM_BIN" : os . Args [ 0 ] ,
@ -154,11 +171,12 @@ func (s *EnvSettings) EnvVars() map[string]string {
"HELM_MAX_HISTORY" : strconv . Itoa ( s . MaxHistory ) ,
"HELM_MAX_HISTORY" : strconv . Itoa ( s . MaxHistory ) ,
// broken, these are populated from helm flags and not kubeconfig.
// broken, these are populated from helm flags and not kubeconfig.
"HELM_KUBECONTEXT" : s . KubeContext ,
"HELM_KUBECONTEXT" : s . KubeContext ,
"HELM_KUBETOKEN" : s . KubeToken ,
"HELM_KUBETOKEN" : s . KubeToken ,
"HELM_KUBEASUSER" : s . KubeAsUser ,
"HELM_KUBEAPISERVER" : s . KubeAPIServer ,
"HELM_KUBEASGROUPS" : strings . Join ( s . KubeAsGroups , "," ) ,
"HELM_KUBEASUSER" : s . KubeAsUser ,
"HELM_KUBEAPISERVER" : s . KubeAPIServer ,
"HELM_KUBEASGROUPS" : strings . Join ( s . KubeAsGroups , "," ) ,
"HELM_KUBEAPISERVER_INSECURE" : strconv . FormatBool ( s . KubeInsecure ) ,
}
}
if s . KubeConfig != "" {
if s . KubeConfig != "" {
envvars [ "KUBECONFIG" ] = s . KubeConfig
envvars [ "KUBECONFIG" ] = s . KubeConfig