diff --git a/cmd/cloud-controller-manager/app/BUILD b/cmd/cloud-controller-manager/app/BUILD index 9f2eca3efa9..3574f5d645d 100644 --- a/cmd/cloud-controller-manager/app/BUILD +++ b/cmd/cloud-controller-manager/app/BUILD @@ -1,14 +1,10 @@ -package(default_visibility = ["//visibility:public"]) - -load( - "@io_bazel_rules_go//go:def.bzl", - "go_library", -) +load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["controllermanager.go"], importpath = "k8s.io/kubernetes/cmd/cloud-controller-manager/app", + visibility = ["//visibility:public"], deps = [ "//cmd/cloud-controller-manager/app/config:go_default_library", "//cmd/cloud-controller-manager/app/options:go_default_library", @@ -49,4 +45,5 @@ filegroup( "//cmd/cloud-controller-manager/app/options:all-srcs", ], tags = ["automanaged"], + visibility = ["//visibility:public"], ) diff --git a/cmd/controller-manager/app/BUILD b/cmd/controller-manager/app/BUILD index 69e01c266c6..769db3a2bc3 100644 --- a/cmd/controller-manager/app/BUILD +++ b/cmd/controller-manager/app/BUILD @@ -20,6 +20,8 @@ go_library( "//vendor/k8s.io/apiserver/pkg/server:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/filters:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", + "//vendor/k8s.io/apiserver/pkg/server/mux:go_default_library", + "//vendor/k8s.io/apiserver/pkg/server/routes:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/tools/record:go_default_library", diff --git a/cmd/controller-manager/app/serve.go b/cmd/controller-manager/app/serve.go index f75777ed266..7a9d36d1143 100644 --- a/cmd/controller-manager/app/serve.go +++ b/cmd/controller-manager/app/serve.go @@ -18,7 +18,6 @@ package app import ( "net/http" - "net/http/pprof" goruntime "runtime" "time" @@ -28,6 +27,8 @@ import ( apirequest "k8s.io/apiserver/pkg/endpoints/request" genericfilters "k8s.io/apiserver/pkg/server/filters" "k8s.io/apiserver/pkg/server/healthz" + "k8s.io/apiserver/pkg/server/mux" + "k8s.io/apiserver/pkg/server/routes" "k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/util/configz" ) @@ -37,13 +38,10 @@ type serveFunc func(handler http.Handler, shutdownTimeout time.Duration, stopCh // Serve creates a base handler chain for a controller manager. It runs the // the chain with the given serveFunc. func Serve(c *CompletedConfig, serveFunc serveFunc, stopCh <-chan struct{}) error { - mux := http.NewServeMux() + mux := mux.NewPathRecorderMux("controller-manager") healthz.InstallHandler(mux) if c.ComponentConfig.EnableProfiling { - mux.HandleFunc("/debug/pprof/", pprof.Index) - mux.HandleFunc("/debug/pprof/profile", pprof.Profile) - mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol) - mux.HandleFunc("/debug/pprof/trace", pprof.Trace) + routes.Profiling{}.Install(mux) if c.ComponentConfig.EnableContentionProfiling { goruntime.SetBlockProfileRate(1) } diff --git a/cmd/kube-controller-manager/app/BUILD b/cmd/kube-controller-manager/app/BUILD index 20ac3f94740..9e7c7dbb336 100644 --- a/cmd/kube-controller-manager/app/BUILD +++ b/cmd/kube-controller-manager/app/BUILD @@ -1,10 +1,4 @@ -package(default_visibility = ["//visibility:public"]) - -load( - "@io_bazel_rules_go//go:def.bzl", - "go_library", - "go_test", -) +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", @@ -24,6 +18,7 @@ go_library( "rbac.go", ], importpath = "k8s.io/kubernetes/cmd/kube-controller-manager/app", + visibility = ["//visibility:public"], deps = [ "//cmd/controller-manager/app:go_default_library", "//cmd/controller-manager/app/options:go_default_library", @@ -137,6 +132,16 @@ go_library( ], ) +go_test( + name = "go_default_test", + srcs = ["controller_manager_test.go"], + embed = [":go_default_library"], + deps = [ + "//vendor/github.com/stretchr/testify/assert:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + ], +) + filegroup( name = "package-srcs", srcs = glob(["**"]), @@ -152,14 +157,5 @@ filegroup( "//cmd/kube-controller-manager/app/options:all-srcs", ], tags = ["automanaged"], -) - -go_test( - name = "go_default_test", - srcs = ["controller_manager_test.go"], - embed = [":go_default_library"], - deps = [ - "//vendor/github.com/stretchr/testify/assert:go_default_library", - "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", - ], + visibility = ["//visibility:public"], ) diff --git a/cmd/kube-proxy/app/BUILD b/cmd/kube-proxy/app/BUILD index f4934dfb59c..568d5103f18 100644 --- a/cmd/kube-proxy/app/BUILD +++ b/cmd/kube-proxy/app/BUILD @@ -91,6 +91,8 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", + "//vendor/k8s.io/apiserver/pkg/server/mux:go_default_library", + "//vendor/k8s.io/apiserver/pkg/server/routes:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", diff --git a/cmd/kube-proxy/app/server.go b/cmd/kube-proxy/app/server.go index 5c0da9052ca..b6ca9bfe0a6 100644 --- a/cmd/kube-proxy/app/server.go +++ b/cmd/kube-proxy/app/server.go @@ -24,7 +24,6 @@ import ( "io/ioutil" "net" "net/http" - "net/http/pprof" "os" goruntime "runtime" "strings" @@ -38,6 +37,8 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apiserver/pkg/server/healthz" + "k8s.io/apiserver/pkg/server/mux" + "k8s.io/apiserver/pkg/server/routes" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/apiserver/pkg/util/flag" clientgoclientset "k8s.io/client-go/kubernetes" @@ -472,17 +473,14 @@ func (s *ProxyServer) Run() error { // Start up a metrics server if requested if len(s.MetricsBindAddress) > 0 { - mux := http.NewServeMux() + mux := mux.NewPathRecorderMux("kube-proxy") healthz.InstallHandler(mux) mux.HandleFunc("/proxyMode", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "%s", s.ProxyMode) }) mux.Handle("/metrics", prometheus.Handler()) if s.EnableProfiling { - mux.HandleFunc("/debug/pprof/", pprof.Index) - mux.HandleFunc("/debug/pprof/profile", pprof.Profile) - mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol) - mux.HandleFunc("/debug/pprof/trace", pprof.Trace) + routes.Profiling{}.Install(mux) } configz.InstallHandler(mux) go wait.Until(func() { diff --git a/cmd/kube-scheduler/app/BUILD b/cmd/kube-scheduler/app/BUILD index aac41e86d09..98b42fbfff8 100644 --- a/cmd/kube-scheduler/app/BUILD +++ b/cmd/kube-scheduler/app/BUILD @@ -39,6 +39,8 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library", + "//vendor/k8s.io/apiserver/pkg/server/mux:go_default_library", + "//vendor/k8s.io/apiserver/pkg/server/routes:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", "//vendor/k8s.io/client-go/informers:go_default_library", "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", diff --git a/cmd/kube-scheduler/app/server.go b/cmd/kube-scheduler/app/server.go index 9832aafcafd..d32c4067ca9 100644 --- a/cmd/kube-scheduler/app/server.go +++ b/cmd/kube-scheduler/app/server.go @@ -23,7 +23,6 @@ import ( "io/ioutil" "net" "net/http" - "net/http/pprof" "os" "reflect" goruntime "runtime" @@ -38,6 +37,8 @@ import ( "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apiserver/pkg/server/healthz" + "k8s.io/apiserver/pkg/server/mux" + "k8s.io/apiserver/pkg/server/routes" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/informers" coreinformers "k8s.io/client-go/informers/core/v1" @@ -470,17 +471,14 @@ func makeLeaderElectionConfig(config componentconfig.KubeSchedulerLeaderElection // embed the metrics handler if the healthz and metrics address configurations // are the same. func makeHealthzServer(config *componentconfig.KubeSchedulerConfiguration) *http.Server { - mux := http.NewServeMux() + mux := mux.NewPathRecorderMux("kube-scheduler") healthz.InstallHandler(mux) if config.HealthzBindAddress == config.MetricsBindAddress { configz.InstallHandler(mux) mux.Handle("/metrics", prometheus.Handler()) } if config.EnableProfiling { - mux.HandleFunc("/debug/pprof/", pprof.Index) - mux.HandleFunc("/debug/pprof/profile", pprof.Profile) - mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol) - mux.HandleFunc("/debug/pprof/trace", pprof.Trace) + routes.Profiling{}.Install(mux) if config.EnableContentionProfiling { goruntime.SetBlockProfileRate(1) } @@ -493,14 +491,11 @@ func makeHealthzServer(config *componentconfig.KubeSchedulerConfiguration) *http // makeMetricsServer builds a metrics server from the config. func makeMetricsServer(config *componentconfig.KubeSchedulerConfiguration) *http.Server { - mux := http.NewServeMux() + mux := mux.NewPathRecorderMux("kube-scheduler") configz.InstallHandler(mux) mux.Handle("/metrics", prometheus.Handler()) if config.EnableProfiling { - mux.HandleFunc("/debug/pprof/", pprof.Index) - mux.HandleFunc("/debug/pprof/profile", pprof.Profile) - mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol) - mux.HandleFunc("/debug/pprof/trace", pprof.Trace) + routes.Profiling{}.Install(mux) if config.EnableContentionProfiling { goruntime.SetBlockProfileRate(1) }