Skip to content

Commit ae99172

Browse files
committed
e2e uses websockets by default for portforward
1 parent 071b1bd commit ae99172

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

test/e2e/framework/pod/dial.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import (
3636
"k8s.io/client-go/tools/portforward"
3737
"k8s.io/client-go/transport/spdy"
3838
"k8s.io/klog/v2"
39+
"k8s.io/kubernetes/test/e2e/framework"
3940
)
4041

4142
// 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
9192
}
9293
dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, "POST", req.URL())
9394

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+
94109
streamConn, _, err := dialer.Dial(portforward.PortForwardProtocolV1Name)
95110
if err != nil {
96111
return nil, fmt.Errorf("dialer failed: %w", err)

0 commit comments

Comments
 (0)