Merge pull request #78543 from cheftako/kas-np3

Get network-proxy working with GCE.
This commit is contained in:
Kubernetes Prow Robot
2019-08-07 14:44:44 -07:00
committed by GitHub
36 changed files with 1807 additions and 5 deletions

View File

@@ -16,6 +16,7 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/server:go_default_library",
"//staging/src/k8s.io/client-go/rest:go_default_library",
"//staging/src/k8s.io/client-go/transport:go_default_library",
],

View File

@@ -18,6 +18,7 @@ package client
import (
"context"
"fmt"
"net/http"
"strconv"
"time"
@@ -26,6 +27,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
utilnet "k8s.io/apimachinery/pkg/util/net"
"k8s.io/apiserver/pkg/server"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/transport"
nodeutil "k8s.io/kubernetes/pkg/util/node"
@@ -56,6 +58,9 @@ type KubeletClientConfig struct {
// Dial is a custom dialer used for the client
Dial utilnet.DialFunc
// Lookup will give us a dialer if the egress selector is configured for it
Lookup server.EgressSelectorLookup
}
// ConnectionInfo provides the information needed to connect to a kubelet
@@ -79,9 +84,20 @@ func MakeTransport(config *KubeletClientConfig) (http.RoundTripper, error) {
}
rt := http.DefaultTransport
if config.Dial != nil || tlsConfig != nil {
dialer := config.Dial
if dialer == nil && config.Lookup != nil {
// Assuming EgressSelector if SSHTunnel is not turned on.
// We will not get a dialer if egress selector is disabled.
networkContext := server.NetworkContext{EgressSelectionName: server.Cluster}
dialer, err = config.Lookup(networkContext)
if err != nil {
return nil, fmt.Errorf("failed to get context dialer for 'cluster': got %v", err)
}
}
if dialer != nil || tlsConfig != nil {
// If SSH Tunnel is turned on
rt = utilnet.SetOldTransportDefaults(&http.Transport{
DialContext: config.Dial,
DialContext: dialer,
TLSClientConfig: tlsConfig,
})
}