From 33d498471d8e03670926a1fa182cbded65b4684a Mon Sep 17 00:00:00 2001 From: Chris Hua Date: Fri, 30 Jun 2023 16:32:12 -0400 Subject: [PATCH] feat: add healthcheck --- .gitignore | 1 + cmd/server/main.go | 12 ++++++++++-- go.mod | 1 + go.sum | 2 ++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 84fbf7c..47f0be9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ client_secret.json +.env # If you prefer the allow list template instead of the deny list, see community template: # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore diff --git a/cmd/server/main.go b/cmd/server/main.go index 6685729..e6ca613 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -13,6 +13,7 @@ import ( "golang.org/x/oauth2/google" "gopkg.in/Iwark/spreadsheet.v2" + grpchealth "github.com/bufbuild/connect-grpchealth-go" "github.com/stillmatic/featuresheet" fsv1 "github.com/stillmatic/featuresheet/gen/featuresheet/v1" "github.com/stillmatic/featuresheet/gen/featuresheet/v1/featuresheetv1connect" @@ -47,6 +48,9 @@ func (s *FeatureSheetServer) Evaluate( func main() { // copy these from client_secret.json + if os.Getenv("GCP_PROJECT_ID") == "" { + panic("GCP_PROJECT_ID env var must be set") + } serviceAccountJSON := map[string]interface{}{ "type": "service_account", "project_id": os.Getenv("GCP_PROJECT_ID"), @@ -59,12 +63,10 @@ func main() { "auth_provider_x509_cert_url": os.Getenv("GCP_AUTH_PROVIDER_CERT_URL"), "client_x509_cert_url": os.Getenv("GCP_CLIENT_CERT_URL"), } - serviceAccountJSONBytes, err := json.Marshal(serviceAccountJSON) if err != nil { panic(err) } - conf, err := google.JWTConfigFromJSON(serviceAccountJSONBytes, spreadsheet.Scope) if err != nil { panic(err) @@ -80,12 +82,18 @@ func main() { if err != nil { panic(err) } + + // serving s := &FeatureSheetServer{ fs: fs, } mux := http.NewServeMux() path, handler := featuresheetv1connect.NewFeatureSheetServiceHandler(s) mux.Handle(path, handler) + checker := grpchealth.NewStaticChecker( + "featuresheet.v1.FeatureSheetService", + ) + mux.Handle(grpchealth.NewHandler(checker)) portNum := os.Getenv("PORT") if portNum == "" { portNum = "8080" diff --git a/go.mod b/go.mod index ae7dd91..bb5231d 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( require ( cloud.google.com/go/compute/metadata v0.2.0 // indirect github.com/bufbuild/connect-go v1.9.0 // indirect + github.com/bufbuild/connect-grpchealth-go v1.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/go.sum b/go.sum index cd1defc..983fa14 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ cloud.google.com/go/compute/metadata v0.2.0 h1:nBbNSZyDpkNlo3DepaaLKVuO7ClyifSAm cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= github.com/bufbuild/connect-go v1.9.0 h1:JIgAeNuFpo+SUPfU19Yt5TcWlznsN5Bv10/gI/6Pjoc= github.com/bufbuild/connect-go v1.9.0/go.mod h1:CAIePUgkDR5pAFaylSMtNK45ANQjp9JvpluG20rhpV8= +github.com/bufbuild/connect-grpchealth-go v1.1.1 h1:ldceS3m7+Qvl3GI4yzB4oCg3uOdD+Y1bytc/5xuMpqo= +github.com/bufbuild/connect-grpchealth-go v1.1.1/go.mod h1:9KbkogLoUIxOTPKyWDv5evkawr1IYXaHax4XoUHCgoQ= github.com/datadog/mmh3 v0.0.0-20210722141835-012dc69a9e49 h1:9ppqviquwkVpmVM19utHENs1+Ugp4odEBUbFsqP2f/M= github.com/datadog/mmh3 v0.0.0-20210722141835-012dc69a9e49/go.mod h1:NoK5OFSzgNJ9DLcHQ3hhbZKeJZioh9B8G59FOAlytYU= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=