GRPC Server: Move reflection to a separate gRPC service (#55872)
This commit is contained in:
@@ -51,6 +51,7 @@ func ProvideBackgroundServiceRegistry(
|
|||||||
_ serviceaccounts.Service, _ *guardian.Provider,
|
_ serviceaccounts.Service, _ *guardian.Provider,
|
||||||
_ *plugindashboardsservice.DashboardUpdater, _ *sanitizer.Provider,
|
_ *plugindashboardsservice.DashboardUpdater, _ *sanitizer.Provider,
|
||||||
_ *grpcserver.HealthService,
|
_ *grpcserver.HealthService,
|
||||||
|
_ *grpcserver.ReflectionService,
|
||||||
) *BackgroundServiceRegistry {
|
) *BackgroundServiceRegistry {
|
||||||
return NewBackgroundServiceRegistry(
|
return NewBackgroundServiceRegistry(
|
||||||
httpServer,
|
httpServer,
|
||||||
|
|||||||
@@ -344,6 +344,7 @@ var wireBasicSet = wire.NewSet(
|
|||||||
orgimpl.ProvideService,
|
orgimpl.ProvideService,
|
||||||
grpcserver.ProvideService,
|
grpcserver.ProvideService,
|
||||||
grpcserver.ProvideHealthService,
|
grpcserver.ProvideHealthService,
|
||||||
|
grpcserver.ProvideReflectionService,
|
||||||
teamimpl.ProvideService,
|
teamimpl.ProvideService,
|
||||||
tempuserimpl.ProvideService,
|
tempuserimpl.ProvideService,
|
||||||
loginattemptimpl.ProvideService,
|
loginattemptimpl.ProvideService,
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package grpcserver
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
|
|
||||||
|
"google.golang.org/grpc/reflection"
|
||||||
|
"google.golang.org/grpc/reflection/grpc_reflection_v1alpha"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ReflectionService implements the gRPC Server Reflection Protocol:
|
||||||
|
// https://github.com/grpc/grpc/blob/master/doc/server-reflection.md
|
||||||
|
type ReflectionService struct {
|
||||||
|
cfg *setting.Cfg
|
||||||
|
reflectionServer *reflectionServer
|
||||||
|
}
|
||||||
|
|
||||||
|
type reflectionServer struct {
|
||||||
|
grpc_reflection_v1alpha.ServerReflectionServer
|
||||||
|
}
|
||||||
|
|
||||||
|
// AuthFuncOverride no auth for reflection service.
|
||||||
|
func (s *reflectionServer) AuthFuncOverride(ctx context.Context, _ string) (context.Context, error) {
|
||||||
|
return ctx, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ProvideReflectionService(cfg *setting.Cfg, grpcServerProvider Provider) (*ReflectionService, error) {
|
||||||
|
re := &reflectionServer{reflection.NewServer(reflection.ServerOptions{Services: grpcServerProvider.GetServer()})}
|
||||||
|
grpc_reflection_v1alpha.RegisterServerReflectionServer(grpcServerProvider.GetServer(), re)
|
||||||
|
return &ReflectionService{
|
||||||
|
cfg: cfg,
|
||||||
|
reflectionServer: re,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
@@ -16,7 +16,6 @@ import (
|
|||||||
|
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials"
|
"google.golang.org/grpc/credentials"
|
||||||
"google.golang.org/grpc/reflection"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type Provider interface {
|
type Provider interface {
|
||||||
@@ -51,9 +50,7 @@ func ProvideService(cfg *setting.Cfg, apiKey apikey.Service, userService user.Se
|
|||||||
opts = append(opts, grpc.Creds(credentials.NewTLS(cfg.GRPCServerTLSConfig)))
|
opts = append(opts, grpc.Creds(credentials.NewTLS(cfg.GRPCServerTLSConfig)))
|
||||||
}
|
}
|
||||||
|
|
||||||
grpcServer := grpc.NewServer(opts...)
|
s.server = grpc.NewServer(opts...)
|
||||||
reflection.Register(grpcServer)
|
|
||||||
s.server = grpcServer
|
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user