code: func NewWebhook(handler *admission.Handler, configFile io.Reader, sourceFactory sourceFactory, dispatcherFactory dispatcherFactory) (*Webhook, error) {
  	kubeconfigFile, err := config.LoadConfig(configFile)
  	if err != nil {
  		return nil, err
  	}
  
  	cm, err := webhook.NewClientManager(admissionv1beta1.SchemeGroupVersion, admissionv1beta1.AddToScheme)
  	if err != nil {
  		return nil, err
  	}
  	authInfoResolver, err := webhook.NewDefaultAuthenticationInfoResolver(kubeconfigFile)
  	if err != nil {
  		return nil, err
  	}
  	// Set defaults which may be overridden later.
  	cm.SetAuthenticationInfoResolver(authInfoResolver)
  	cm.SetServiceResolver(webhook.NewDefaultServiceResolver())
  
  	return &Webhook{
  		Handler:          handler,
  		sourceFactory:    sourceFactory,
  		clientManager:    &cm,
  		namespaceMatcher: &namespace.Matcher{},
  		dispatcher:       dispatcherFactory(&cm),
  	}, nil
  }
docs: // NewWebhook creates a new generic admission webhook.