Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cluster ¶
type Cluster struct { // Name of ClickHouse cluster Name string `yaml:"name"` // Scheme: `http` or `https`; would be applied to all nodes // default value is `http` Scheme string `yaml:"scheme,omitempty"` // Nodes - list of nodes addresses Nodes []string `yaml:"nodes"` // ClusterUsers - list of ClickHouse users ClusterUsers []ClusterUser `yaml:"users"` // KillQueryUser - user configuration for killing // queries which has exceeded limits // if not specified - killing queries will be omitted KillQueryUser KillQueryUser `yaml:"kill_query_user,omitempty"` // Catches all undefined fields XXX map[string]interface{} `yaml:",inline"` }
Cluster describes CH cluster configuration The simplest configuration consists of:
cluster description - see <remote_servers> section in CH config.xml and users - see <users> section in CH users.xml
func (*Cluster) UnmarshalYAML ¶
UnmarshalYAML implements the yaml.Unmarshaler interface.
type ClusterUser ¶
type ClusterUser struct { // User name in ClickHouse users.xml config Name string `yaml:"name"` // User password in ClickHouse users.xml config Password string `yaml:"password,omitempty"` // Maximum number of concurrently running queries for user // if omitted or zero - no limits would be applied MaxConcurrentQueries uint32 `yaml:"max_concurrent_queries,omitempty"` // Maximum duration of query executing for user // if omitted or zero - no limits would be applied MaxExecutionTime time.Duration `yaml:"max_execution_time,omitempty"` // Catches all undefined fields XXX map[string]interface{} `yaml:",inline"` }
ClusterUser describes simplest <users> configuration
func (*ClusterUser) UnmarshalYAML ¶
func (u *ClusterUser) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements the yaml.Unmarshaler interface.
type Config ¶
type Config struct { Server Server `yaml:"server,omitempty"` Clusters []Cluster `yaml:"clusters"` Users []User `yaml:"users"` // Whether to print debug logs LogDebug bool `yaml:"log_debug,omitempty"` // List of networks that access is allowed from // Each list item could be IP address or subnet mask // if omitted or zero - no limits would be applied Networks Networks `yaml:"allowed_networks,omitempty"` // Catches all undefined fields XXX map[string]interface{} `yaml:",inline"` }
Config describes access and proxy rules
func (*Config) UnmarshalYAML ¶
UnmarshalYAML implements the yaml.Unmarshaler interface.
type KillQueryUser ¶
type KillQueryUser struct { // User name Name string `yaml:"name"` // User password to access CH with basic auth Password string `yaml:"password,omitempty"` // Catches all undefined fields XXX map[string]interface{} `yaml:",inline"` }
KillQueryUser - user configuration for killing queries which has exceeded limits
func (*KillQueryUser) UnmarshalYAML ¶
func (u *KillQueryUser) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements the yaml.Unmarshaler interface.
type Networks ¶
Networks is a list of IPNet entities
func (*Networks) UnmarshalYAML ¶
UnmarshalYAML implements the yaml.Unmarshaler interface.
type Server ¶
type Server struct { // TCP address to listen to for http // Default is `localhost:8080` ListenAddr string `yaml:"listen_addr,omitempty"` // Whether serve https at ListenAddr addr // If no TLSConfig specified than `autocert` will be used IsTLS bool `yaml:"is_tls,omitempty"` // Optional TLS configuration TLSConfig TLSConfig `yaml:"tls_config,omitempty"` // Catches all undefined fields XXX map[string]interface{} `yaml:",inline"` }
Server describes configuration of proxy server These settings are immutable and can't be reloaded without restart
func (*Server) UnmarshalYAML ¶
UnmarshalYAML implements the yaml.Unmarshaler interface.
type TLSConfig ¶
type TLSConfig struct { // Path to the directory where letsencrypt certs are cached CertCacheDir string `yaml:"cert_cache_dir,omitempty"` // The client cert file for the targets. CertFile string `yaml:"cert_file,omitempty"` // The client key file for the targets. KeyFile string `yaml:"key_file,omitempty"` // List of host names to which proxy is allowed to respond to // see https://godoc.org/golang.org/x/crypto/acme/autocert#HostPolicy HostPolicy []string `yaml:"host_policy,omitempty"` // Catches all undefined fields and must be empty after parsing. XXX map[string]interface{} `yaml:",inline"` }
TLSConfig describes configuration for TLS starting server It can be autocert with letsencrypt or custom certificate
func (*TLSConfig) UnmarshalYAML ¶
UnmarshalYAML implements the yaml.Unmarshaler interface.
type User ¶
type User struct { // User name Name string `yaml:"name"` // User password to access proxy with basic auth Password string `yaml:"password,omitempty"` // ToCluster is the name of cluster where requests // will be proxied ToCluster string `yaml:"to_cluster"` // ToUser is the name of cluster_user from cluster's ToCluster // whom credentials will be used for proxying request to CH ToUser string `yaml:"to_user"` // Maximum number of concurrently running queries for user // if omitted or zero - no limits would be applied MaxConcurrentQueries uint32 `yaml:"max_concurrent_queries,omitempty"` // Maximum duration of query execution for user // if omitted or zero - no limits would be applied MaxExecutionTime time.Duration `yaml:"max_execution_time,omitempty"` // List of networks that access is allowed from // Each list item could be IP address or subnet mask // if omitted or zero - no limits would be applied Networks Networks `yaml:"allowed_networks,omitempty"` // Catches all undefined fields XXX map[string]interface{} `yaml:",inline"` }
User describes list of allowed users which requests will be proxied to ClickHouse
func (*User) UnmarshalYAML ¶
UnmarshalYAML implements the yaml.Unmarshaler interface.