Просмотр исходного кода

Start v2 provider metrics server

Signed-off-by: Moritz Johner <beller.moritz@googlemail.com>
Moritz Johner 2 месяцев назад
Родитель
Сommit
c845e3ce2e

+ 15 - 0
providers/v2/aws/main.go

@@ -19,6 +19,7 @@ limitations under the License.
 package main
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"log"
@@ -108,6 +109,19 @@ func main() {
 		log.Fatalf("Failed to create gRPC server: %v", err)
 	}
 
+	ctx, cancel := context.WithCancel(context.Background())
+	defer cancel()
+
+	metricsServer := grpcserver.NewMetricsServer(grpcserver.DefaultMetricsPort, nil)
+	if err := grpcserver.RegisterMetrics(metricsServer.GetRegistry()); err != nil {
+		log.Fatalf("Failed to register provider metrics: %v", err)
+	}
+	go func() {
+		if err := metricsServer.Start(ctx); err != nil {
+			log.Fatalf("Failed to start provider metrics server: %v", err)
+		}
+	}()
+
 	// Register services
 	pb.RegisterSecretStoreProviderServer(grpcServer, adapterServer)
 	genpb.RegisterGeneratorProviderServer(grpcServer, adapterServer)
@@ -132,6 +146,7 @@ func main() {
 		signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
 		sig := <-sigChan
 		log.Printf("Received signal: %v, shutting down gracefully...", sig)
+		cancel()
 		grpcServer.GracefulStop()
 	}()
 

+ 15 - 0
providers/v2/fake/main.go

@@ -19,6 +19,7 @@ limitations under the License.
 package main
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"log"
@@ -103,6 +104,19 @@ func main() {
 		log.Fatalf("Failed to create gRPC server: %v", err)
 	}
 
+	ctx, cancel := context.WithCancel(context.Background())
+	defer cancel()
+
+	metricsServer := grpcserver.NewMetricsServer(grpcserver.DefaultMetricsPort, nil)
+	if err := grpcserver.RegisterMetrics(metricsServer.GetRegistry()); err != nil {
+		log.Fatalf("Failed to register provider metrics: %v", err)
+	}
+	go func() {
+		if err := metricsServer.Start(ctx); err != nil {
+			log.Fatalf("Failed to start provider metrics server: %v", err)
+		}
+	}()
+
 	// Register services
 	pb.RegisterSecretStoreProviderServer(grpcServer, adapterServer)
 	genpb.RegisterGeneratorProviderServer(grpcServer, adapterServer)
@@ -127,6 +141,7 @@ func main() {
 		signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
 		sig := <-sigChan
 		log.Printf("Received signal: %v, shutting down gracefully...", sig)
+		cancel()
 		grpcServer.GracefulStop()
 	}()
 

+ 43 - 0
providers/v2/hack/generate_provider_main_test.go

@@ -66,3 +66,46 @@ func TestMainTemplateUsesGeneratorMappingType(t *testing.T) {
 		t.Fatalf("main template did not render adaptergenerator.Mapping:\n%s", renderedText)
 	}
 }
+
+func TestMainTemplateStartsProviderMetricsServer(t *testing.T) {
+	tmpl, err := loadTemplate("templates/main.go.tmpl")
+	if err != nil {
+		t.Fatalf("load template: %v", err)
+	}
+
+	data := prepareTemplateData(&ProviderConfig{
+		Provider: providerMetadata{
+			Name:        "kubernetes",
+			DisplayName: "Kubernetes",
+			V2Package:   "github.com/external-secrets/external-secrets/apis/provider/kubernetes/v2alpha1",
+		},
+		Stores: []storeConfig{{
+			GVK: gvkConfig{
+				Group:   "provider.external-secrets.io",
+				Version: "v2alpha1",
+				Kind:    "Kubernetes",
+			},
+			V1Provider:     "github.com/external-secrets/external-secrets/providers/v1/kubernetes",
+			V1ProviderFunc: "NewProvider",
+		}},
+	})
+
+	rendered, err := executeTemplate(tmpl, data)
+	if err != nil {
+		t.Fatalf("execute template: %v", err)
+	}
+
+	renderedText := string(rendered)
+	if !strings.Contains(renderedText, "metricsServer := grpcserver.NewMetricsServer(") {
+		t.Fatalf("main template did not create provider metrics server:\n%s", renderedText)
+	}
+	if !strings.Contains(renderedText, "grpcserver.DefaultMetricsPort") {
+		t.Fatalf("main template did not use default provider metrics port:\n%s", renderedText)
+	}
+	if !strings.Contains(renderedText, "grpcserver.RegisterMetrics(metricsServer.GetRegistry())") {
+		t.Fatalf("main template did not register provider metrics:\n%s", renderedText)
+	}
+	if !strings.Contains(renderedText, "go func() {\n\t\tif err := metricsServer.Start(ctx); err != nil {") {
+		t.Fatalf("main template did not start provider metrics server:\n%s", renderedText)
+	}
+}

+ 14 - 0
providers/v2/hack/templates/main.go.tmpl

@@ -149,6 +149,19 @@ func main() {
 		log.Fatalf("Failed to create gRPC server: %v", err)
 	}
 
+	ctx, cancel := context.WithCancel(context.Background())
+	defer cancel()
+
+	metricsServer := grpcserver.NewMetricsServer(grpcserver.DefaultMetricsPort, nil)
+	if err := grpcserver.RegisterMetrics(metricsServer.GetRegistry()); err != nil {
+		log.Fatalf("Failed to register provider metrics: %v", err)
+	}
+	go func() {
+		if err := metricsServer.Start(ctx); err != nil {
+			log.Fatalf("Failed to start provider metrics server: %v", err)
+		}
+	}()
+
 	// Register services
 	{{- if .HasStores}}
 	pb.RegisterSecretStoreProviderServer(grpcServer, adapterServer)
@@ -177,6 +190,7 @@ func main() {
 		signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
 		sig := <-sigChan
 		log.Printf("Received signal: %v, shutting down gracefully...", sig)
+		cancel()
 		grpcServer.GracefulStop()
 	}()
 

+ 15 - 0
providers/v2/kubernetes/main.go

@@ -19,6 +19,7 @@ limitations under the License.
 package main
 
 import (
+	"context"
 	"flag"
 	"fmt"
 	"log"
@@ -89,6 +90,19 @@ func main() {
 		log.Fatalf("Failed to create gRPC server: %v", err)
 	}
 
+	ctx, cancel := context.WithCancel(context.Background())
+	defer cancel()
+
+	metricsServer := grpcserver.NewMetricsServer(grpcserver.DefaultMetricsPort, nil)
+	if err := grpcserver.RegisterMetrics(metricsServer.GetRegistry()); err != nil {
+		log.Fatalf("Failed to register provider metrics: %v", err)
+	}
+	go func() {
+		if err := metricsServer.Start(ctx); err != nil {
+			log.Fatalf("Failed to start provider metrics server: %v", err)
+		}
+	}()
+
 	// Register services
 	pb.RegisterSecretStoreProviderServer(grpcServer, adapterServer)
 
@@ -112,6 +126,7 @@ func main() {
 		signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
 		sig := <-sigChan
 		log.Printf("Received signal: %v, shutting down gracefully...", sig)
+		cancel()
 		grpcServer.GracefulStop()
 	}()