Documentation
¶
Index ¶
- func SupportsFUSE() error
- func UnixAddress(dir, inst string) string
- type Client
- func (c *Client) CheckConnections(ctx context.Context) (int, error)
- func (c *Client) Close() error
- func (c *Client) ConnCount() (uint64, uint64)
- func (c *Client) Lookup(_ context.Context, instance string, _ *fuse.EntryOut) (*fs.Inode, syscall.Errno)
- func (c *Client) Readdir(_ context.Context) (fs.DirStream, syscall.Errno)
- func (c *Client) Serve(ctx context.Context, notify func()) error
- type Config
- type InstanceConnConfig
- type MultiErr
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 ¶
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, connRefuseNotify func()) (*Client, error)
NewClient completes the initial setup required to get the proxy to a "steady" state.
func (*Client) CheckConnections ¶
CheckConnections dials each registered instance and reports the number of connections checked and any errors that may have occurred.
func (*Client) ConnCount ¶
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(_ 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.
type Config ¶
type Config struct {
// Filepath is the path to a configuration file.
Filepath string
// 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
// LoginToken is the Bearer token used for Auto IAM AuthN. Used only in
// conjunction with Token.
LoginToken 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 Admin API. When left blank,
// the proxy will use the main public api: https://sqladmin.googleapis.com/
APIEndpointURL string
// UniverseDomain is the universe domain for the TPC environment. When left
// blank, the proxy will use the Google Default Universe (GDU): googleapis.com
UniverseDomain 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.
// MySQL and 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
// WaitBeforeClose sets the duration to wait after receiving a shutdown signal
// but before closing the process. Not setting this field means to initiate
// the shutdown process immediately.
WaitBeforeClose time.Duration
// 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
// PSC enables connections via the database server's private service connect
// endpoint for all instances
PSC bool
// AutoIP supports a legacy behavior where the Proxy will connect to
// the first IP address returned from the SQL ADmin API response. This
// setting should be avoided and used only to support legacy Proxy
// users.
AutoIP bool
// LazyRefresh configures the Go Connector to retrieve connection info
// lazily and as-needed. Otherwise, no background refresh cycle runs. This
// setting is useful in environments where the CPU may be throttled outside
// of a request context, e.g., Cloud Run.
LazyRefresh 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
// ImpersonationChain is a comma separated list of one or more service
// accounts. The first entry in the chain is the impersonation target. Any
// additional service accounts after the target are delegates. The
// roles/iam.serviceAccountTokenCreator must be configured for each account
// that will be impersonated.
ImpersonationChain 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
// Quiet controls whether only error messages are logged.
Quiet bool
// TelemetryProject enables sending metrics and traces to the specified project.
TelemetryProject string
// TelemetryPrefix sets a prefix for all emitted metrics.
TelemetryPrefix string
// TelemetryTracingSampleRate sets the rate at which traces are
// samples. A higher value means fewer traces.
TelemetryTracingSampleRate int
// ExitZeroOnSigterm exits with 0 exit code when Sigterm received
ExitZeroOnSigterm bool
// DisableTraces disables tracing when TelemetryProject is set.
DisableTraces bool
// DisableMetrics disables metrics when TelemetryProject is set.
DisableMetrics bool
// Prometheus enables a Prometheus endpoint served at the address and
// port specified by HTTPAddress and HTTPPort.
Prometheus bool
// PrometheusNamespace configures the namespace under which metrics are written.
PrometheusNamespace string
// HealthCheck enables a health check server. It's address and port are
// specified by HTTPAddress and HTTPPort.
HealthCheck bool
// HTTPAddress sets the address for the health check and prometheus server.
HTTPAddress string
// HTTPPort sets the port for the health check and prometheus server.
HTTPPort string
// AdminPort configures the port for the localhost-only admin server.
AdminPort string
// Debug enables a debug handler on localhost.
Debug bool
// QuitQuitQuit enables a handler that will shut the Proxy down upon
// receiving a GET or POST request.
QuitQuitQuit bool
// DebugLogs enables debug level logging.
DebugLogs bool
// OtherUserAgents is a list of space separate user agents that will be
// appended to the default user agent.
OtherUserAgents string
// RunConnectionTest determines whether the Proxy should attempt a connection
// to all specified instances to verify the network path is valid.
RunConnectionTest bool
// SkipFailedInstanceConfig determines whether the Proxy should skip failed
// connections to Cloud SQL instances instead of exiting on startup.
// This only applies to Unix sockets.
SkipFailedInstanceConfig bool
}
Config contains all the configuration provided by the caller.
func (*Config) DialerOptions ¶
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. The full path to the socket will be
// UnixSocket + os.PathSeparator + Name. If set, takes precedence over Addr
// and Port.
UnixSocket string
// UnixSocketPath is the path where a Unix socket will be created,
// connected to the Cloud SQL instance. The full path to the socket will be
// UnixSocketPath. If this is a Postgres database, the proxy will ensure that
// the last path element is `.s.PGSQL.5432`, appending this path element if
// necessary. If set, UnixSocketPath takes precedence over UnixSocket, Addr
// and Port.
UnixSocketPath string
// IAMAuthN enables automatic IAM DB Authentication for the instance.
// MySQL and 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
// PSC tells the proxy to attempt to connect to the db instance's
// private service connect endpoint
PSC *bool
}
InstanceConnConfig holds the configuration for an individual instance connection.