File tree Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -36,6 +36,7 @@ import (
36
36
"k8s.io/client-go/tools/portforward"
37
37
"k8s.io/client-go/transport/spdy"
38
38
"k8s.io/klog/v2"
39
+ "k8s.io/kubernetes/test/e2e/framework"
39
40
)
40
41
41
42
// NewTransport creates a transport which uses the port forward dialer.
@@ -91,6 +92,20 @@ func (d *Dialer) DialContainerPort(ctx context.Context, addr Addr) (conn net.Con
91
92
}
92
93
dialer := spdy .NewDialer (upgrader , & http.Client {Transport : transport }, "POST" , req .URL ())
93
94
95
+ tunnelingDialer , err := portforward .NewSPDYOverWebsocketDialer (req .URL (), restConfig )
96
+ if err != nil {
97
+ return nil , err
98
+ }
99
+ // First attempt tunneling (websocket) dialer, then fallback to spdy dialer.
100
+ dialer = portforward .NewFallbackDialer (tunnelingDialer , dialer , func (err error ) bool {
101
+ if httpstream .IsUpgradeFailure (err ) || httpstream .IsHTTPSProxyError (err ) {
102
+ framework .Logf ("fallback to secondary dialer from primary dialer err: %v" , err )
103
+ return true
104
+ }
105
+ framework .Logf ("unexpected error trying to use websockets for portforward: %v" , err )
106
+ return false
107
+ })
108
+
94
109
streamConn , _ , err := dialer .Dial (portforward .PortForwardProtocolV1Name )
95
110
if err != nil {
96
111
return nil , fmt .Errorf ("dialer failed: %w" , err )
You can’t perform that action at this time.
0 commit comments