code: func (g *defaultClientGetter) GetKubeClient(ctx context.Context) (kubernetes.KubeClientInterface, error) {
  
  	kubeNamespaceName, err := g.getNamespaceName(ctx)
  	if err != nil {
  		log.Error(ctx, map[string]interface{}{
  			"err": err,
  		}, "could not retrieve namespace name")
  		return nil, errs.Wrap(err, "could not retrieve namespace name")
  	}
  
  	osioclient, err := g.GetAndCheckOSIOClient(ctx)
  	if err != nil {
  		log.Error(ctx, map[string]interface{}{
  			"err": err,
  		}, "could not create OSIO client")
  		return nil, err
  	}
  
  	baseURLProvider, err := NewURLProvider(ctx, g.config, osioclient)
  	if err != nil {
  		log.Error(ctx, map[string]interface{}{
  			"err": err,
  		}, "could not retrieve tenant data")
  		return nil, errs.Wrap(err, "could not retrieve tenant data")
  	}
  
  	/* Timeout used per HTTP request to Kubernetes/OpenShift API servers.
  	 * Communication with Hawkular currently uses a hard-coded 30 second
  	 * timeout per request, and does not use this parameter. */
  	// create the cluster API client
  	kubeConfig := &kubernetes.KubeClientConfig{
  		BaseURLProvider: baseURLProvider,
  		UserNamespace:   *kubeNamespaceName,
  		Timeout:         g.config.GetDeploymentsHTTPTimeoutSeconds(),
  	}
  	kc, err := kubernetes.NewKubeClient(kubeConfig)
  	if err != nil {
  		url, _ := baseURLProvider.GetAPIURL()
  		log.Error(ctx, map[string]interface{}{
  			"err":            err,
  			"user_namespace": *kubeNamespaceName,
  			"cluster":        *url,
  		}, "could not create Kubernetes client object")
  		return nil, errs.Wrap(err, "could not create Kubernetes client object")
  	}
  	return kc, nil
  }
docs: // GetKubeClient creates a kube client for the appropriate cluster assigned to the current user