mirror of
https://github.com/kubernetes/kubernetes.git
synced 2026-02-03 20:40:26 -05:00
Merge pull request #135746 from richabanker/move-flagz
Move apiserver's flagz installation to genericapiserver alongside statusz
This commit is contained in:
commit
c4f5cea36b
4 changed files with 15 additions and 11 deletions
|
|
@ -32,12 +32,10 @@ import (
|
||||||
genericregistry "k8s.io/apiserver/pkg/registry/generic"
|
genericregistry "k8s.io/apiserver/pkg/registry/generic"
|
||||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||||
"k8s.io/apiserver/pkg/server/dynamiccertificates"
|
"k8s.io/apiserver/pkg/server/dynamiccertificates"
|
||||||
"k8s.io/apiserver/pkg/server/flagz"
|
|
||||||
serverstorage "k8s.io/apiserver/pkg/server/storage"
|
serverstorage "k8s.io/apiserver/pkg/server/storage"
|
||||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
clientgoinformers "k8s.io/client-go/informers"
|
clientgoinformers "k8s.io/client-go/informers"
|
||||||
"k8s.io/client-go/kubernetes"
|
"k8s.io/client-go/kubernetes"
|
||||||
zpagesfeatures "k8s.io/component-base/zpages/features"
|
|
||||||
"k8s.io/component-helpers/apimachinery/lease"
|
"k8s.io/component-helpers/apimachinery/lease"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
"k8s.io/utils/clock"
|
"k8s.io/utils/clock"
|
||||||
|
|
@ -154,12 +152,6 @@ func (c completedConfig) New(name string, delegationTarget genericapiserver.Dele
|
||||||
return nil, fmt.Errorf("failed to get listener address: %w", err)
|
return nil, fmt.Errorf("failed to get listener address: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentFlagz) {
|
|
||||||
if c.Generic.Flagz != nil {
|
|
||||||
flagz.Install(s.GenericAPIServer.Handler.NonGoRestfulMux, name, c.Generic.Flagz)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(apiserverfeatures.CoordinatedLeaderElection) {
|
if utilfeature.DefaultFeatureGate.Enabled(apiserverfeatures.CoordinatedLeaderElection) {
|
||||||
leaseInformer := s.VersionedInformers.Coordination().V1().Leases()
|
leaseInformer := s.VersionedInformers.Coordination().V1().Leases()
|
||||||
lcInformer := s.VersionedInformers.Coordination().V1beta1().LeaseCandidates()
|
lcInformer := s.VersionedInformers.Coordination().V1beta1().LeaseCandidates()
|
||||||
|
|
|
||||||
|
|
@ -830,6 +830,7 @@ func (c completedConfig) New(name string, delegationTarget DelegationTarget) (*G
|
||||||
UnprotectedDebugSocket: debugSocket,
|
UnprotectedDebugSocket: debugSocket,
|
||||||
|
|
||||||
listedPathProvider: apiServerHandler,
|
listedPathProvider: apiServerHandler,
|
||||||
|
Flagz: c.Flagz,
|
||||||
|
|
||||||
minRequestTimeout: time.Duration(c.MinRequestTimeout) * time.Second,
|
minRequestTimeout: time.Duration(c.MinRequestTimeout) * time.Second,
|
||||||
ShutdownTimeout: c.RequestTimeout,
|
ShutdownTimeout: c.RequestTimeout,
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ import (
|
||||||
discoveryendpoint "k8s.io/apiserver/pkg/endpoints/discovery/aggregated"
|
discoveryendpoint "k8s.io/apiserver/pkg/endpoints/discovery/aggregated"
|
||||||
"k8s.io/apiserver/pkg/features"
|
"k8s.io/apiserver/pkg/features"
|
||||||
"k8s.io/apiserver/pkg/registry/rest"
|
"k8s.io/apiserver/pkg/registry/rest"
|
||||||
|
"k8s.io/apiserver/pkg/server/flagz"
|
||||||
"k8s.io/apiserver/pkg/server/healthz"
|
"k8s.io/apiserver/pkg/server/healthz"
|
||||||
"k8s.io/apiserver/pkg/server/routes"
|
"k8s.io/apiserver/pkg/server/routes"
|
||||||
"k8s.io/apiserver/pkg/server/statusz"
|
"k8s.io/apiserver/pkg/server/statusz"
|
||||||
|
|
@ -113,6 +114,9 @@ type GenericAPIServer struct {
|
||||||
// LoopbackClientConfig is a config for a privileged loopback connection to the API server
|
// LoopbackClientConfig is a config for a privileged loopback connection to the API server
|
||||||
LoopbackClientConfig *restclient.Config
|
LoopbackClientConfig *restclient.Config
|
||||||
|
|
||||||
|
// Flagz is used to set up flagz endpoint.
|
||||||
|
Flagz flagz.Reader
|
||||||
|
|
||||||
// minRequestTimeout is how short the request timeout can be. This is used to build the RESTHandler
|
// minRequestTimeout is how short the request timeout can be. This is used to build the RESTHandler
|
||||||
minRequestTimeout time.Duration
|
minRequestTimeout time.Duration
|
||||||
|
|
||||||
|
|
@ -463,8 +467,15 @@ func (s *GenericAPIServer) PrepareRun() preparedGenericAPIServer {
|
||||||
}
|
}
|
||||||
s.installReadyz()
|
s.installReadyz()
|
||||||
|
|
||||||
|
componentName := "apiserver"
|
||||||
if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentStatusz) {
|
if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentStatusz) {
|
||||||
statusz.Install(s.Handler.NonGoRestfulMux, "apiserver", statusz.NewRegistry(s.EffectiveVersion, statusz.WithListedPaths(s.ListedPaths())))
|
statusz.Install(s.Handler.NonGoRestfulMux, componentName, statusz.NewRegistry(s.EffectiveVersion, statusz.WithListedPaths(s.ListedPaths())))
|
||||||
|
}
|
||||||
|
|
||||||
|
if utilfeature.DefaultFeatureGate.Enabled(zpagesfeatures.ComponentFlagz) {
|
||||||
|
if s.Flagz != nil {
|
||||||
|
flagz.Install(s.Handler.NonGoRestfulMux, componentName, s.Flagz)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return preparedGenericAPIServer{s}
|
return preparedGenericAPIServer{s}
|
||||||
|
|
|
||||||
|
|
@ -149,14 +149,14 @@ func TestFlagz(t *testing.T) {
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
wantBodyStr := "kube-apiserver flagz\nWarning: This endpoint is not meant to be machine parseable"
|
wantBodyStr := "apiserver flagz\nWarning: This endpoint is not meant to be machine parseable"
|
||||||
wantBodyJSON := &flagzv1alpha1.Flagz{
|
wantBodyJSON := &flagzv1alpha1.Flagz{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
Kind: "Flagz",
|
Kind: "Flagz",
|
||||||
APIVersion: "config.k8s.io/v1alpha1",
|
APIVersion: "config.k8s.io/v1alpha1",
|
||||||
},
|
},
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "kube-apiserver",
|
Name: "apiserver",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue