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 }
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.