Skip to content

Commit

Permalink
Merge pull request kubernetes#125650 from mjudeikis/mjudeikis/generic…
Browse files Browse the repository at this point in the history
…-controlplane

Generic Control Plane: Add Extra.DisableAvailableConditionController for kube-aggregator
  • Loading branch information
k8s-ci-robot committed Jun 26, 2024
2 parents 437f6e9 + 539eb53 commit 2b122bc
Showing 1 changed file with 34 additions and 21 deletions.
55 changes: 34 additions & 21 deletions staging/src/k8s.io/kube-aggregator/pkg/apiserver/apiserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,13 @@ type ExtraConfig struct {
ServiceResolver ServiceResolver

RejectForwardingRedirects bool

// DisableAvailableConditionController disables the controller that updates the Available conditions for
// APIServices, Endpoints and Services. This controller runs in kube-aggregator and can interfere with
// Generic Control Plane components when certain apis are not available.
// TODO: We should find a better way to handle this. For now it will be for Generic Control Plane authors to
// disable this controller if they see issues.
DisableAvailableConditionController bool
}

// Config represents the configuration needed to create an APIAggregator.
Expand Down Expand Up @@ -307,24 +314,35 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg
})
}

availableController, err := statuscontrollers.NewAvailableConditionController(
informerFactory.Apiregistration().V1().APIServices(),
c.GenericConfig.SharedInformerFactory.Core().V1().Services(),
c.GenericConfig.SharedInformerFactory.Core().V1().Endpoints(),
apiregistrationClient.ApiregistrationV1(),
proxyTransportDial,
(func() ([]byte, []byte))(s.proxyCurrentCertKeyContent),
s.serviceResolver,
)
if err != nil {
return nil, err
// If the AvailableConditionController is disabled, we don't need to start the informers
// and the controller.
if !c.ExtraConfig.DisableAvailableConditionController {
availableController, err := statuscontrollers.NewAvailableConditionController(
informerFactory.Apiregistration().V1().APIServices(),
c.GenericConfig.SharedInformerFactory.Core().V1().Services(),
c.GenericConfig.SharedInformerFactory.Core().V1().Endpoints(),
apiregistrationClient.ApiregistrationV1(),
proxyTransportDial,
(func() ([]byte, []byte))(s.proxyCurrentCertKeyContent),
s.serviceResolver,
)
if err != nil {
return nil, err
}

s.GenericAPIServer.AddPostStartHookOrDie("start-kube-aggregator-informers", func(context genericapiserver.PostStartHookContext) error {
informerFactory.Start(context.Done())
c.GenericConfig.SharedInformerFactory.Start(context.Done())
return nil
})

s.GenericAPIServer.AddPostStartHookOrDie("apiservice-status-available-controller", func(context genericapiserver.PostStartHookContext) error {
// if we end up blocking for long periods of time, we may need to increase workers.
go availableController.Run(5, context.Done())
return nil
})
}

s.GenericAPIServer.AddPostStartHookOrDie("start-kube-aggregator-informers", func(context genericapiserver.PostStartHookContext) error {
informerFactory.Start(context.StopCh)
c.GenericConfig.SharedInformerFactory.Start(context.StopCh)
return nil
})
s.GenericAPIServer.AddPostStartHookOrDie("apiservice-registration-controller", func(context genericapiserver.PostStartHookContext) error {
go apiserviceRegistrationController.Run(context.StopCh, apiServiceRegistrationControllerInitiated)
select {
Expand All @@ -334,11 +352,6 @@ func (c completedConfig) NewWithDelegate(delegationTarget genericapiserver.Deleg

return nil
})
s.GenericAPIServer.AddPostStartHookOrDie("apiservice-status-available-controller", func(context genericapiserver.PostStartHookContext) error {
// if we end up blocking for long periods of time, we may need to increase workers.
go availableController.Run(5, context.StopCh)
return nil
})

if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.AggregatedDiscoveryEndpoint) {
s.discoveryAggregationController = NewDiscoveryManager(
Expand Down

0 comments on commit 2b122bc

Please sign in to comment.