From 9323feb8b626ac3c90123a990236e0ed8ef945d3 Mon Sep 17 00:00:00 2001 From: Manatsawin Hanmongkolchai Date: Fri, 8 Mar 2024 14:54:37 +0700 Subject: [PATCH] Use otelhttp for Kubernetes client --- go.mod | 2 +- main.go | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index e7c3d26..7d597c4 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/golang/protobuf v1.5.4 github.com/prometheus/client_golang v1.19.0 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 go.opentelemetry.io/otel v1.24.0 go.opentelemetry.io/otel/exporters/prometheus v0.46.0 go.opentelemetry.io/otel/metric v1.24.0 @@ -53,7 +54,6 @@ require ( github.com/prometheus/common v0.50.0 // indirect github.com/prometheus/procfs v0.13.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel/sdk v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect golang.org/x/net v0.22.0 // indirect diff --git a/main.go b/main.go index 1d13023..8b416e8 100644 --- a/main.go +++ b/main.go @@ -3,7 +3,6 @@ package main import ( "context" "flag" - "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "net" "net/http" "os" @@ -22,11 +21,13 @@ import ( "github.com/wongnai/xds/report" "github.com/wongnai/xds/snapshot" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "google.golang.org/grpc" "google.golang.org/grpc/health" "google.golang.org/grpc/health/grpc_health_v1" "k8s.io/client-go/kubernetes" _ "k8s.io/client-go/plugin/pkg/client/auth/oidc" + "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" "k8s.io/klog/v2" ) @@ -40,17 +41,23 @@ func main() { meter.InstallPromExporter() - httpClient := http.Client{ - Transport: otelhttp.NewTransport(http.DefaultTransport), - } - stopCtx, stop := context.WithCancel(context.Background()) clientConfig, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(clientcmd.NewDefaultClientConfigLoadingRules(), nil).ClientConfig() if err != nil { klog.Fatal("Fail to create Kubernetes client config", err) } - k8sClient, err := kubernetes.NewForConfigAndClient(clientConfig, &httpClient) + + httpTransport, err := rest.TransportFor(clientConfig) + if err != nil { + klog.Fatal("Fail to create HTTP client", err) + } + httpClient := &http.Client{ + Transport: otelhttp.NewTransport(httpTransport), + Timeout: clientConfig.Timeout, + } + + k8sClient, err := kubernetes.NewForConfigAndClient(clientConfig, httpClient) if err != nil { klog.Fatal("Fail to create Kubernetes client", err) }