MCPcopy
hub / github.com/cilium/cilium / New

Function New

pkg/hubble/relay/server/server.go:62–152  ·  view source on GitHub ↗

New creates a new Server.

(options ...Option)

Source from the content-addressed store, hash-verified

60
61// New creates a new Server.
62func New(options ...Option) (*Server, error) {
63 opts := defaultOptions // start with defaults
64 options = append(options, DefaultOptions...)
65 for _, opt := range options {
66 if err := opt(&opts); err != nil {
67 return nil, fmt.Errorf("failed to apply option: %w", err)
68 }
69 }
70 if opts.clientTLSConfig == nil && !opts.insecureClient {
71 return nil, ErrNoClientTLSConfig
72 }
73 if opts.serverTLSConfig == nil && !opts.insecureServer {
74 return nil, ErrNoServerTLSConfig
75 }
76
77 var peerClientBuilder peerTypes.ClientBuilder = &peerTypes.LocalClientBuilder{}
78 if !strings.HasPrefix(opts.peerTarget, "unix://") {
79 peerClientBuilder = &peerTypes.RemoteClientBuilder{
80 TLSConfig: opts.clientTLSConfig,
81 TLSServerName: peer.TLSServerName(defaults.PeerServiceName, opts.clusterName),
82 }
83 }
84
85 pm, err := pool.NewPeerManager(
86 registry,
87 pool.WithPeerServiceAddress(opts.peerTarget),
88 pool.WithPeerClientBuilder(peerClientBuilder),
89 pool.WithClientConnBuilder(pool.GRPCClientConnBuilder{
90 TLSConfig: opts.clientTLSConfig,
91 }),
92 pool.WithRetryTimeout(opts.retryTimeout),
93 pool.WithLogger(opts.log),
94 )
95 if err != nil {
96 return nil, err
97 }
98
99 var serverOpts []grpc.ServerOption
100
101 if len(opts.grpcUnaryInterceptors) > 0 {
102 serverOpts = append(serverOpts, grpc.ChainUnaryInterceptor(opts.grpcUnaryInterceptors...))
103 }
104 if len(opts.grpcStreamInterceptors) > 0 {
105 serverOpts = append(serverOpts, grpc.ChainStreamInterceptor(opts.grpcStreamInterceptors...))
106 }
107
108 if opts.serverTLSConfig != nil {
109 tlsConfig := opts.serverTLSConfig.ServerConfig(&tls.Config{
110 MinVersion: MinTLSVersion,
111 })
112 serverOpts = append(serverOpts, grpc.Creds(credentials.NewTLS(tlsConfig)))
113 }
114 grpcServer := grpc.NewServer(serverOpts...)
115 grpcHealthServer := grpc.NewServer()
116
117 observerOptions := copyObserverOptionsWithLogger(opts.log, opts.observerOptions)
118 observerSrv, err := observer.NewServer(pm, observerOptions...)
119 if err != nil {

Callers 1

runServeFunction · 0.92

Calls 15

TLSServerNameFunction · 0.92
NewPeerManagerFunction · 0.92
WithPeerServiceAddressFunction · 0.92
WithPeerClientBuilderFunction · 0.92
WithClientConnBuilderFunction · 0.92
WithRetryTimeoutFunction · 0.92
WithLoggerFunction · 0.92
NewServerFunction · 0.92
optFuncType · 0.85
newHealthServerFunction · 0.85
MustRegisterMethod · 0.80

Tested by

no test coverage detected