APIserver
func main() {
...
#核心
command := app.NewAPIServerCommand()
#日志
logs.InitLogs()
defer logs.FlushLogs()
...
}
#NewAPIServerCommand
#核心是调用run函数 运行AIPserver 永远不会退出
return Run(completedOptions, genericapiserver.SetupSignalHandler())
#Run
#创建server链路
server, err := CreateServerChain(completeOptions, stopCh)
func CreateServerChain(completedOptions completedServerRunOptions, stopCh <-chan struct{
}) (*aggregatorapiserver.APIAggregator, error) {
#创建APIserver的配置
kubeAPIServerConfig, serviceResolver, pluginInitializer, err := CreateKubeAPIServerConfig(completedOptions)
#API拓展服务 主要针对CRD
apiExtensionsServer, err := createAPIExtensionsServer(apiExtensionsConfig, genericapiserver.NewEmptyDelegate())
#API核心服务
kubeAPIServer, err := CreateKubeAPIServer(kubeAPIServerConfig, apiExtensionsServer.GenericAPIServer)
#API聚合服务 聚合前面的server
aggregatorServer, err := createAggregatorServer(aggregatorConfig, kubeAPIServer.GenericAPIServer, apiExtensionsServer.Informers)
}
#CreateKubeAPIServerConfig
func CreateKubeAPIServerConfig(s completedServerRunOptions) (
*controlplane.Config,
aggregatorapiserver.ServiceResolver,
[]admission.PluginInitializer,
error,
) {
#建立通用配置
genericConfig, versionedInformers, serviceResolver, pluginInitializers, admissionPostStartHook, storageFactory, err := buildGenericConfig(s.ServerRunOptions, proxyTransport)
if err != nil {
}
#buildGenericConfig
func buildGenericConfig(
...
#默认生成api文档
genericConfig.OpenAPIConfig = genericapiserver.DefaultOpenAPIConfig(generatedopenapi.GetOpenAPIDefinitions, openapinamer.NewDefinitionNamer(legacyscheme.Scheme, e