Sfoglia il codice sorgente

Update GKE Metadata HTTP Client to use the same default HTTP client as the GKE API

Signed-off-by: Matt Bolt <mbolt35@gmail.com>
Matt Bolt 3 anni fa
parent
commit
c5048046bf
2 ha cambiato i file con 22 aggiunte e 10 eliminazioni
  1. 14 5
      pkg/cloud/provider.go
  2. 8 5
      pkg/util/httputil/roundtrip.go

+ 14 - 5
pkg/cloud/provider.go

@@ -4,9 +4,8 @@ import (
 	"database/sql"
 	"database/sql"
 	"errors"
 	"errors"
 	"fmt"
 	"fmt"
-	"golang.org/x/text/cases"
-	"golang.org/x/text/language"
 	"io"
 	"io"
+	"net"
 	"net/http"
 	"net/http"
 	"regexp"
 	"regexp"
 	"strconv"
 	"strconv"
@@ -14,6 +13,9 @@ import (
 	"sync"
 	"sync"
 	"time"
 	"time"
 
 
+	"golang.org/x/text/cases"
+	"golang.org/x/text/language"
+
 	"github.com/opencost/opencost/pkg/kubecost"
 	"github.com/opencost/opencost/pkg/kubecost"
 
 
 	"github.com/opencost/opencost/pkg/util"
 	"github.com/opencost/opencost/pkg/util"
@@ -506,9 +508,16 @@ func NewProvider(cache clustercache.ClusterCache, apiKey string, config *config.
 			clusterRegion:    cp.region,
 			clusterRegion:    cp.region,
 			clusterAccountID: cp.accountID,
 			clusterAccountID: cp.accountID,
 			clusterProjectID: cp.projectID,
 			clusterProjectID: cp.projectID,
-			metadataClient: metadata.NewClient(&http.Client{
-				Transport: httputil.NewUserAgentTransport("kubecost", http.DefaultTransport),
-			}),
+			metadataClient: metadata.NewClient(
+				&http.Client{
+					Transport: httputil.NewUserAgentTransport("kubecost", &http.Transport{
+						Dial: (&net.Dialer{
+							Timeout:   2 * time.Second,
+							KeepAlive: 30 * time.Second,
+						}).Dial,
+					}),
+					Timeout: 5 * time.Second,
+				}),
 		}, nil
 		}, nil
 	case kubecost.AWSProvider:
 	case kubecost.AWSProvider:
 		log.Info("Found ProviderID starting with \"aws\", using AWS Provider")
 		log.Info("Found ProviderID starting with \"aws\", using AWS Provider")

+ 8 - 5
pkg/util/httputil/roundtrip.go

@@ -1,17 +1,20 @@
 package httputil
 package httputil
 
 
-import "net/http"
+import (
+	"net/http"
+)
 
 
 type userAgentTransport struct {
 type userAgentTransport struct {
+	http.RoundTripper
+
 	userAgent string
 	userAgent string
-	base      http.RoundTripper
 }
 }
 
 
 // NewUserAgentTransport creates a RoundTripper that attaches the configured user agent.
 // NewUserAgentTransport creates a RoundTripper that attaches the configured user agent.
 func NewUserAgentTransport(userAgent string, base http.RoundTripper) http.RoundTripper {
 func NewUserAgentTransport(userAgent string, base http.RoundTripper) http.RoundTripper {
 	return &userAgentTransport{
 	return &userAgentTransport{
-		userAgent: userAgent,
-		base:      base,
+		RoundTripper: base,
+		userAgent:    userAgent,
 	}
 	}
 }
 }
 
 
@@ -27,5 +30,5 @@ func (t userAgentTransport) RoundTrip(r *http.Request) (*http.Response, error) {
 	}
 	}
 	r2.Header.Set("User-Agent", t.userAgent)
 	r2.Header.Set("User-Agent", t.userAgent)
 	r = r2
 	r = r2
-	return t.base.RoundTrip(r)
+	return t.RoundTripper.RoundTrip(r)
 }
 }