package portforward
import "k8s.io/client-go/tools/portforward"
Package portforward adds support for SSH-like port forwarding from the client's local host to remote containers.
Index ¶
- Constants
- Variables
- func NewFallbackDialer(primary, secondary httpstream.Dialer, shouldFallback func(error) bool) httpstream.Dialer
- func NewSPDYOverWebsocketDialer(url *url.URL, config *restclient.Config) (httpstream.Dialer, error)
- type FallbackDialer
- type ForwardedPort
- type PortForwarder
- func New(dialer httpstream.Dialer, ports []string, stopChan <-chan struct{}, readyChan chan struct{}, out, errOut io.Writer) (*PortForwarder, error)
- func NewOnAddresses(dialer httpstream.Dialer, addresses []string, ports []string, stopChan <-chan struct{}, readyChan chan struct{}, out, errOut io.Writer) (*PortForwarder, error)
- func (pf *PortForwarder) Close()
- func (pf *PortForwarder) ForwardPorts() error
- func (pf *PortForwarder) GetPorts() ([]ForwardedPort, error)
- type TunnelingConnection
- func NewTunnelingConnection(name string, conn *gwebsocket.Conn) *TunnelingConnection
- func (c *TunnelingConnection) Close() error
- func (c *TunnelingConnection) LocalAddr() net.Addr
- func (c *TunnelingConnection) Read(p []byte) (int, error)
- func (c *TunnelingConnection) RemoteAddr() net.Addr
- func (c *TunnelingConnection) SetDeadline(t time.Time) error
- func (c *TunnelingConnection) SetReadDeadline(t time.Time) error
- func (c *TunnelingConnection) SetWriteDeadline(t time.Time) error
- func (c *TunnelingConnection) Write(p []byte) (n int, err error)
Constants ¶
const PortForwardProtocolV1Name = "portforward.k8s.io"
PortForwardProtocolV1Name is the subprotocol used for port forwarding. TODO move to API machinery and re-unify with kubelet/server/portfoward
Variables ¶
var ( // error returned whenever we lost connection to a pod ErrLostConnectionToPod = errors.New("lost connection to pod") )
Functions ¶
func NewFallbackDialer ¶
func NewFallbackDialer(primary, secondary httpstream.Dialer, shouldFallback func(error) bool) httpstream.Dialer
NewFallbackDialer creates the FallbackDialer with the primary and secondary dialers, as well as the boolean function to determine if the primary dialer failed.
func NewSPDYOverWebsocketDialer ¶
func NewSPDYOverWebsocketDialer(url *url.URL, config *restclient.Config) (httpstream.Dialer, error)
NewTunnelingDialer creates and returns the tunnelingDialer structure which implemements the "httpstream.Dialer" interface. The dialer can upgrade a websocket request, creating a websocket connection. This function returns an error if one occurs.
Types ¶
type FallbackDialer ¶
type FallbackDialer struct {
// contains filtered or unexported fields
}
FallbackDialer encapsulates a primary and secondary dialer, including the boolean function to determine if the primary dialer failed. Implements the httpstream.Dialer interface.
func (*FallbackDialer) Dial ¶
func (f *FallbackDialer) Dial(protocols ...string) (httpstream.Connection, string, error)
Dial is the single function necessary to implement the "httpstream.Dialer" interface. It takes the protocol version strings to request, returning an the upgraded httstream.Connection and the negotiated protocol version accepted. If the initial primary dialer fails, this function attempts the secondary dialer. Returns an error if one occurs.
type ForwardedPort ¶
ForwardedPort contains a Local:Remote port pairing.
type PortForwarder ¶
type PortForwarder struct { Ready chan struct{} // contains filtered or unexported fields }
PortForwarder knows how to listen for local connections and forward them to a remote pod via an upgraded HTTP request.
func New ¶
func New(dialer httpstream.Dialer, ports []string, stopChan <-chan struct{}, readyChan chan struct{}, out, errOut io.Writer) (*PortForwarder, error)
New creates a new PortForwarder with localhost listen addresses.
func NewOnAddresses ¶
func NewOnAddresses(dialer httpstream.Dialer, addresses []string, ports []string, stopChan <-chan struct{}, readyChan chan struct{}, out, errOut io.Writer) (*PortForwarder, error)
NewOnAddresses creates a new PortForwarder with custom listen addresses.
func (*PortForwarder) Close ¶
func (pf *PortForwarder) Close()
Close stops all listeners of PortForwarder.
func (*PortForwarder) ForwardPorts ¶
func (pf *PortForwarder) ForwardPorts() error
ForwardPorts formats and executes a port forwarding request. The connection will remain open until stopChan is closed.
func (*PortForwarder) GetPorts ¶
func (pf *PortForwarder) GetPorts() ([]ForwardedPort, error)
GetPorts will return the ports that were forwarded; this can be used to retrieve the locally-bound port in cases where the input was port 0. This function will signal an error if the Ready channel is nil or if the listeners are not ready yet; this function will succeed after the Ready channel has been closed.
type TunnelingConnection ¶
type TunnelingConnection struct {
// contains filtered or unexported fields
}
TunnelingConnection implements the "httpstream.Connection" interface, wrapping a websocket connection that tunnels SPDY.
func NewTunnelingConnection ¶
func NewTunnelingConnection(name string, conn *gwebsocket.Conn) *TunnelingConnection
NewTunnelingConnection wraps the passed gorilla/websockets connection with the TunnelingConnection struct (implementing net.Conn).
func (*TunnelingConnection) Close ¶
func (c *TunnelingConnection) Close() error
Close implements "io.Closer" interface, signaling the other tunneled connection endpoint, and closing the tunneled connection only once.
func (*TunnelingConnection) LocalAddr ¶
func (c *TunnelingConnection) LocalAddr() net.Addr
LocalAddr implements part of the "net.Conn" interface, returning the local endpoint network address of the tunneled connection.
func (*TunnelingConnection) Read ¶
func (c *TunnelingConnection) Read(p []byte) (int, error)
Read implements "io.Reader" interface, reading from the stored connection into the passed buffer "p". Returns the number of bytes read and an error. Can keep track of the "inProgress" messsage from the tunneled connection.
func (*TunnelingConnection) RemoteAddr ¶
func (c *TunnelingConnection) RemoteAddr() net.Addr
LocalAddr implements part of the "net.Conn" interface, returning the remote endpoint network address of the tunneled connection.
func (*TunnelingConnection) SetDeadline ¶
func (c *TunnelingConnection) SetDeadline(t time.Time) error
SetDeadline sets the *absolute* time in the future for both read and write deadlines. Returns an error if one occurs.
func (*TunnelingConnection) SetReadDeadline ¶
func (c *TunnelingConnection) SetReadDeadline(t time.Time) error
SetDeadline sets the *absolute* time in the future for the read deadlines. Returns an error if one occurs.
func (*TunnelingConnection) SetWriteDeadline ¶
func (c *TunnelingConnection) SetWriteDeadline(t time.Time) error
SetDeadline sets the *absolute* time in the future for the write deadlines. Returns an error if one occurs.
func (*TunnelingConnection) Write ¶
func (c *TunnelingConnection) Write(p []byte) (n int, err error)
Write implements "io.Writer" interface, copying the data in the passed byte array "p" into the stored tunneled connection. Returns the number of bytes written and an error.
Source Files ¶
doc.go fallback_dialer.go portforward.go tunneling_connection.go tunneling_dialer.go
- Version
- v0.33.0 (latest)
- Published
- Apr 23, 2025
- Platform
- linux/amd64
- Imports
- 21 packages
- Last checked
- 6 hours ago –
Tools for package owners.