trace proxie middlewares (#6313)
* trace proxie middlewares Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de> * Update ocis-pkg/service/grpc/client.go Co-authored-by: Christian Richter <1058116+dragonchaser@users.noreply.github.com> * default tls is off Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de> --------- Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de> Co-authored-by: Christian Richter <1058116+dragonchaser@users.noreply.github.com>
This commit is contained in:
co-authored by
Christian Richter
parent
12dff34442
commit
632b206675
@@ -10,7 +10,7 @@ import (
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/middleware"
|
||||
graphMiddleware "github.com/owncloud/ocis/v2/services/graph/pkg/middleware"
|
||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
"go.opencensus.io/zpages"
|
||||
"go.opentelemetry.io/contrib/zpages"
|
||||
)
|
||||
|
||||
// NewService initializes a new debug service.
|
||||
@@ -42,7 +42,8 @@ func NewService(opts ...Option) *http.Server {
|
||||
}
|
||||
|
||||
if dopts.Zpages {
|
||||
zpages.Handle(mux, "/debug")
|
||||
h := zpages.NewTracezHandler(zpages.NewSpanProcessor())
|
||||
mux.Handle("/debug", h)
|
||||
}
|
||||
|
||||
return &http.Server{
|
||||
|
||||
@@ -9,9 +9,11 @@ import (
|
||||
|
||||
mgrpcc "github.com/go-micro/plugins/v4/client/grpc"
|
||||
mbreaker "github.com/go-micro/plugins/v4/wrapper/breaker/gobreaker"
|
||||
mtracer "github.com/go-micro/plugins/v4/wrapper/trace/opentelemetry"
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/registry"
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/shared"
|
||||
"go-micro.dev/v4/client"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -23,6 +25,7 @@ var (
|
||||
type ClientOptions struct {
|
||||
tlsMode string
|
||||
caCert string
|
||||
tp trace.TracerProvider
|
||||
}
|
||||
|
||||
// Option is used to pass client options
|
||||
@@ -42,13 +45,19 @@ func WithTLSCACert(v string) ClientOption {
|
||||
}
|
||||
}
|
||||
|
||||
// WithTraceProvider allows to set the trace Provider for grpc clients
|
||||
func WithTraceProvider(tp trace.TracerProvider) ClientOption {
|
||||
return func(o *ClientOptions) {
|
||||
o.tp = tp
|
||||
}
|
||||
}
|
||||
|
||||
// Configure configures the default oOCIS grpc client (e.g. TLS settings)
|
||||
func Configure(opts ...ClientOption) error {
|
||||
var options ClientOptions
|
||||
for _, opt := range opts {
|
||||
opt(&options)
|
||||
}
|
||||
|
||||
var outerr error
|
||||
once.Do(func() {
|
||||
reg := registry.GetRegistry()
|
||||
@@ -56,6 +65,9 @@ func Configure(opts ...ClientOption) error {
|
||||
cOpts := []client.Option{
|
||||
client.Registry(reg),
|
||||
client.Wrap(mbreaker.NewClientWrapper()),
|
||||
client.Wrap(mtracer.NewClientWrapper(
|
||||
mtracer.WithTraceProvider(options.tp),
|
||||
)),
|
||||
}
|
||||
switch options.tlsMode {
|
||||
case "insecure":
|
||||
@@ -74,12 +86,14 @@ func Configure(opts ...ClientOption) error {
|
||||
return
|
||||
}
|
||||
if !certs.AppendCertsFromPEM(pemData) {
|
||||
outerr = errors.New("Error initializing LDAP Backend. Adding CA cert failed")
|
||||
outerr = errors.New("could not initialize default client, adding CA cert failed")
|
||||
return
|
||||
}
|
||||
tlsConfig.RootCAs = certs
|
||||
}
|
||||
cOpts = append(cOpts, mgrpcc.AuthTLS(tlsConfig))
|
||||
//case "off":
|
||||
//default:
|
||||
}
|
||||
|
||||
defaultClient = mgrpcc.NewClient(cOpts...)
|
||||
@@ -99,3 +113,46 @@ func GetClientOptions(t *shared.GRPCClientTLS) []ClientOption {
|
||||
}
|
||||
return opts
|
||||
}
|
||||
|
||||
func NewClient(opts ...ClientOption) (client.Client, error) {
|
||||
var options ClientOptions
|
||||
for _, opt := range opts {
|
||||
opt(&options)
|
||||
}
|
||||
|
||||
reg := registry.GetRegistry()
|
||||
var tlsConfig *tls.Config
|
||||
cOpts := []client.Option{
|
||||
client.Registry(reg),
|
||||
client.Wrap(mbreaker.NewClientWrapper()),
|
||||
client.Wrap(mtracer.NewClientWrapper(
|
||||
mtracer.WithTraceProvider(options.tp),
|
||||
)),
|
||||
}
|
||||
switch options.tlsMode {
|
||||
case "insecure":
|
||||
tlsConfig = &tls.Config{
|
||||
InsecureSkipVerify: true,
|
||||
}
|
||||
cOpts = append(cOpts, mgrpcc.AuthTLS(tlsConfig))
|
||||
case "on":
|
||||
tlsConfig = &tls.Config{}
|
||||
// Note: If caCert is empty we use the system's default set of trusted CAs
|
||||
if options.caCert != "" {
|
||||
certs := x509.NewCertPool()
|
||||
pemData, err := os.ReadFile(options.caCert)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !certs.AppendCertsFromPEM(pemData) {
|
||||
return nil, errors.New("could not initialize client, adding CA cert failed")
|
||||
}
|
||||
tlsConfig.RootCAs = certs
|
||||
}
|
||||
cOpts = append(cOpts, mgrpcc.AuthTLS(tlsConfig))
|
||||
//case "off":
|
||||
//default:
|
||||
}
|
||||
|
||||
return mgrpcc.NewClient(cOpts...), nil
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
|
||||
mgrpcs "github.com/go-micro/plugins/v4/server/grpc"
|
||||
"github.com/go-micro/plugins/v4/wrapper/monitoring/prometheus"
|
||||
"github.com/go-micro/plugins/v4/wrapper/trace/opencensus"
|
||||
mtracer "github.com/go-micro/plugins/v4/wrapper/trace/opentelemetry"
|
||||
ociscrypto "github.com/owncloud/ocis/v2/ocis-pkg/crypto"
|
||||
"github.com/owncloud/ocis/v2/ocis-pkg/registry"
|
||||
"go-micro.dev/v4"
|
||||
@@ -62,9 +62,9 @@ func NewService(opts ...Option) (Service, error) {
|
||||
micro.RegisterTTL(time.Second * 30),
|
||||
micro.RegisterInterval(time.Second * 10),
|
||||
micro.WrapHandler(prometheus.NewHandlerWrapper()),
|
||||
micro.WrapClient(opencensus.NewClientWrapper()),
|
||||
micro.WrapHandler(opencensus.NewHandlerWrapper()),
|
||||
micro.WrapSubscriber(opencensus.NewSubscriberWrapper()),
|
||||
micro.WrapClient(mtracer.NewClientWrapper()),
|
||||
micro.WrapHandler(mtracer.NewHandlerWrapper()),
|
||||
micro.WrapSubscriber(mtracer.NewSubscriberWrapper()),
|
||||
}
|
||||
|
||||
return Service{micro.NewService(mopts...)}, nil
|
||||
|
||||
Reference in New Issue
Block a user