GRPC Server: Move reflection to a separate gRPC service (#55872)

This commit is contained in:
Todd Treece 2022-09-28 14:00:46 -04:00 committed by GitHub
parent e8ac52ba0f
commit a281c26580
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 38 additions and 4 deletions

View File

@ -51,6 +51,7 @@ func ProvideBackgroundServiceRegistry(
_ serviceaccounts.Service, _ *guardian.Provider,
_ *plugindashboardsservice.DashboardUpdater, _ *sanitizer.Provider,
_ *grpcserver.HealthService,
_ *grpcserver.ReflectionService,
) *BackgroundServiceRegistry {
return NewBackgroundServiceRegistry(
httpServer,

View File

@ -344,6 +344,7 @@ var wireBasicSet = wire.NewSet(
orgimpl.ProvideService,
grpcserver.ProvideService,
grpcserver.ProvideHealthService,
grpcserver.ProvideReflectionService,
teamimpl.ProvideService,
tempuserimpl.ProvideService,
loginattemptimpl.ProvideService,

View File

@ -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
}

View File

@ -16,7 +16,6 @@ import (
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/reflection"
)
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)))
}
grpcServer := grpc.NewServer(opts...)
reflection.Register(grpcServer)
s.server = grpcServer
s.server = grpc.NewServer(opts...)
return s, nil
}