proxy

package
v2.0.0-preview.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2022 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SupportsFUSE

func SupportsFUSE() error

SupportsFUSE checks if the fusermount binary is present in the PATH or a well known location.

func UnixAddress

func UnixAddress(dir, inst string) string

UnixAddress is defined as a function to distinguish between Unix-based implementations where the dir and inst are simply joined, and Windows-based implementations where the inst must be further altered.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client proxies connections from a local client to the remote server side proxy for multiple Cloud SQL instances.

func NewClient

func NewClient(ctx context.Context, d cloudsql.Dialer, l cloudsql.Logger, conf *Config) (*Client, error)

NewClient completes the initial setup required to get the proxy to a "steady" state.

func (*Client) CheckConnections

func (c *Client) CheckConnections(ctx context.Context) error

CheckConnections dials each registered instance and reports any errors that may have occurred.

func (*Client) Close

func (c *Client) Close() error

Close triggers the proxyClient to shutdown.

func (*Client) ConnCount

func (c *Client) ConnCount() (uint64, uint64)

ConnCount returns the number of open connections and the maximum allowed connections. Returns 0 when the maximum allowed connections have not been set.

func (*Client) Lookup

func (c *Client) Lookup(ctx context.Context, instance string, _ *fuse.EntryOut) (*fs.Inode, syscall.Errno)

Lookup implements the fs.NodeLookuper interface and returns an index node (inode) for a symlink that points to a Unix domain socket. The Unix domain socket is connected to the requested Cloud SQL instance. Lookup returns a symlink (instead of the socket itself) so that multiple callers all use the same Unix socket.

func (*Client) Readdir

func (c *Client) Readdir(_ context.Context) (fs.DirStream, syscall.Errno)

Readdir returns a list of all active Unix sockets in addition to the README.

func (*Client) Serve

func (c *Client) Serve(ctx context.Context, notify func()) error

Serve starts proxying connections for all configured instances using the associated socket.

type Config

type Config struct {
	// UserAgent is the user agent to use when connecting to the cloudsql instance
	UserAgent string

	// Token is the Bearer token used for authorization.
	Token string

	// CredentialsFile is the path to a service account key.
	CredentialsFile string

	// CredentialsJSON is a JSON representation of the service account key.
	CredentialsJSON string

	// GcloudAuth set whether to use Gcloud's config helper to retrieve a
	// token for authentication.
	GcloudAuth bool

	// Addr is the address on which to bind all instances.
	Addr string

	// Port is the initial port to bind to. Subsequent instances bind to
	// increments from this value.
	Port int

	// APIEndpointURL is the URL of the google cloud sql api. When left blank,
	// the proxy will use the main public api: https://sqladmin.googleapis.com/
	APIEndpointURL string

	// UnixSocket is the directory where Unix sockets will be created,
	// connected to any Instances. If set, takes precedence over Addr and Port.
	UnixSocket string

	// FUSEDir enables a file system in user space at the provided path that
	// connects to the requested instance only when a client requests it.
	FUSEDir string

	// FUSETempDir sets the temporary directory where the FUSE mount will place
	// Unix domain sockets connected to Cloud SQL instances. The temp directory
	// is not accessed directly.
	FUSETempDir string

	// IAMAuthN enables automatic IAM DB Authentication for all instances.
	// Postgres-only.
	IAMAuthN bool

	// MaxConnections are the maximum number of connections the Client may
	// establish to the Cloud SQL server side proxy before refusing additional
	// connections. A zero-value indicates no limit.
	MaxConnections uint64

	// WaitOnClose sets the duration to wait for connections to close before
	// shutting down. Not setting this field means to close immediately
	// regardless of any open connections.
	WaitOnClose time.Duration

	// PrivateIP enables connections via the database server's private IP address
	// for all instances.
	PrivateIP bool

	// Instances are configuration for individual instances. Instance
	// configuration takes precedence over global configuration.
	Instances []InstanceConnConfig

	// QuotaProject is the ID of the Google Cloud project to use to track
	// API request quotas.
	QuotaProject string

	// ImpersonateTarget is the service account to impersonate. The IAM
	// principal doing the impersonation must have the
	// roles/iam.serviceAccountTokenCreator role.
	ImpersonateTarget string
	// ImpersonateDelegates are the intermediate service accounts through which
	// the impersonation is achieved. Each delegate must have the
	// roles/iam.serviceAccountTokenCreator role.
	ImpersonateDelegates []string

	// StructuredLogs sets all output to use JSON in the LogEntry format.
	// See https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry
	StructuredLogs bool

	// Dialer specifies the dialer to use when connecting to Cloud SQL
	// instances.
	Dialer cloudsql.Dialer
}

Config contains all the configuration provided by the caller.

func (*Config) DialerOptions

func (c *Config) DialerOptions(l cloudsql.Logger) ([]cloudsqlconn.Option, error)

DialerOptions builds appropriate list of options from the Config values for use by cloudsqlconn.NewClient()

type InstanceConnConfig

type InstanceConnConfig struct {
	// Name is the instance connection name.
	Name string
	// Addr is the address on which to bind a listener for the instance.
	Addr string
	// Port is the port on which to bind a listener for the instance.
	Port int
	// UnixSocket is the directory where a Unix socket will be created,
	// connected to the Cloud SQL instance. If set, takes precedence over Addr
	// and Port.
	UnixSocket string
	// IAMAuthN enables automatic IAM DB Authentication for the instance.
	// Postgres-only. If it is nil, the value was not specified.
	IAMAuthN *bool

	// PrivateIP tells the proxy to attempt to connect to the db instance's
	// private IP address instead of the public IP address
	PrivateIP *bool
}

InstanceConnConfig holds the configuration for an individual instance connection.

type MultiErr

type MultiErr []error

MultiErr is a group of errors wrapped into one.

func (MultiErr) Error

func (m MultiErr) Error() string

Error returns a single string representing one or more errors.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL