github.com/google/cloudprober@v0.11.3/rds/server/cmd/server.go (about)

     1  // This binary implements a stand-alone ResourceDiscovery server.
     2  package main
     3  
     4  import (
     5  	"context"
     6  	"io/ioutil"
     7  	"net"
     8  
     9  	"flag"
    10  	"github.com/golang/glog"
    11  	"github.com/golang/protobuf/proto"
    12  	"github.com/google/cloudprober/logger"
    13  	"github.com/google/cloudprober/rds/server"
    14  	configpb "github.com/google/cloudprober/rds/server/proto"
    15  	"google.golang.org/grpc"
    16  	"google.golang.org/grpc/credentials"
    17  )
    18  
    19  var (
    20  	config      = flag.String("config_file", "", "Config file (ServerConf)")
    21  	addr        = flag.String("addr", ":0", "Port for the gRPC server")
    22  	tlsCertFile = flag.String("tls_cert_file", ":0", "Port for the gRPC server")
    23  	tlsKeyFile  = flag.String("tls_key_file", ":0", "Port for the gRPC server")
    24  )
    25  
    26  func main() {
    27  	flag.Parse()
    28  
    29  	c := &configpb.ServerConf{}
    30  
    31  	// If we are given a config file, read it. If not, use defaults.
    32  	if *config != "" {
    33  		b, err := ioutil.ReadFile(*config)
    34  		if err != nil {
    35  			glog.Exit(err)
    36  		}
    37  		if err := proto.UnmarshalText(string(b), c); err != nil {
    38  			glog.Exitf("Error while parsing config protobuf %s: Err: %v", string(b), err)
    39  		}
    40  	}
    41  
    42  	grpcLn, err := net.Listen("tcp", *addr)
    43  	if err != nil {
    44  		glog.Exitf("error while creating listener for default gRPC server: %v", err)
    45  	}
    46  
    47  	// Create a gRPC server for RDS service.
    48  	var serverOpts []grpc.ServerOption
    49  
    50  	if *tlsCertFile != "" {
    51  		creds, err := credentials.NewServerTLSFromFile(*tlsCertFile, *tlsKeyFile)
    52  		if err != nil {
    53  			glog.Exitf("error initializing gRPC server TLS credentials: %v", err)
    54  		}
    55  		serverOpts = append(serverOpts, grpc.Creds(creds))
    56  	}
    57  
    58  	grpcServer := grpc.NewServer(serverOpts...)
    59  	srv, err := server.New(context.Background(), c, nil, &logger.Logger{})
    60  	if err != nil {
    61  		glog.Exit(err)
    62  	}
    63  	srv.RegisterWithGRPC(grpcServer)
    64  
    65  	grpcServer.Serve(grpcLn)
    66  }