Skip to content
Snippets Groups Projects
Commit 8bab9d00 authored by Alexey Kuklin's avatar Alexey Kuklin
Browse files

Merge branch '326-http-gateway-in-front-each-golang-microservice' into 'localbuild'

# Conflicts:
#   config/configs.go
parents 1a470317 03e1ed50
Branches localbuild
No related tags found
3 merge requests!53Localbuild,!52Localbuild,!49326 http gateway in front each golang microservice
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
dataStorageUrl: localhost:7777 dataStorageUrl: localhost:7777
grpcListenAddress: localhost:7877 grpcListenAddress: localhost:7877
restListenAddress: localhost:7878 restListenAddress: localhost:7878
# This one using by rest-gateway. Must contain the same domain name with issued certificate
grpcURL: key-storage-agent:7877
# VIAM Variables # VIAM Variables
viamUUID: viam-system viamUUID: viam-system
......
...@@ -29,6 +29,7 @@ var MaxMessageSize int ...@@ -29,6 +29,7 @@ var MaxMessageSize int
var GrpcListenAddress string var GrpcListenAddress string
var RestListenAddress string var RestListenAddress string
var GrpcURL string
var DataStorageUrl string var DataStorageUrl string
var EntitiesManagerUrl string var EntitiesManagerUrl string
var CertDir string var CertDir string
...@@ -41,6 +42,7 @@ func SetConfigValues(configFile, etcdURL string) { ...@@ -41,6 +42,7 @@ func SetConfigValues(configFile, etcdURL string) {
viper.SetDefault("restListenAddress", ":7878") viper.SetDefault("restListenAddress", ":7878")
viper.SetDefault("dataStorageUrl", "data-storage-agent:7777") viper.SetDefault("dataStorageUrl", "data-storage-agent:7777")
viper.SetDefault("entitiesManagerUrl", "entities-management-agent:7779") viper.SetDefault("entitiesManagerUrl", "entities-management-agent:7779")
viper.SetDefault("grpcURL", "key-storage-agent:7877")
viper.SetDefault("viamUUID", "viam-system") viper.SetDefault("viamUUID", "viam-system")
viper.SetDefault("viamSession", "viam-session") viper.SetDefault("viamSession", "viam-session")
...@@ -122,6 +124,7 @@ func SetConfigValues(configFile, etcdURL string) { ...@@ -122,6 +124,7 @@ func SetConfigValues(configFile, etcdURL string) {
} }
GrpcListenAddress = viper.GetString("grpcListenAddress") GrpcListenAddress = viper.GetString("grpcListenAddress")
GrpcURL = viper.GetString("grpcURL")
RestListenAddress = viper.GetString("restListenAddress") RestListenAddress = viper.GetString("restListenAddress")
DataStorageUrl = viper.GetString("dataStorageUrl") DataStorageUrl = viper.GetString("dataStorageUrl")
......
...@@ -42,6 +42,7 @@ func main() { ...@@ -42,6 +42,7 @@ func main() {
grpcAddress := config.GrpcListenAddress grpcAddress := config.GrpcListenAddress
restAddress := config.RestListenAddress restAddress := config.RestListenAddress
grpcURL := config.GrpcURL
dataStorageAddress := config.DataStorageUrl dataStorageAddress := config.DataStorageUrl
certPem := config.CertificatePEM certPem := config.CertificatePEM
keyPem := config.PrivateKeyPEM keyPem := config.PrivateKeyPEM
...@@ -62,7 +63,7 @@ func main() { ...@@ -62,7 +63,7 @@ func main() {
// fire the REST server in a goroutine // fire the REST server in a goroutine
go func() { go func() {
err := server.StartRESTServer(restAddress, grpcAddress, certPem) err := server.StartRESTServer(restAddress, grpcURL, certPem, keyPem)
if err != nil { if err != nil {
log.Fatalf("failed to start gRPC server: %s", err) log.Fatalf("failed to start gRPC server: %s", err)
} }
......
...@@ -54,6 +54,9 @@ func credMatcher(headerName string) (mdName string, ok bool) { ...@@ -54,6 +54,9 @@ func credMatcher(headerName string) (mdName string, ok bool) {
if headerName == "Session" { if headerName == "Session" {
return headerName, true return headerName, true
} }
if headerName == "Uuid" {
return headerName, true
}
return "", false return "", false
} }
...@@ -177,7 +180,8 @@ func StartGRPCServer(address string, certPEM, privateKeyPEM, caCertPEM, vereignC ...@@ -177,7 +180,8 @@ func StartGRPCServer(address string, certPEM, privateKeyPEM, caCertPEM, vereignC
return nil return nil
} }
func StartRESTServer(address, grpcAddress string, certPEM []byte) error { func StartRESTServer(address, grpcURL string, certPEM, keyPEM []byte) error {
log.Println("grpcAddress: ", grpcURL)
ctx := context.Background() ctx := context.Background()
ctx, cancel := context.WithCancel(ctx) ctx, cancel := context.WithCancel(ctx)
defer cancel() defer cancel()
...@@ -200,14 +204,31 @@ func StartRESTServer(address, grpcAddress string, certPEM []byte) error { ...@@ -200,14 +204,31 @@ func StartRESTServer(address, grpcAddress string, certPEM []byte) error {
opts := []grpc.DialOption{grpc.WithTransportCredentials(creds)} opts := []grpc.DialOption{grpc.WithTransportCredentials(creds)}
// Register RedisStorageServer // Register RedisStorageServer
err = api.RegisterKeyStorageHandlerFromEndpoint(ctx, mux, grpcAddress, opts) err = api.RegisterKeyStorageHandlerFromEndpoint(ctx, mux, grpcURL, opts)
if err != nil { if err != nil {
log.Printf("Error: %v", err) log.Printf("Error: %v", err)
return fmt.Errorf("could not register service RedisStorageServer: %s", err) return fmt.Errorf("could not register service RedisStorageServer: %s", err)
} }
log.Printf("starting HTTP/1.1 REST server on %s", address) // server certificate
http.ListenAndServe(address, mux) certificate, err := tls.X509KeyPair(certPEM, keyPEM)
if err != nil {
log.Printf("Error: %v", err)
return fmt.Errorf("could not load server key pair: %s", err)
}
serverTLSConfig := &tls.Config{
Certificates: []tls.Certificate{certificate},
}
tlsServer := &http.Server{
Addr: address,
Handler: mux,
TLSConfig: serverTLSConfig,
}
log.Printf("starting HTTP/1.1 REST server on %s", address)
tlsServer.ListenAndServeTLS("","")
return nil return nil
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment