diff --git a/cmd/argocd-server/commands/root.go b/cmd/argocd-server/commands/root.go index ffd20da73b457..1dbf18a6b5ce6 100644 --- a/cmd/argocd-server/commands/root.go +++ b/cmd/argocd-server/commands/root.go @@ -1,23 +1,25 @@ package commands import ( + "github.com/argoproj/argo-cd/cmd/argocd/commands" "github.com/argoproj/argo-cd/errors" appclientset "github.com/argoproj/argo-cd/pkg/client/clientset/versioned" "github.com/argoproj/argo-cd/server" "github.com/argoproj/argo-cd/util/cli" - "github.com/argoproj/argo-cd/util/kube" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "k8s.io/client-go/kubernetes" + "k8s.io/client-go/tools/clientcmd" ) // NewCommand returns a new instance of an argocd command func NewCommand() *cobra.Command { var ( - logLevel string - configMap string - kubeConfig string - staticAssetsDir string + logLevel string + configMap string + kubeConfig string + kubeConfigOverrides clientcmd.ConfigOverrides + staticAssetsDir string ) var command = &cobra.Command{ Use: cliName, @@ -28,8 +30,7 @@ func NewCommand() *cobra.Command { errors.CheckError(err) log.SetLevel(level) - config, err := kube.GetClientConfig(kubeConfig) - errors.CheckError(err) + config := commands.GetKubeConfig(kubeConfig, kubeConfigOverrides) kubeclientset := kubernetes.NewForConfigOrDie(config) appclientset := appclientset.NewForConfigOrDie(config) @@ -39,6 +40,8 @@ func NewCommand() *cobra.Command { } command.Flags().StringVar(&kubeConfig, "kubeconfig", "", "Kubernetes config (used when running outside of cluster)") + kubeConfigOverrides = clientcmd.ConfigOverrides{} + clientcmd.BindOverrideFlags(&kubeConfigOverrides, command.Flags(), clientcmd.RecommendedConfigOverrideFlags("")) command.Flags().StringVar(&staticAssetsDir, "staticassets", "", "Static assets directory path") command.Flags().StringVar(&configMap, "configmap", defaultArgoCDConfigMap, "Name of K8s configmap to retrieve argocd configuration") command.Flags().StringVar(&logLevel, "loglevel", "info", "Set the logging level. One of: debug|info|warn|error") diff --git a/util/kube/kube.go b/util/kube/kube.go index 47f85419aa8fc..85d4ddec0c21d 100644 --- a/util/kube/kube.go +++ b/util/kube/kube.go @@ -18,17 +18,8 @@ import ( "k8s.io/client-go/dynamic" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" - "k8s.io/client-go/tools/clientcmd" ) -// GetClientConfig return rest config, if path not specified, assume in cluster config -func GetClientConfig(kubeconfig string) (*rest.Config, error) { - if kubeconfig != "" { - return clientcmd.BuildConfigFromFlags("", kubeconfig) - } - return rest.InClusterConfig() -} - // TestConfig tests to make sure the REST config is usable func TestConfig(config *rest.Config) error { kubeclientset, err := kubernetes.NewForConfig(config)