func getClientConfig()

in cmd/exporter/app/options/options.go [100:147]


func getClientConfig(config componentbaseconfig.ClientConnectionConfiguration, serverAddrOverride, timeout string) (*restclient.Config, error) {
	// This creates a client, first loading any specified kubeconfig
	// file, and then overriding the serverAddr flag, if non-empty.
	var (
		restConfig *restclient.Config
		err        error
	)
	if len(config.Kubeconfig) == 0 && len(serverAddrOverride) == 0 {
		klog.Info("Neither kubeconfig file nor control plane URL was specified. Falling back to in-cluster config.")
		restConfig, err = restclient.InClusterConfig()
	} else {
		// This creates a client, first loading any specified kubeconfig
		// file, and then overriding the serverAddr flag, if non-empty.
		restConfig, err = clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
			&clientcmd.ClientConfigLoadingRules{ExplicitPath: config.Kubeconfig},
			&clientcmd.ConfigOverrides{ClusterInfo: clientcmdapi.Cluster{Server: serverAddrOverride}}).ClientConfig()
	}

	if err != nil {
		return nil, err
	}

	// Allow Syncer CLI Flag timeout override
	if len(timeout) == 0 {
		if restConfig.Timeout == 0 {
			restConfig.Timeout = 30 * time.Second
		}
	} else {
		timeoutDuration, err := time.ParseDuration(timeout)
		if err != nil {
			return nil, err
		}

		restConfig.Timeout = timeoutDuration
	}

	restConfig.ContentConfig.ContentType = config.AcceptContentTypes
	restConfig.QPS = config.QPS
	if restConfig.QPS == 0 {
		restConfig.QPS = 100
	}
	restConfig.Burst = int(config.Burst)
	if restConfig.Burst == 0 {
		restConfig.Burst = 200
	}

	return restConfig, nil
}