mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
promote /metrics to genericapiserver
This commit is contained in:
parent
f56cbfa8d5
commit
912e6741b9
@ -17,6 +17,7 @@ go_library(
|
|||||||
"default_storage_factory_builder.go",
|
"default_storage_factory_builder.go",
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"genericapiserver.go",
|
"genericapiserver.go",
|
||||||
|
"healthz.go",
|
||||||
"hooks.go",
|
"hooks.go",
|
||||||
"resource_config.go",
|
"resource_config.go",
|
||||||
"resource_encoding_config.go",
|
"resource_encoding_config.go",
|
||||||
@ -48,6 +49,7 @@ go_library(
|
|||||||
"//pkg/genericapiserver/options:go_default_library",
|
"//pkg/genericapiserver/options:go_default_library",
|
||||||
"//pkg/genericapiserver/routes:go_default_library",
|
"//pkg/genericapiserver/routes:go_default_library",
|
||||||
"//pkg/genericapiserver/validation:go_default_library",
|
"//pkg/genericapiserver/validation:go_default_library",
|
||||||
|
"//pkg/healthz:go_default_library",
|
||||||
"//pkg/registry/core/service/ipallocator:go_default_library",
|
"//pkg/registry/core/service/ipallocator:go_default_library",
|
||||||
"//pkg/registry/generic:go_default_library",
|
"//pkg/registry/generic:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
|
@ -81,6 +81,7 @@ type Config struct {
|
|||||||
// allow downstream consumers to disable the index route
|
// allow downstream consumers to disable the index route
|
||||||
EnableIndex bool
|
EnableIndex bool
|
||||||
EnableProfiling bool
|
EnableProfiling bool
|
||||||
|
EnableMetrics bool
|
||||||
EnableGarbageCollection bool
|
EnableGarbageCollection bool
|
||||||
|
|
||||||
Version *version.Info
|
Version *version.Info
|
||||||
@ -524,6 +525,13 @@ func (s *GenericAPIServer) installAPI(c *Config) {
|
|||||||
if c.EnableProfiling {
|
if c.EnableProfiling {
|
||||||
routes.Profiling{}.Install(s.HandlerContainer)
|
routes.Profiling{}.Install(s.HandlerContainer)
|
||||||
}
|
}
|
||||||
|
if c.EnableMetrics {
|
||||||
|
if c.EnableProfiling {
|
||||||
|
routes.MetricsWithReset{}.Install(s.HandlerContainer)
|
||||||
|
} else {
|
||||||
|
routes.DefaultMetrics{}.Install(s.HandlerContainer)
|
||||||
|
}
|
||||||
|
}
|
||||||
routes.Version{Version: c.Version}.Install(s.HandlerContainer)
|
routes.Version{Version: c.Version}.Install(s.HandlerContainer)
|
||||||
s.HandlerContainer.Add(s.DynamicApisDiscovery())
|
s.HandlerContainer.Add(s.DynamicApisDiscovery())
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ go_library(
|
|||||||
srcs = [
|
srcs = [
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"index.go",
|
"index.go",
|
||||||
|
"metrics.go",
|
||||||
"openapi.go",
|
"openapi.go",
|
||||||
"profiling.go",
|
"profiling.go",
|
||||||
"swagger.go",
|
"swagger.go",
|
||||||
@ -25,15 +26,18 @@ go_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/unversioned:go_default_library",
|
"//pkg/api/unversioned:go_default_library",
|
||||||
"//pkg/apiserver:go_default_library",
|
"//pkg/apiserver:go_default_library",
|
||||||
|
"//pkg/apiserver/metrics:go_default_library",
|
||||||
"//pkg/genericapiserver/mux:go_default_library",
|
"//pkg/genericapiserver/mux:go_default_library",
|
||||||
"//pkg/genericapiserver/openapi:go_default_library",
|
"//pkg/genericapiserver/openapi:go_default_library",
|
||||||
"//pkg/genericapiserver/openapi/common:go_default_library",
|
"//pkg/genericapiserver/openapi/common:go_default_library",
|
||||||
"//pkg/genericapiserver/routes/data/swagger:go_default_library",
|
"//pkg/genericapiserver/routes/data/swagger:go_default_library",
|
||||||
|
"//pkg/storage/etcd/metrics:go_default_library",
|
||||||
"//pkg/version:go_default_library",
|
"//pkg/version:go_default_library",
|
||||||
"//vendor:github.com/elazarl/go-bindata-assetfs",
|
"//vendor:github.com/elazarl/go-bindata-assetfs",
|
||||||
"//vendor:github.com/emicklei/go-restful",
|
"//vendor:github.com/emicklei/go-restful",
|
||||||
"//vendor:github.com/emicklei/go-restful/swagger",
|
"//vendor:github.com/emicklei/go-restful/swagger",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
"//vendor:github.com/prometheus/client_golang/prometheus",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ import (
|
|||||||
// DefaultMetrics installs the default prometheus metrics handler
|
// DefaultMetrics installs the default prometheus metrics handler
|
||||||
type DefaultMetrics struct{}
|
type DefaultMetrics struct{}
|
||||||
|
|
||||||
|
// Install adds the DefaultMetrics handler
|
||||||
func (m DefaultMetrics) Install(c *mux.APIContainer) {
|
func (m DefaultMetrics) Install(c *mux.APIContainer) {
|
||||||
c.NonSwaggerRoutes.Handle("/metrics", prometheus.Handler())
|
c.NonSwaggerRoutes.Handle("/metrics", prometheus.Handler())
|
||||||
}
|
}
|
||||||
@ -38,6 +39,7 @@ func (m DefaultMetrics) Install(c *mux.APIContainer) {
|
|||||||
// which resets the metrics.
|
// which resets the metrics.
|
||||||
type MetricsWithReset struct{}
|
type MetricsWithReset struct{}
|
||||||
|
|
||||||
|
// Install adds the MetricsWithReset handler
|
||||||
func (m MetricsWithReset) Install(c *mux.APIContainer) {
|
func (m MetricsWithReset) Install(c *mux.APIContainer) {
|
||||||
defaultMetricsHandler := prometheus.Handler().ServeHTTP
|
defaultMetricsHandler := prometheus.Handler().ServeHTTP
|
||||||
c.NonSwaggerRoutes.HandleFunc("/metrics", func(w http.ResponseWriter, req *http.Request) {
|
c.NonSwaggerRoutes.HandleFunc("/metrics", func(w http.ResponseWriter, req *http.Request) {
|
@ -119,6 +119,9 @@ func (c *Config) Complete() completedConfig {
|
|||||||
c.EndpointReconcilerConfig.Reconciler = NewMasterCountEndpointReconciler(c.GenericConfig.MasterCount, endpointClient)
|
c.EndpointReconcilerConfig.Reconciler = NewMasterCountEndpointReconciler(c.GenericConfig.MasterCount, endpointClient)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this has always been hardcoded true in the past
|
||||||
|
c.GenericConfig.EnableMetrics = true
|
||||||
|
|
||||||
return completedConfig{c}
|
return completedConfig{c}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -195,7 +198,6 @@ func (c completedConfig) New() (*Master, error) {
|
|||||||
if c.Tunneler != nil {
|
if c.Tunneler != nil {
|
||||||
m.installTunneler(c.Tunneler, coreclient.NewForConfigOrDie(c.GenericConfig.LoopbackClientConfig).Nodes())
|
m.installTunneler(c.Tunneler, coreclient.NewForConfigOrDie(c.GenericConfig.LoopbackClientConfig).Nodes())
|
||||||
}
|
}
|
||||||
m.InstallGeneralEndpoints(c.Config)
|
|
||||||
|
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
@ -227,16 +229,6 @@ func (m *Master) installTunneler(tunneler genericapiserver.Tunneler, nodeClient
|
|||||||
}, func() float64 { return float64(tunneler.SecondsSinceSync()) })
|
}, func() float64 { return float64(tunneler.SecondsSinceSync()) })
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO this needs to be refactored so we have a way to add general health checks to genericapiserver
|
|
||||||
// TODO profiling should be generic
|
|
||||||
func (m *Master) InstallGeneralEndpoints(c *Config) {
|
|
||||||
if c.GenericConfig.EnableProfiling {
|
|
||||||
routes.MetricsWithReset{}.Install(m.GenericAPIServer.HandlerContainer)
|
|
||||||
} else {
|
|
||||||
routes.DefaultMetrics{}.Install(m.GenericAPIServer.HandlerContainer)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// InstallAPIs will install the APIs for the restStorageProviders if they are enabled.
|
// InstallAPIs will install the APIs for the restStorageProviders if they are enabled.
|
||||||
func (m *Master) InstallAPIs(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter genericapiserver.RESTOptionsGetter, restStorageProviders ...genericapiserver.RESTStorageProvider) {
|
func (m *Master) InstallAPIs(apiResourceConfigSource genericapiserver.APIResourceConfigSource, restOptionsGetter genericapiserver.RESTOptionsGetter, restStorageProviders ...genericapiserver.RESTStorageProvider) {
|
||||||
apiGroupsInfo := []genericapiserver.APIGroupInfo{}
|
apiGroupsInfo := []genericapiserver.APIGroupInfo{}
|
||||||
|
@ -15,15 +15,11 @@ go_library(
|
|||||||
srcs = [
|
srcs = [
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"logs.go",
|
"logs.go",
|
||||||
"metrics.go",
|
|
||||||
"ui.go",
|
"ui.go",
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/apiserver/metrics:go_default_library",
|
|
||||||
"//pkg/genericapiserver/mux:go_default_library",
|
"//pkg/genericapiserver/mux:go_default_library",
|
||||||
"//pkg/storage/etcd/metrics:go_default_library",
|
|
||||||
"//vendor:github.com/emicklei/go-restful",
|
"//vendor:github.com/emicklei/go-restful",
|
||||||
"//vendor:github.com/prometheus/client_golang/prometheus",
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -180,6 +180,7 @@ func startMasterOrDie(masterConfig *master.Config, incomingServer *httptest.Serv
|
|||||||
if masterConfig == nil {
|
if masterConfig == nil {
|
||||||
masterConfig = NewMasterConfig()
|
masterConfig = NewMasterConfig()
|
||||||
masterConfig.GenericConfig.EnableProfiling = true
|
masterConfig.GenericConfig.EnableProfiling = true
|
||||||
|
masterConfig.GenericConfig.EnableMetrics = true
|
||||||
masterConfig.GenericConfig.EnableSwaggerSupport = true
|
masterConfig.GenericConfig.EnableSwaggerSupport = true
|
||||||
masterConfig.GenericConfig.EnableOpenAPISupport = true
|
masterConfig.GenericConfig.EnableOpenAPISupport = true
|
||||||
masterConfig.GenericConfig.OpenAPIConfig.Info = &spec.Info{
|
masterConfig.GenericConfig.OpenAPIConfig.Info = &spec.Info{
|
||||||
@ -451,6 +452,7 @@ func RunAMaster(masterConfig *master.Config) (*master.Master, *httptest.Server)
|
|||||||
if masterConfig == nil {
|
if masterConfig == nil {
|
||||||
masterConfig = NewMasterConfig()
|
masterConfig = NewMasterConfig()
|
||||||
masterConfig.GenericConfig.EnableProfiling = true
|
masterConfig.GenericConfig.EnableProfiling = true
|
||||||
|
masterConfig.GenericConfig.EnableMetrics = true
|
||||||
}
|
}
|
||||||
return startMasterOrDie(masterConfig, nil, nil)
|
return startMasterOrDie(masterConfig, nil, nil)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user