mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-09-27 11:42:19 +08:00
56 lines
2.0 KiB
Go
56 lines
2.0 KiB
Go
package controlplane
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net"
|
|
"time"
|
|
|
|
clusterservice "github.com/envoyproxy/go-control-plane/envoy/service/cluster/v3"
|
|
discoverygrpc "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3"
|
|
endpointservice "github.com/envoyproxy/go-control-plane/envoy/service/endpoint/v3"
|
|
listenerservice "github.com/envoyproxy/go-control-plane/envoy/service/listener/v3"
|
|
routeservice "github.com/envoyproxy/go-control-plane/envoy/service/route/v3"
|
|
runtimeservice "github.com/envoyproxy/go-control-plane/envoy/service/runtime/v3"
|
|
secretservice "github.com/envoyproxy/go-control-plane/envoy/service/secret/v3"
|
|
serverv3 "github.com/envoyproxy/go-control-plane/pkg/server/v3"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/keepalive"
|
|
|
|
plog "github.com/wencaiwulue/kubevpn/v2/pkg/log"
|
|
)
|
|
|
|
const (
|
|
grpcMaxConcurrentStreams = 1000000
|
|
)
|
|
|
|
func RunServer(ctx context.Context, server serverv3.Server, port uint) error {
|
|
grpcOpts := []grpc.ServerOption{
|
|
grpc.MaxConcurrentStreams(grpcMaxConcurrentStreams),
|
|
grpc.KeepaliveParams(keepalive.ServerParameters{
|
|
Time: 15 * time.Second,
|
|
Timeout: 5 * time.Second,
|
|
}),
|
|
grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{
|
|
MinTime: 15 * time.Second,
|
|
PermitWithoutStream: true,
|
|
})}
|
|
grpcServer := grpc.NewServer(grpcOpts...)
|
|
var lc net.ListenConfig
|
|
listener, err := lc.Listen(ctx, "tcp", fmt.Sprintf(":%d", port))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
discoverygrpc.RegisterAggregatedDiscoveryServiceServer(grpcServer, server)
|
|
endpointservice.RegisterEndpointDiscoveryServiceServer(grpcServer, server)
|
|
clusterservice.RegisterClusterDiscoveryServiceServer(grpcServer, server)
|
|
routeservice.RegisterRouteDiscoveryServiceServer(grpcServer, server)
|
|
listenerservice.RegisterListenerDiscoveryServiceServer(grpcServer, server)
|
|
secretservice.RegisterSecretDiscoveryServiceServer(grpcServer, server)
|
|
runtimeservice.RegisterRuntimeDiscoveryServiceServer(grpcServer, server)
|
|
|
|
plog.G(ctx).Infof("Management server listening on %d", port)
|
|
return grpcServer.Serve(listener)
|
|
}
|