Documentation
¶
Index ¶
- func ParseInstanceURI(inst string) (string, string, string, string, error)
- func ShortInstURI(inst string) (string, error)
- func SupportsFUSE() error
- func UnixAddress(dir, inst string) string
- func UnixSocketDir(dir, inst string) (string, error)
- 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 ParseInstanceURI ¶ added in v1.1.0
ParseInstanceURI validates the instance uri is in the proper format and returns the project, region, cluster, and instance name.
func ShortInstURI ¶ added in v1.1.0
ShortInstURI shortens the instance URI into project.region.cluster.instance.
func SupportsFUSE ¶ added in v0.6.0
func SupportsFUSE() error
SupportsFUSE checks if the fusermount binary is present in the PATH or a well known location.
func UnixAddress ¶ added in v0.6.0
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.
func UnixSocketDir ¶ added in v0.3.0
UnixSocketDir returns a shorted instance connection name to prevent exceeding the Unix socket length, e.g., project.region.cluster.instance
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 AlloyDB instances.
func NewClient ¶
func NewClient(ctx context.Context, d alloydb.Dialer, l alloydb.Logger, conf *Config) (*Client, error)
NewClient completes the initial setup required to get the proxy to a "steady" state.
func (*Client) CheckConnections ¶ added in v0.5.0
CheckConnections dials each registered instance and reports the number of connections checked and any errors that may have occurred.
func (*Client) Close ¶
Close stops the dialer, closes any open FUSE mounts and any open listeners, and optionally waits for all connections to close before exiting.
func (*Client) ConnCount ¶ added in v0.5.0
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 ¶ added in v0.6.0
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 sending requests to the Admin
// API.
UserAgent string
// AutoIAMAuthN enables automatic IAM authentication which results in the
// Proxy sending the IAM principal's OAuth2 token to the backend to enable
// a passwordless login for callers.
AutoIAMAuthN bool
// PublicIP enables connections via the database server's public IP address
// for all instances.
PublicIP bool
// PSC enables connections via the PSC endpoint for all instances.
PSC 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
// 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
// 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
// APIEndpointURL is the URL of the AlloyDB Admin API.
APIEndpointURL string
// Instances are configuration for individual instances. Instance
// configuration takes precedence over global configuration.
Instances []InstanceConnConfig
// MaxConnections are the maximum number of connections the Client may
// establish to the AlloyDB 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
// 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
// DebugLogs enables debug logging and is useful when diagnosing surprising
// Proxy behavior.
DebugLogs 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
// 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 underwhich 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 POST request.
QuitQuitQuit 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
// StaticConnectionInfo is the file path for a static connection info JSON
// file. See the proxy help message for details on its format.
StaticConnectionInfo string
// ExitZeroOnSigterm exits with 0 exit code when Sigterm received
ExitZeroOnSigterm bool
// DisableBuiltInTelemetry disables the internal metric export. By
// default, the Dialer will report on its internal operations to the
// alloydb.googleapis.com system metric prefix. These metrics help AlloyDB
// improve performance and identify client connectivity problems. Presently,
// these metrics aren't public, but will be made public in the future.
DisableBuiltInTelemetry bool
}
Config contains all the configuration provided by the caller.
func (*Config) DialerOptions ¶ added in v0.4.0
DialerOptions builds appropriate list of options from the Config values for use by alloydbconn.NewClient()
type InstanceConnConfig ¶
type InstanceConnConfig struct {
// Name is the instance URI.
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 AlloyDB instance. 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. Because this is a Postgres database, the proxy will ensure
// 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
// AutoIAMAuthN enables automatic IAM authentication on the instance only.
// See Config.AutoIAMAuthN for more details.
AutoIAMAuthN *bool
// PublicIP tells the proxy to attempt to connect to the db instance's
// public IP address instead of the private IP address
PublicIP *bool
// PSC enables the Proxy to connect to the instance's PSC endpoint.
PSC *bool
}
InstanceConnConfig holds the configuration for an individual instance connection.