Skip to content

β˜οΈπŸƒ Get up and running with Go on Google Cloud.

License

Notifications You must be signed in to change notification settings

einride/cloudrunner-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud Runner

Get up and running with Go and gRPC on Google Cloud Platform, with this lightweight, opinionated, batteries-included service SDK.

Features

Run your application with cloudrunner.Run, and you get:

To help you build gRPC microservices, you also get:

Get up and running

Install the package:

$ go get go.einride.tech/cloudrunner

Try out a minimal example:

package main

import (
	"context"
	"log"

	"go.einride.tech/cloudrunner"
	"google.golang.org/grpc/health"
	"google.golang.org/grpc/health/grpc_health_v1"
)

func main() {
	if err := cloudrunner.Run(func(ctx context.Context) error {
		cloudrunner.Logger(ctx).Info("hello world")
		grpcServer := cloudrunner.NewGRPCServer(ctx)
		healthServer := health.NewServer()
		grpc_health_v1.RegisterHealthServer(grpcServer, healthServer)
		return cloudrunner.ListenGRPC(ctx, grpcServer)
	}); err != nil {
		log.Fatal(err)
	}
}

Configuration

The service is configured with environment variables.

When the service is running on GCE, all built-in integrations are turned on by default.

Service-specific config is supported out of the box.

Invoke your service with -help to show available configuration.

Usage of grpc-server:

  -config string
    	load environment from a YAML service specification
  -help
    	show help then exit
  -validate
    	validate config then exit

Runtime configuration of grpc-server:

CONFIG         ENV                                      TYPE                         DEFAULT                ON GCE
cloudrunner    PORT                                     int                          8080                   
cloudrunner    K_SERVICE                                string                                              
cloudrunner    K_REVISION                               string                                              
cloudrunner    K_CONFIGURATION                          string                                              
cloudrunner    CLOUD_RUN_JOB                            string                                              
cloudrunner    CLOUD_RUN_EXECUTION                      string                                              
cloudrunner    CLOUD_RUN_TASK_INDEX                     int                                                 
cloudrunner    CLOUD_RUN_TASK_ATTEMPT                   int                                                 
cloudrunner    CLOUD_RUN_TASK_COUNT                     int                                                 
cloudrunner    GOOGLE_CLOUD_PROJECT                     string                                              
cloudrunner    RUNTIME_SERVICEACCOUNT                   string                                              
cloudrunner    SERVICE_VERSION                          string                                              
cloudrunner    LOGGER_DEVELOPMENT                       bool                         true                   false
cloudrunner    LOGGER_LEVEL                             zapcore.Level                debug                  info
cloudrunner    LOGGER_REPORTERRORS                      bool                                                true
cloudrunner    PROFILER_ENABLED                         bool                                                true
cloudrunner    PROFILER_MUTEXPROFILING                  bool                                                
cloudrunner    PROFILER_ALLOCFORCEGC                    bool                         true                   
cloudrunner    TRACEEXPORTER_ENABLED                    bool                                                true
cloudrunner    TRACEEXPORTER_TIMEOUT                    time.Duration                10s                    
cloudrunner    TRACEEXPORTER_SAMPLEPROBABILITY          float64                      0.01                   
cloudrunner    METRICEXPORTER_ENABLED                   bool                                                false
cloudrunner    METRICEXPORTER_INTERVAL                  time.Duration                60s                    
cloudrunner    METRICEXPORTER_RUNTIMEINSTRUMENTATION    bool                                                true
cloudrunner    METRICEXPORTER_HOSTINSTRUMENTATION       bool                                                true
cloudrunner    METRICEXPORTER_OPENCENSUSPRODUCER        bool                         false                  
cloudrunner    SERVER_TIMEOUT                           time.Duration                290s                   
cloudrunner    CLIENT_TIMEOUT                           time.Duration                10s                    
cloudrunner    CLIENT_RETRY_ENABLED                     bool                         true                   
cloudrunner    CLIENT_RETRY_INITIALBACKOFF              time.Duration                200ms                  
cloudrunner    CLIENT_RETRY_MAXBACKOFF                  time.Duration                60s                    
cloudrunner    CLIENT_RETRY_MAXATTEMPTS                 int                          5                      
cloudrunner    CLIENT_RETRY_BACKOFFMULTIPLIER           float64                      2                      
cloudrunner    CLIENT_RETRY_RETRYABLESTATUSCODES        []codes.Code                 Unavailable,Unknown    
cloudrunner    REQUESTLOGGER_MESSAGESIZELIMIT           int                                                 1024
cloudrunner    REQUESTLOGGER_CODETOLEVEL                map[codes.Code]slog.Level                           
cloudrunner    REQUESTLOGGER_STATUSTOLEVEL              map[int]slog.Level                                  

Build-time configuration of grpc-server:

LDFLAG                                                     TYPE      VALUE
go.einride.tech/cloudrunner/cloudruntime.serviceVersion    string