启动篇-02创建 APIServer 通用配置

CreateServerChain

cmd/kube-apiserver/app/server.go
// CreateServerChain 创建通过委托模式关联的 apiservers
// 包括 kubeAPIServer、apiExtensionsServer、aggregatorServer  
func CreateServerChain(completedOptions completedServerRunOptions) (*aggregatorapiserver.APIAggregator, error) {  
   kubeAPIServerConfig, serviceResolver, pluginInitializer, err := CreateKubeAPIServerConfig(completedOptions)  
   if err != nil {  
      return nil, err  
   }  
  
   // If additional API servers are added, they should be gated.  
   apiExtensionsConfig, err := createAPIExtensionsConfig(*kubeAPIServerConfig.GenericConfig, kubeAPIServerConfig.ExtraConfig.VersionedInformers, pluginInitializer, completedOptions.ServerRunOptions, completedOptions.MasterCount,  
      serviceResolver, webhook.NewDefaultAuthenticationInfoResolverWrapper(kubeAPIServerConfig.ExtraConfig.ProxyTransport, kubeAPIServerConfig.GenericConfig.EgressSelector, kubeAPIServerConfig.GenericConfig.LoopbackClientConfig, kubeAPIServerConfig.GenericConfig.TracerProvider))  
   if err != nil {  
      return nil, err  
   }  
  
   notFoundHandler := notfoundhandler.New(kubeAPIServerConfig.GenericConfig.Serializer, genericapifilters.NoMuxAndDiscoveryIncompleteKey)  
   apiExtensionsServer, err := createAPIExtensionsServer(apiExtensionsConfig, genericapiserver.NewEmptyDelegateWithCustomHandler(notFoundHandler))  
   if err != nil {  
      return nil, err  
   }  
  
   kubeAPIServer, err := CreateKubeAPIServer(kubeAPIServerConfig, apiExtensionsServer.GenericAPIServer)  
   if err != nil {  
      return nil, err  
   }  
  
   // aggregator comes last in the chain  
   aggregatorConfig, err := createAggregatorConfig(*kubeAPIServerConfig.GenericConfig, completedOptions.ServerRunOptions, kubeAPIServerConfig.ExtraConfig.VersionedInformers, serviceResolver, kubeAPIServerConfig.ExtraConfig.ProxyTransport, pluginInitializer)  
   if err != nil {  
      return nil, err  
   }  
   aggregatorServer, err := createAggregatorServer(aggregatorConfig, kubeAPIServer.GenericAPIServer, apiExtensionsServer.Informers)  
   if err != nil {  
      // we don't need special handling for innerStopCh because the aggregator server doesn't create any go routines  
      return nil, err  
   }  
  
   return aggregatorServer, nil  
}

CreateKubeAPIServerConfig

buildGenericConfig

最后更新于

这有帮助吗?