Chore: Update k8s.io dependencies (#91692)
This commit is contained in:
@@ -12,7 +12,6 @@
|
||||
package aggregator
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"io"
|
||||
@@ -203,7 +202,7 @@ func CreateAggregatorServer(config *Config, delegateAPIServer genericapiserver.D
|
||||
}
|
||||
|
||||
err = aggregatorServer.GenericAPIServer.AddPostStartHook("grafana-apiserver-autoregistration", func(context genericapiserver.PostStartHookContext) error {
|
||||
go autoRegistrationController.Run(5, context.StopCh)
|
||||
go autoRegistrationController.Run(5, context.Done())
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
@@ -214,10 +213,10 @@ func CreateAggregatorServer(config *Config, delegateAPIServer genericapiserver.D
|
||||
addRemoteAPIServicesToRegister(remoteServicesConfig, autoRegistrationController)
|
||||
externalNames := getRemoteExternalNamesToRegister(remoteServicesConfig)
|
||||
err = aggregatorServer.GenericAPIServer.AddPostStartHook("grafana-apiserver-remote-autoregistration", func(ctx genericapiserver.PostStartHookContext) error {
|
||||
controllers.WaitForCacheSync("grafana-apiserver-remote-autoregistration", ctx.StopCh, externalNamesInformer.Informer().HasSynced)
|
||||
controllers.WaitForCacheSync("grafana-apiserver-remote-autoregistration", ctx.Done(), externalNamesInformer.Informer().HasSynced)
|
||||
namespacedClient := remoteServicesConfig.serviceClientSet.ServiceV0alpha1().ExternalNames(remoteServicesConfig.ExternalNamesNamespace)
|
||||
for _, externalName := range externalNames {
|
||||
_, err := namespacedClient.Apply(context.Background(), externalName, metav1.ApplyOptions{
|
||||
_, err := namespacedClient.Apply(ctx, externalName, metav1.ApplyOptions{
|
||||
FieldManager: "grafana-aggregator",
|
||||
Force: true,
|
||||
})
|
||||
@@ -275,13 +274,13 @@ func CreateAggregatorServer(config *Config, delegateAPIServer genericapiserver.D
|
||||
|
||||
aggregatorServer.GenericAPIServer.AddPostStartHookOrDie("apiservice-status-override-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)
|
||||
go availableController.Run(5, context.Done())
|
||||
return nil
|
||||
})
|
||||
|
||||
aggregatorServer.GenericAPIServer.AddPostStartHookOrDie("start-grafana-aggregator-informers", func(context genericapiserver.PostStartHookContext) error {
|
||||
sharedInformerFactory.Start(context.StopCh)
|
||||
aggregatorServer.APIRegistrationInformers.Start(context.StopCh)
|
||||
sharedInformerFactory.Start(context.Done())
|
||||
aggregatorServer.APIRegistrationInformers.Start(context.Done())
|
||||
return nil
|
||||
})
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ type AvailableConditionController struct {
|
||||
// To allow injection for testing.
|
||||
syncFn func(key string) error
|
||||
|
||||
queue workqueue.RateLimitingInterface
|
||||
queue workqueue.TypedRateLimitingInterface[string]
|
||||
// map from service-namespace -> service-name -> apiservice names
|
||||
cache map[string]map[string][]string
|
||||
// this lock protects operations on the above cache
|
||||
@@ -85,12 +85,13 @@ func NewAvailableConditionController(
|
||||
apiServiceLister: apiServiceInformer.Lister(),
|
||||
externalNameLister: externalNameInformer.Lister(),
|
||||
serviceResolver: serviceResolver,
|
||||
queue: workqueue.NewNamedRateLimitingQueue(
|
||||
queue: workqueue.NewTypedRateLimitingQueueWithConfig(
|
||||
// We want a fairly tight requeue time. The controller listens to the API, but because it relies on the routability of the
|
||||
// service network, it is possible for an external, non-watchable factor to affect availability. This keeps
|
||||
// the maximum disruption time to a minimum, but it does prevent hot loops.
|
||||
workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 30*time.Second),
|
||||
"AvailableConditionController"),
|
||||
workqueue.NewTypedItemExponentialFailureRateLimiter[string](5*time.Millisecond, 30*time.Second),
|
||||
workqueue.TypedRateLimitingQueueConfig[string]{Name: "AvailableConditionController"},
|
||||
),
|
||||
proxyTransportDial: proxyTransportDial,
|
||||
proxyCurrentCertKeyContent: proxyCurrentCertKeyContent,
|
||||
}
|
||||
@@ -348,7 +349,7 @@ func (c *AvailableConditionController) processNextWorkItem() bool {
|
||||
}
|
||||
defer c.queue.Done(key)
|
||||
|
||||
err := c.syncFn(key.(string))
|
||||
err := c.syncFn(key)
|
||||
if err == nil {
|
||||
c.queue.Forget(key)
|
||||
return true
|
||||
|
||||
@@ -5,24 +5,19 @@ import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"regexp"
|
||||
goruntime "runtime"
|
||||
"runtime/debug"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"golang.org/x/mod/semver"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||
"k8s.io/apimachinery/pkg/version"
|
||||
openapinamer "k8s.io/apiserver/pkg/endpoints/openapi"
|
||||
"k8s.io/apiserver/pkg/registry/generic"
|
||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||
"k8s.io/apiserver/pkg/util/openapi"
|
||||
utilversion "k8s.io/apiserver/pkg/util/version"
|
||||
k8sscheme "k8s.io/client-go/kubernetes/scheme"
|
||||
k8stracing "k8s.io/component-base/tracing"
|
||||
"k8s.io/kube-openapi/pkg/common"
|
||||
@@ -122,22 +117,8 @@ func SetupConfig(
|
||||
return handler
|
||||
}
|
||||
|
||||
k8sVersion, err := getK8sApiserverVersion()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
before, after, _ := strings.Cut(buildVersion, ".")
|
||||
serverConfig.Version = &version.Info{
|
||||
Major: before,
|
||||
Minor: after,
|
||||
GoVersion: goruntime.Version(),
|
||||
Platform: fmt.Sprintf("%s/%s", goruntime.GOOS, goruntime.GOARCH),
|
||||
Compiler: goruntime.Compiler,
|
||||
GitTreeState: buildBranch,
|
||||
GitCommit: buildCommit,
|
||||
BuildDate: time.Unix(buildTimestamp, 0).UTC().Format(time.DateTime),
|
||||
GitVersion: k8sVersion,
|
||||
}
|
||||
serverConfig.EffectiveVersion = utilversion.DefaultKubeEffectiveVersion()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -200,33 +181,3 @@ func InstallAPIs(
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// find the k8s version according to build info
|
||||
func getK8sApiserverVersion() (string, error) {
|
||||
bi, ok := debug.ReadBuildInfo()
|
||||
if !ok {
|
||||
return "", fmt.Errorf("debug.ReadBuildInfo() failed")
|
||||
}
|
||||
|
||||
if len(bi.Deps) == 0 {
|
||||
return "v?.?", nil // this is normal while debugging
|
||||
}
|
||||
|
||||
for _, dep := range bi.Deps {
|
||||
if dep.Path == "k8s.io/apiserver" {
|
||||
if !semver.IsValid(dep.Version) {
|
||||
return "", fmt.Errorf("invalid semantic version for k8s.io/apiserver")
|
||||
}
|
||||
// v0 => v1
|
||||
majorVersion := strings.TrimPrefix(semver.Major(dep.Version), "v")
|
||||
majorInt, err := strconv.Atoi(majorVersion)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("could not convert majorVersion to int. majorVersion: %s", majorVersion)
|
||||
}
|
||||
newMajor := fmt.Sprintf("v%d", majorInt+1)
|
||||
return strings.Replace(dep.Version, semver.Major(dep.Version), newMajor, 1), nil
|
||||
}
|
||||
}
|
||||
|
||||
return "", fmt.Errorf("could not find k8s.io/apiserver in build info")
|
||||
}
|
||||
|
||||
@@ -341,12 +341,12 @@ func (s *service) start(ctx context.Context) error {
|
||||
|
||||
var runningServer *genericapiserver.GenericAPIServer
|
||||
if s.features.IsEnabledGlobally(featuremgmt.FlagKubernetesAggregator) {
|
||||
runningServer, err = s.startAggregator(transport, serverConfig, server, s.metrics)
|
||||
runningServer, err = s.startAggregator(ctx, transport, serverConfig, server, s.metrics)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
runningServer, err = s.startCoreServer(transport, serverConfig, server)
|
||||
runningServer, err = s.startCoreServer(ctx, transport, server)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -368,8 +368,8 @@ func (s *service) start(ctx context.Context) error {
|
||||
}
|
||||
|
||||
func (s *service) startCoreServer(
|
||||
ctx context.Context,
|
||||
transport *roundTripperFunc,
|
||||
serverConfig *genericapiserver.RecommendedConfig,
|
||||
server *genericapiserver.GenericAPIServer,
|
||||
) (*genericapiserver.GenericAPIServer, error) {
|
||||
// setup the loopback transport and signal that it's ready.
|
||||
@@ -381,13 +381,14 @@ func (s *service) startCoreServer(
|
||||
|
||||
prepared := server.PrepareRun()
|
||||
go func() {
|
||||
s.stoppedCh <- prepared.Run(s.stopCh)
|
||||
s.stoppedCh <- prepared.RunWithContext(ctx)
|
||||
}()
|
||||
|
||||
return server, nil
|
||||
}
|
||||
|
||||
func (s *service) startAggregator(
|
||||
ctx context.Context,
|
||||
transport *roundTripperFunc,
|
||||
serverConfig *genericapiserver.RecommendedConfig,
|
||||
server *genericapiserver.GenericAPIServer,
|
||||
@@ -418,7 +419,7 @@ func (s *service) startAggregator(
|
||||
}
|
||||
|
||||
go func() {
|
||||
s.stoppedCh <- prepared.Run(s.stopCh)
|
||||
s.stoppedCh <- prepared.Run(ctx)
|
||||
}()
|
||||
|
||||
return aggregatorServer.GenericAPIServer, nil
|
||||
@@ -449,7 +450,7 @@ func (s *service) running(ctx context.Context) error {
|
||||
return err
|
||||
}
|
||||
case <-ctx.Done():
|
||||
close(s.stopCh)
|
||||
return ctx.Err()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -124,15 +124,8 @@ func (o *TracingOptions) ApplyTo(config *genericapiserver.RecommendedConfig) err
|
||||
}
|
||||
|
||||
config.AddPostStartHookOrDie("grafana-tracing-service", func(hookCtx genericapiserver.PostStartHookContext) error {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
go func() {
|
||||
<-hookCtx.StopCh
|
||||
cancel()
|
||||
}()
|
||||
|
||||
go func() {
|
||||
if err := ts.Run(ctx); err != nil && !errors.Is(err, context.Canceled) {
|
||||
if err := ts.Run(hookCtx.Context); err != nil && !errors.Is(err, context.Canceled) {
|
||||
o.logger.Error("failed to shutdown tracing service", "error", err)
|
||||
}
|
||||
}()
|
||||
|
||||
Reference in New Issue
Block a user