Add global kubecontext CLI flag

Signed-off-by: Blake <blake.barnett@postmates.com>
This commit is contained in:
Blake
2018-02-26 10:42:58 -08:00
parent fcbc7bd570
commit 465c60b408
47 changed files with 59 additions and 11 deletions

View File

@@ -30,10 +30,12 @@ import (
// Config returns a *rest.Config, using either the kubeconfig (if specified) or an in-cluster
// configuration.
func Config(kubeconfig, baseName string) (*rest.Config, error) {
loader := clientcmd.NewDefaultClientConfigLoadingRules()
loader.ExplicitPath = kubeconfig
clientConfig, err := clientcmd.BuildConfigFromKubeconfigGetter("", loader.Load)
func Config(kubeconfig, kubecontext, baseName string) (*rest.Config, error) {
loadingRules := clientcmd.NewDefaultClientConfigLoadingRules()
loadingRules.ExplicitPath = kubeconfig
configOverrides := &clientcmd.ConfigOverrides{CurrentContext: kubecontext}
kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, configOverrides)
clientConfig, err := kubeConfig.ClientConfig()
if err != nil {
return nil, errors.WithStack(err)
}

View File

@@ -43,10 +43,11 @@ type Factory interface {
}
type factory struct {
flags *pflag.FlagSet
kubeconfig string
baseName string
namespace string
flags *pflag.FlagSet
kubeconfig string
kubecontext string
baseName string
namespace string
}
// NewFactory returns a Factory.
@@ -68,6 +69,7 @@ func NewFactory(baseName string) Factory {
f.flags.StringVar(&f.kubeconfig, "kubeconfig", "", "Path to the kubeconfig file to use to talk to the Kubernetes apiserver. If unset, try the environment variable KUBECONFIG, as well as in-cluster configuration")
f.flags.StringVarP(&f.namespace, "namespace", "n", f.namespace, "The namespace in which Ark should operate")
f.flags.StringVar(&f.kubecontext, "kubecontext", "", "The context to use to talk to the Kubernetes apiserver. If unset defaults to whatever your current-context is (kubectl config current-context)")
return f
}
@@ -77,7 +79,7 @@ func (f *factory) BindFlags(flags *pflag.FlagSet) {
}
func (f *factory) Client() (clientset.Interface, error) {
clientConfig, err := Config(f.kubeconfig, f.baseName)
clientConfig, err := Config(f.kubeconfig, f.kubecontext, f.baseName)
if err != nil {
return nil, err
}
@@ -90,7 +92,7 @@ func (f *factory) Client() (clientset.Interface, error) {
}
func (f *factory) KubeClient() (kubernetes.Interface, error) {
clientConfig, err := Config(f.kubeconfig, f.baseName)
clientConfig, err := Config(f.kubeconfig, f.kubecontext, f.baseName)
if err != nil {
return nil, err
}

View File

@@ -176,7 +176,7 @@ type server struct {
}
func newServer(namespace, baseName string, logger *logrus.Logger) (*server, error) {
clientConfig, err := client.Config("", baseName)
clientConfig, err := client.Config("", "", baseName)
if err != nil {
return nil, err
}