From f7c1669125682e22333ff537fe66f364549f2116 Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Thu, 5 Sep 2019 00:28:32 +0300 Subject: [PATCH] Run gPRC health server if grpc-port flag is set --- Makefile | 2 +- cmd/podinfo/main.go | 33 +++++++++++++++++++++++++-------- pkg/grpc/server.go | 6 +++--- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 29381af..134e64f 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ GIT_COMMIT:=$(shell git describe --dirty --always) VERSION:=$(shell grep 'VERSION' pkg/version/version.go | awk '{ print $$4 }' | tr -d '"') run: - GO111MODULE=on go run -ldflags "-s -w -X github.com/stefanprodan/podinfo/pkg/version.REVISION=$(GIT_COMMIT)" cmd/podinfo/* --level=debug + GO111MODULE=on go run -ldflags "-s -w -X github.com/stefanprodan/podinfo/pkg/version.REVISION=$(GIT_COMMIT)" cmd/podinfo/* --level=debug --grpc-port=9999 test: GO111MODULE=on go test -v -race ./... diff --git a/cmd/podinfo/main.go b/cmd/podinfo/main.go index 7302fcb..5acc75d 100644 --- a/cmd/podinfo/main.go +++ b/cmd/podinfo/main.go @@ -2,26 +2,31 @@ package main import ( "fmt" - "github.com/spf13/pflag" - "github.com/spf13/viper" - "github.com/stefanprodan/podinfo/pkg/api" - "github.com/stefanprodan/podinfo/pkg/signals" - "github.com/stefanprodan/podinfo/pkg/version" - "go.uber.org/zap" - "go.uber.org/zap/zapcore" "io/ioutil" "os" "path/filepath" "strconv" "strings" "time" + + "github.com/spf13/pflag" + "github.com/spf13/viper" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + + "github.com/stefanprodan/podinfo/pkg/api" + "github.com/stefanprodan/podinfo/pkg/grpc" + "github.com/stefanprodan/podinfo/pkg/signals" + "github.com/stefanprodan/podinfo/pkg/version" ) func main() { // flags definition fs := pflag.NewFlagSet("default", pflag.ContinueOnError) - fs.Int("port", 9898, "port") + fs.Int("port", 9898, "HTTP port") fs.Int("port-metrics", 0, "metrics port") + fs.Int("grpc-port", 0, "gRPC port") + fs.String("grpc-service-name", "podinfo", "gPRC service name") fs.String("level", "info", "log level debug, info, warn, error, flat or panic") fs.String("backend-url", "", "backend service URL") fs.Duration("http-client-timeout", 2*time.Minute, "client timeout duration") @@ -90,6 +95,18 @@ func main() { viper.Set("port", strconv.Itoa(port)) } + // load gRPC server config + var grpcCfg grpc.Config + if err := viper.Unmarshal(&grpcCfg); err != nil { + logger.Panic("config unmarshal failed", zap.Error(err)) + } + + // start gRPC server + if grpcCfg.Port > 0 { + grpcSrv, _ := grpc.NewServer(&grpcCfg, logger) + go grpcSrv.ListenAndServe() + } + // load HTTP server config var srvCfg api.Config if err := viper.Unmarshal(&srvCfg); err != nil { diff --git a/pkg/grpc/server.go b/pkg/grpc/server.go index 83c8a53..c7fb851 100644 --- a/pkg/grpc/server.go +++ b/pkg/grpc/server.go @@ -16,7 +16,7 @@ type Server struct { } type Config struct { - Port string `mapstructure:"grpc-port"` + Port int `mapstructure:"grpc-port"` ServiceName string `mapstructure:"grpc-service-name"` } @@ -30,9 +30,9 @@ func NewServer(config *Config, logger *zap.Logger) (*Server, error) { } func (s *Server) ListenAndServe() { - listener, err := net.Listen("tcp", fmt.Sprintf(":%s", s.config.Port)) + listener, err := net.Listen("tcp", fmt.Sprintf(":%v", s.config.Port)) if err != nil { - s.logger.Fatal("failed to listen", zap.String("port", s.config.Port)) + s.logger.Fatal("failed to listen", zap.Int("port", s.config.Port)) } srv := grpc.NewServer()