@ -41,6 +41,7 @@ import (
// Import to initialize client auth plugins.
_ "k8s.io/client-go/plugin/pkg/client/auth"
"k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/helm/pkg/kube"
"k8s.io/helm/pkg/proto/hapi/services"
"k8s.io/helm/pkg/storage"
@ -62,6 +63,8 @@ const (
tlsCertsEnvVar = "TILLER_TLS_CERTS"
// historyMaxEnvVar is the name of the env var for setting max history.
historyMaxEnvVar = "TILLER_HISTORY_MAX"
// k8sContextEnvVar is the name of the env var for the k8s context for tiller to use
kubeContextEnvVar = "TILLER_KUBE_CONTEXT"
storageMemory = "memory"
storageConfigMap = "configmap"
@ -79,6 +82,7 @@ var (
probeAddr = flag . String ( "probe-listen" , fmt . Sprintf ( ":%v" , environment . DefaultTillerProbePort ) , "address:port to listen on for probes" )
enableProbing = flag . Bool ( "probe" , true , "enable probing over http" )
enableTracing = flag . Bool ( "trace" , false , "enable rpc tracing" )
kubeContext = flag . String ( "kube-context" , kubeContextFromEnv ( ) , "kube context for tiller" )
store = flag . String ( "storage" , storageConfigMap , "storage driver to use. One of 'configmap', 'memory', 'sql' or 'secret'" )
sqlDialect = flag . String ( "sql-dialect" , "postgres" , "SQL dialect to use (only postgres is supported for now" )
@ -130,7 +134,12 @@ func start() {
healthSrv := health . NewServer ( )
healthSrv . SetServingStatus ( "Tiller" , healthpb . HealthCheckResponse_NOT_SERVING )
clientset , err := kube . New ( nil ) . KubernetesClientSet ( )
var clientArgs * genericclioptions . ConfigFlags = nil
if * kubeContext != "" {
clientArgs = genericclioptions . NewConfigFlags ( false )
clientArgs . Context = kubeContext
}
clientset , err := kube . New ( clientArgs ) . KubernetesClientSet ( )
if err != nil {
logger . Fatalf ( "Cannot initialize Kubernetes connection: %s" , err )
}
@ -168,7 +177,7 @@ func start() {
env . Releases . MaxHistory = * maxHistory
}
kubeClient := kube . New ( nil )
kubeClient := kube . New ( clientArgs )
kubeClient . Log = newLogger ( "kube" ) . Printf
env . KubeClient = kubeClient
@ -276,6 +285,10 @@ func namespace() string {
return environment . DefaultTillerNamespace
}
func kubeContextFromEnv ( ) string {
return os . Getenv ( kubeContextEnvVar )
}
func tlsOptions ( ) tlsutil . Options {
opts := tlsutil . Options { CertFile : * certFile , KeyFile : * keyFile }
if * tlsVerify {