Documentation
¶
Index ¶
- Variables
- func IsValidDomain(domain string) bool
- func TestAndSkipResovler(path string) (string, error)
- func ValidateConfig(mainOptions Options, isFullMode bool) error
- func Watch() error
- type AccessLogOptions
- type ActiveHealthOptions
- type ChangeFunc
- type DNSProviderOptions
- type DefaultOptions
- type DefaultServiceOptions
- type DefaultUpstreamOptions
- type DiscoveryOptions
- type ErrInvalidConfig
- type EscapeType
- type ExperimentOptions
- type File
- type FileProviderOptions
- type HealthCheckOptions
- type LoggingOtions
- type MetricsOptions
- type MiddlwareOptions
- type NacosConfigOptions
- type NacosDiscoveryOptions
- type NacosProviderOptions
- type Observability
- type Options
- type PassiveHealthOptions
- type PrometheusOptions
- type Protocol
- type ProviderOtions
- type RedisOptions
- type ResolverOptions
- type RouteOptions
- type ServerOptions
- type ServerTimeoutOptions
- type ServerTracingOptions
- type ServiceOptions
- type ServiceTimeoutOptions
- type TLSOptions
- type TargetOptions
- type TracingOptions
- type UpstreamOptions
- type UpstreamStrategy
Constants ¶
This section is empty.
Variables ¶
View Source
var (
OnChanged provider.ChangeFunc
)
Functions ¶
func IsValidDomain ¶ added in v0.2.0
func TestAndSkipResovler ¶ added in v0.3.0
func ValidateConfig ¶
ValidateConfig checks if the config's values are valid, but does not check if the config's value mapping is valid
Types ¶
type AccessLogOptions ¶
type AccessLogOptions struct {
BufferSize int `yaml:"buffer_size" json:"buffer_size"`
Output string `yaml:"output" json:"output"`
Template string `yaml:"template" json:"template"`
TimeFormat string `yaml:"time_format" json:"time_format"`
Escape EscapeType `yaml:"escape" json:"escape"`
Flush time.Duration `yaml:"flush" json:"flush"`
}
type ActiveHealthOptions ¶ added in v0.4.0
type ActiveHealthOptions struct {
Interval time.Duration `yaml:"interval" json:"interval"`
Path string `yaml:"path" json:"path"`
Method string `yaml:"method" json:"method"`
Port int `yaml:"port" json:"port"`
SuccessThreshold int `yaml:"success_threshold" json:"success_threshold"`
FailureThreshold int `yaml:"failure_threshold" json:"failure_threshold"`
}
type ChangeFunc ¶
type ChangeFunc func() error
type DNSProviderOptions ¶ added in v0.4.0
type DefaultOptions ¶ added in v0.3.0
type DefaultOptions struct {
Service DefaultServiceOptions `yaml:"service" json:"service"`
Upstream DefaultUpstreamOptions `yaml:"upstream" json:"upstream"`
}
type DefaultServiceOptions ¶ added in v0.3.0
type DefaultServiceOptions struct {
MaxConnsPerHost *int `yaml:"max_conns_per_host" json:"max_conns_per_host"`
Protocol Protocol `yaml:"protocol" json:"protocol"`
Timeout ServiceTimeoutOptions `yaml:"timeout" json:"timeout"`
}
type DefaultUpstreamOptions ¶ added in v0.3.0
type DiscoveryOptions ¶ added in v0.4.0
type ErrInvalidConfig ¶
func (ErrInvalidConfig) Error ¶
func (e ErrInvalidConfig) Error() string
type EscapeType ¶
type EscapeType string
const ( NoneEscape EscapeType = "none" DefaultEscape EscapeType = "default" JSONEscape EscapeType = "json" )
type ExperimentOptions ¶ added in v0.4.0
type ExperimentOptions struct {
ChunkedTransfer bool `yaml:"chunked_transfer" json:"chunked_transfer"`
}
type FileProviderOptions ¶
type HealthCheckOptions ¶ added in v0.4.0
type HealthCheckOptions struct {
Passive PassiveHealthOptions `yaml:"passive" json:"passive"`
Active ActiveHealthOptions `yaml:"active" json:"active"`
}
type LoggingOtions ¶
type MetricsOptions ¶
type MetricsOptions struct {
Prometheus PrometheusOptions `yaml:"prometheus" json:"prometheus"`
}
type MiddlwareOptions ¶
type NacosConfigOptions ¶ added in v0.3.0
type NacosConfigOptions struct {
Enabled bool `yaml:"enabled" json:"enabled"`
Username string `yaml:"username" json:"username"`
Password string `yaml:"password" json:"password"`
NamespaceID string `yaml:"namespace_id" json:"namespace_id"`
Prefix string `yaml:"prefix" json:"prefix"`
LogLevel string `yaml:"log_level" json:"log_level"`
LogDir string `yaml:"log_dir" json:"log_dir"`
CacheDir string `yaml:"cache_dir" json:"cache_dir"`
Timeout time.Duration `yaml:"timeout" json:"timeout"`
Watch *bool `yaml:"watch" json:"watch"`
Endpoints []string `yaml:"endpoints" json:"endpoints"`
Files []*File `yaml:"files" json:"files"`
}
type NacosDiscoveryOptions ¶ added in v0.4.0
type NacosDiscoveryOptions struct {
Enabled bool `yaml:"enabled" json:"enabled"`
Username string `yaml:"username" json:"username"`
Password string `yaml:"password" json:"password"`
NamespaceID string `yaml:"namespace_id" json:"namespace_id"`
Prefix string `yaml:"prefix" json:"prefix"`
LogDir string `yaml:"log_dir" json:"log_dir"`
LogLevel string `yaml:"log_level" json:"log_level"`
CacheDir string `yaml:"cache_dir" json:"cache_dir"`
Timeout time.Duration `yaml:"timeout" json:"timeout"`
Endpoints []string `yaml:"endpoints" json:"endpoints"`
}
type NacosProviderOptions ¶ added in v0.3.0
type NacosProviderOptions struct {
Config NacosConfigOptions `yaml:"config" json:"config"`
Discovery NacosDiscoveryOptions `yaml:"discovery" json:"discovery"`
}
type Observability ¶ added in v0.2.0
type Observability struct {
Tracing ServerTracingOptions `yaml:"tracing" json:"tracing"`
}
type Options ¶
type Options struct {
IsDaemon bool `yaml:"-" json:"-"`
SkipResolver bool `yaml:"-" json:"-"`
PIDFile string `yaml:"pid_file" json:"pid_file"`
UpgradeSock string `yaml:"upgrade_sock" json:"upgrade_sock"`
Gopool bool `yaml:"gopool" json:"gopool"`
Resolver ResolverOptions `yaml:"resolver" json:"resolver"`
NumLoops int `yaml:"num_loops" json:"num_loops"`
Watch *bool `yaml:"watch" json:"watch"`
User string `yaml:"user" json:"user"`
Group string `yaml:"group" json:"group"`
Providers ProviderOtions `yaml:"providers" json:"providers"`
TimerResolution time.Duration `yaml:"timer_resolution" json:"timer_resolution"`
Logging LoggingOtions `yaml:"logging" json:"logging"`
Metrics MetricsOptions `yaml:"metrics" json:"metrics"`
Tracing TracingOptions `yaml:"tracing" json:"tracing"`
Default DefaultOptions `yaml:"default" json:"default"`
AccessLogs map[string]AccessLogOptions `yaml:"access_logs" json:"access_logs"`
Servers map[string]ServerOptions `yaml:"servers" json:"servers"`
RoutesMap *yaml.Node `yaml:"routes"`
Routes []*RouteOptions `yaml:"-"`
Middlewares map[string]MiddlwareOptions `yaml:"middlewares" json:"middlewares"`
Services map[string]ServiceOptions `yaml:"services" json:"services"`
Upstreams map[string]UpstreamOptions `yaml:"upstreams" json:"upstreams"`
Redis []RedisOptions `yaml:"redis" json:"redis"`
Experiment ExperimentOptions `yaml:"experiment" json:"experiment"`
// contains filtered or unexported fields
}
func NewOptions ¶
func NewOptions() Options
func (Options) ConfigPath ¶ added in v0.2.0
func (*Options) UnmarshalYAML ¶ added in v0.3.0
type PassiveHealthOptions ¶ added in v0.4.0
type PrometheusOptions ¶
type ProviderOtions ¶
type ProviderOtions struct {
File FileProviderOptions `yaml:"file" json:"file"`
Nacos NacosProviderOptions `yaml:"nacos" json:"nacos"`
DNS DNSProviderOptions `yaml:"dns" json:"dns"`
}
type RedisOptions ¶
type ResolverOptions ¶
type RouteOptions ¶
type RouteOptions struct {
ID string `yaml:"-" json:"-"`
Methods []string `yaml:"methods" json:"methods"`
Paths []string `yaml:"paths" json:"paths"`
Route string `yaml:"route" json:"route"`
Servers []string `yaml:"servers" json:"servers"`
Tags []string `yaml:"tags" json:"tags"`
Middlewares []MiddlwareOptions `yaml:"middlewares" json:"middlewares"`
ServiceID string `yaml:"service_id" json:"service_id"`
}
type ServerOptions ¶
type ServerOptions struct {
ID string `yaml:"-" json:"-"`
Bind string `yaml:"bind" json:"bind"`
TLS TLSOptions `yaml:"tls" json:"tls"`
ReusePort bool `yaml:"reuse_port" json:"reuse_port"`
TCPQuickAck bool `yaml:"tcp_quick_ack" json:"tcp_quick_ack"`
TCPFastOpen bool `yaml:"tcp_fast_open" json:"tcp_fast_open"`
Backlog int `yaml:"backlog" json:"backlog"`
HTTP2 bool `yaml:"http2" json:"http2"`
Middlewares []MiddlwareOptions `yaml:"middlewares" json:"middlewares"`
Logging LoggingOtions `yaml:"logging" json:"logging"`
Timeout ServerTimeoutOptions `yaml:"timeout" json:"timeout"`
MaxRequestBodySize int `yaml:"max_request_body_size" json:"max_request_body_size"`
ReadBufferSize int `yaml:"read_buffer_size" json:"read_buffer_size"`
PPROF bool `yaml:"pprof" json:"pprof"`
AccessLogID string `yaml:"access_log_id" json:"access_log_id"`
Observability Observability `yaml:"observability" json:"observability"`
TrustedCIDRS []string `yaml:"trusted_cidrs" json:"trusted_cidrs"`
RemoteIPHeaders []string `yaml:"remote_ip_headers" json:"remote_ip_headers"`
}
type ServerTimeoutOptions ¶
type ServerTracingOptions ¶ added in v0.2.0
type ServerTracingOptions struct {
Enabled *bool `yaml:"enabled" json:"enabled"`
Attributes map[string]string `yaml:"attributes" json:"attributes"`
}
func (ServerTracingOptions) IsEnabled ¶ added in v0.2.0
func (options ServerTracingOptions) IsEnabled() bool
type ServiceOptions ¶
type ServiceOptions struct {
ID string `yaml:"-" json:"-"`
TLSVerify bool `yaml:"tls_verify" json:"tls_verify"`
MaxConnsPerHost *int `yaml:"max_conns_per_host" json:"max_conns_per_host"`
Protocol Protocol `yaml:"protocol" json:"protocol"`
Url string `yaml:"url" json:"url"`
Timeout ServiceTimeoutOptions `yaml:"timeout" json:"timeout"`
Middlewares []MiddlwareOptions `yaml:"middlewares" json:"middlewares"`
}
type ServiceTimeoutOptions ¶
type TLSOptions ¶
type TargetOptions ¶
type TracingOptions ¶
type TracingOptions struct {
Enabled bool `yaml:"enabled" json:"enabled"`
ServiceName string `yaml:"service_name" json:"service_name"`
Propagators []string `yaml:"propagators" json:"propagators"`
Endpoint string `yaml:"endpoint" json:"endpoint"`
Insecure bool `yaml:"insecure" json:"insecure"`
SamplingRate float64 `yaml:"sampling_rate" json:"sampling_rate"`
BatchSize int64 `yaml:"batch_size" json:"batch_size"`
QueueSize int64 `yaml:"queue_size" json:"queue_size"`
Flush time.Duration `yaml:"flush" json:"flush"`
Timeout time.Duration `yaml:"timeout" json:"timeout"`
}
type UpstreamOptions ¶
type UpstreamOptions struct {
ID string `yaml:"-" json:"-"`
Strategy UpstreamStrategy `yaml:"strategy" json:"strategy"`
HashOn string `yaml:"hash_on" json:"hash_on"`
Discovery DiscoveryOptions `yaml:"discovery" json:"discovery"`
Targets []TargetOptions `yaml:"targets" json:"targets"`
HealthCheck HealthCheckOptions `yaml:"health_check" json:"health_check"`
}
type UpstreamStrategy ¶
type UpstreamStrategy string
const ( RandomStrategy UpstreamStrategy = "random" RoundRobinStrategy UpstreamStrategy = "round_robin" WeightedStrategy UpstreamStrategy = "weighted" HashingStrategy UpstreamStrategy = "hashing" )
Click to show internal directories.
Click to hide internal directories.