Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Options ¶
type Options struct {
// CAFile or CABytes specifies the CA bundle that should be used to verify
// connections to the Konnectivity server. One or the other can be specified,
// not both. REQUIRED.
CAFile string
CABytes []byte
// ClientCertFile or ClientCertBytes specifies the client certificate to be used
// to authenticate to the Konnectivity server (via mTLS). One or the other can
// be specified, not both. REQUIRED.
ClientCertFile string
ClientCertBytes []byte
// ClientKeyFile or ClientKeyBytes specifies the client key to be used to
// authenticate to the Konnectivity server (via mTLS). One or the other can be
// specified, not both. REQUIRED.
ClientKeyFile string
ClientKeyBytes []byte
// KonnectivityHost is the host name of the Konnectivity server proxy. REQUIRED.
KonnectivityHost string
// KonnectivityPort is the port of the Konnectivity server proxy. REQUIRED.
KonnectivityPort uint32
// ConnectDirectlyToCloudAPIs specifies whether cloud APIs should be bypassed
// by the proxy. This is used by the ingress operator to be able to create DNS records
// before worker nodes are present in the cluster.
// See https://github.com/openshift/hypershift/pull/1601
ConnectDirectlyToCloudAPIs bool
// ExcludeCloudAPIHosts is a list of hostnames to exclude when determining if a particular
// hostname is a CloudAPI hostname.
// This is needed in the case when we use an internal proxy whose hostname ends in
// one of the cloud API suffixes we check. We should not need to use the management cluster
// proxy to get to the endpoint.
ExcludeCloudAPIHosts []string
// ResolveFromManagementClusterDNS tells the dialer to fallback to the management
// cluster's DNS (and direct dialer) initially until the konnectivity tunnel is available.
// Once the konnectivity tunnel is available, it no longer falls back on the management
// cluster. This is used by the OAuth server to allow quicker initialization of identity
// providers while worker nodes have not joined.
// See https://github.com/openshift/hypershift/pull/2261
ResolveFromManagementClusterDNS bool
// ResolveFromGuestClusterDNS tells the dialer to resolve names using the guest
// cluster's coreDNS service. Used by oauth and ingress operator.
ResolveFromGuestClusterDNS bool
// ResolveBeforeDial tells the dialer to resolve names before creating a TCP connection
// through the Konnectivity server. This is needed by the HTTPS konnectivity proxy since the
// hostname to be proxied needs to be resolved before being sent to the user's proxy.
ResolveBeforeDial bool
// DisableResolver disables any name resolution by the resolver. This is used by the CNO.
// See https://github.com/openshift/hypershift/pull/3986
DisableResolver bool
// Client for the hosted cluster. This is used by the resolver to resolve names either via
// service name or via coredns. REQUIRED (unless DisableResolver is specified)
Client client.Client
// Log is the logger to use for the dialer. No log output is generated if not specified.
Log logr.Logger
}
Options specifies the inputs for creating a Konnectivity dialer.
type ProxyDialer ¶
type ProxyDialer interface {
proxy.ContextDialer
proxy.Dialer
socks5.NameResolver
IsCloudAPI(string) bool
}
The ProxyDialer is the dialer used to connect via a Konnectivity proxy It implements the ContextDialer and Dialer interfaces as well as a the socks5.NameResolver interface to look up names through the konnectivity tunnel if necessary.
func NewKonnectivityDialer ¶
func NewKonnectivityDialer(opts Options) (ProxyDialer, error)
NewKonnectivityDialer creates a dialer that uses a konnectivity server as a tunnel to obtain a TCP connection to the target address. The dialer also includes a resolver that optionally uses the same konnectivity server to resolve names via the CoreDNS service in a hosted cluster.
Click to show internal directories.
Click to hide internal directories.