Documentation ¶
Index ¶
- Constants
- func AddDefaultRouteRules(ruleList []api.Rule, instances []*api.ServiceInstance) []api.Rule
- func BuildServiceKey(service string, tags []string) string
- func BuildWeightKey(service string, tags []string) string
- func ParseServiceKey(s string) (string, []string)
- func SanitizeRules(ruleList []api.Rule)
- type AbortFilter
- type AccessLog
- type Admin
- type ByPriority
- type CDS
- type CircuitBreakers
- type Cluster
- type ClusterManager
- type ClustersByName
- type Config
- type DefaultCB
- type DelayFilter
- type Filter
- type FilterFaultConfig
- type FilterRouterConfig
- type GRPCHTTP1BridgeFilter
- type HTTPFilterConfig
- type HTTPRouteConfig
- type Header
- type Host
- type Listener
- type Manager
- type NetworkFilter
- type OutlierDetection
- type RDS
- type RetryPolicy
- type RootRuntime
- type Route
- type Runtime
- type SDS
- type SSLContext
- type Service
- type ServiceConfig
- type TCPFilterConfig
- type TCPRoute
- type TCPRouteConfig
- type VirtualHost
- type WeightedCluster
- type WeightedClusters
Constants ¶
const ( DefaultDiscoveryPort = 6500 DefaultAdminPort = 8001 DefaultHTTPListenerPort = 6379 DefaultWorkingDir = "/etc/envoy/" DefaultLoggingDir = "/var/log/" DefaultEnvoyBinary = "envoy" )
Envoy config related files
Variables ¶
This section is empty.
Functions ¶
func AddDefaultRouteRules ¶
AddDefaultRouteRules adds a route rule for a service that currently does not have one
func BuildServiceKey ¶
BuildServiceKey builds a service key given a service name and tags in the form "serviceName:tag1=value1,tag2=value2,tag3=value3" where ':' is the service delimiter and ',' is the tag delimiter. We assume that the service name and the tags do not contain either delimiter.
func BuildWeightKey ¶
BuildWeightKey builds filesystem key for Route Runtime weight keys
func ParseServiceKey ¶
ParseServiceKey parses service key into service name and tags. We do not check for the correctness of the service key.
func SanitizeRules ¶
SanitizeRules performs sorts on rule backends and rules. Also calculates remaining weights
Types ¶
type AbortFilter ¶
type AbortFilter struct { Percent int `json:"abort_percent,omitempty"` HTTPStatus int `json:"http_status,omitempty"` }
AbortFilter definition.
type AccessLog ¶
type AccessLog struct { Path string `json:"path"` Format string `json:"format,omitempty"` Filter string `json:"filter,omitempty"` }
AccessLog definition.
type Admin ¶
Admin definition. See: https://lyft.github.io/envoy/docs/configuration/overview/admin.html#config-admin
type ByPriority ¶
ByPriority implement sort
type CDS ¶
CDS definition See: https://lyft.github.io/envoy/docs/configuration/cluster_manager/cds.html#config-cluster-manager-cds
type CircuitBreakers ¶
type CircuitBreakers struct {
Default DefaultCB `json:"default,omitempty"`
}
CircuitBreakers definition See: https://lyft.github.io/envoy/docs/configuration/cluster_manager/cluster_circuit_breakers.html#circuit-breakers
type Cluster ¶
type Cluster struct { Name string `json:"name"` ServiceName string `json:"service_name,omitempty"` ConnectTimeoutMs int `json:"connect_timeout_ms"` Type string `json:"type"` LbType string `json:"lb_type"` MaxRequestsPerConnection int `json:"max_requests_per_connection,omitempty"` Hosts []Host `json:"hosts,omitempty"` CircuitBreakers *CircuitBreakers `json:"circuit_breakers,omitempty"` OutlierDetection *OutlierDetection `json:"outlier_detection,omitempty"` SSLContext *SSLContext `json:"ssl_context,omitempty"` }
Cluster definition. See: https://lyft.github.io/envoy/docs/configuration/cluster_manager/cluster.html#config-cluster-manager-cluster
func BuildClusters ¶
func BuildClusters(instances []*api.ServiceInstance, rules []api.Rule, tlsConfig *SSLContext) []Cluster
BuildClusters builds clusters from instances applying rule backend info where necessary
type ClusterManager ¶
type ClusterManager struct { Clusters []Cluster `json:"clusters"` SDS SDS `json:"sds"` CDS CDS `json:"cds"` }
ClusterManager definition. See: https://lyft.github.io/envoy/docs/configuration/cluster_manager/cluster_manager.html#config-cluster-manager
type ClustersByName ¶
type ClustersByName []Cluster
ClustersByName implements name based sort for clusters.
type Config ¶
type Config struct { RootRuntime RootRuntime `json:"runtime"` Listeners []Listener `json:"listeners"` Admin Admin `json:"admin"` ClusterManager ClusterManager `json:"cluster_manager"` }
Config definition. See: https://lyft.github.io/envoy/docs/configuration/overview/overview.html
type DefaultCB ¶
type DefaultCB struct { MaxConnections int `json:"max_connections,omitempty"` MaxPendingRequest int `json:"max_pending_requests,omitempty"` MaxRequests int `json:"max_requests,omitempty"` MaxRetries int `json:"max_retries,omitempty"` }
DefaultCB definition See: https://lyft.github.io/envoy/docs/configuration/cluster_manager/cluster_circuit_breakers.html#config-cluster-manager-cluster-circuit-breakers
type DelayFilter ¶
type DelayFilter struct { Type string `json:"type,omitempty"` Percent int `json:"fixed_delay_percent,omitempty"` Duration int `json:"fixed_duration_ms,omitempty"` }
DelayFilter definition.
type Filter ¶
type Filter struct { Type string `json:"type"` Name string `json:"name"` Config interface{} `json:"config"` }
Filter definition.
type FilterFaultConfig ¶
type FilterFaultConfig struct { Abort *AbortFilter `json:"abort,omitempty"` Delay *DelayFilter `json:"delay,omitempty"` Headers []Header `json:"headers,omitempty"` }
FilterFaultConfig definition. See: https://lyft.github.io/envoy/docs/configuration/http_filters/fault_filter.html
type FilterRouterConfig ¶
type FilterRouterConfig struct {
DynamicStats bool `json:"dynamic_stats"`
}
FilterRouterConfig definition.
type HTTPFilterConfig ¶ added in v1.1.0
type HTTPFilterConfig struct { CodecType string `json:"codec_type"` StatPrefix string `json:"stat_prefix"` GenerateRequestID bool `json:"generate_request_id"` UserAgent bool `json:"add_user_agent"` RouteConfig *HTTPRouteConfig `json:"route_config,omitempty"` RDS *RDS `json:"rds,omitempty"` Filters []Filter `json:"filters"` AccessLog []AccessLog `json:"access_log"` }
HTTPFilterConfig definition.
type HTTPRouteConfig ¶ added in v1.1.0
type HTTPRouteConfig struct {
VirtualHosts []VirtualHost `json:"virtual_hosts"`
}
HTTPRouteConfig definition. See: https://lyft.github.io/envoy/docs/configuration/http_conn_man/route_config/route_config.html#config-http-conn-man-route-table
type Header ¶
type Header struct { Name string `json:"name"` Value string `json:"value"` Regex bool `json:"regex"` }
Header definition. See: https://lyft.github.io/envoy/docs/configuration/http_filters/fault_filter.html#config-http-filters-fault-injection-headers
type Listener ¶
type Listener struct { Port int `json:"port"` Filters []NetworkFilter `json:"filters"` SSLContext *SSLContext `json:"ssl_context,omitempty"` }
Listener definition. See: https://lyft.github.io/envoy/docs/configuration/listeners/listeners.html#config-listeners
type Manager ¶
type Manager interface {
Update(instances []api.ServiceInstance, rules []api.Rule) error
}
Manager for updating envoy proxy configuration.
func NewManager ¶
func NewManager(identity identity.Provider, conf *config.Config, tlsConfig *SSLContext) (Manager, error)
NewManager creates new instance
type NetworkFilter ¶
type NetworkFilter struct { Type string `json:"type"` Name string `json:"name"` Config interface{} `json:"config"` }
NetworkFilter definition. See: https://lyft.github.io/envoy/docs/configuration/listeners/filters.html#config-listener-filters
type OutlierDetection ¶
type OutlierDetection struct { ConsecutiveError int `json:"consecutive_5xx,omitempty"` IntervalMS int `json:"interval_ms,omitempty"` BaseEjectionTimeMS int `json:"base_ejection_time_ms,omitempty"` MaxEjectionPercent int `json:"max_ejection_percent,omitempty"` }
OutlierDetection definition See: https://lyft.github.io/envoy/docs/configuration/cluster_manager/cluster_runtime.html#outlier-detection
type RDS ¶
type RDS struct { Cluster string `json:"cluster"` RefreshDelayMS int `json:"refresh_delay_ms"` RouteConfigName string `json:"route_config_name"` }
RDS definition See: https://lyft.github.io/envoy/docs/configuration/http_conn_man/rds.html#config-http-conn-man-rds
type RetryPolicy ¶
type RetryPolicy struct { Policy string `json:"retry_on"` //5xx,connect-failure,refused-stream NumRetries int `json:"num_retries,omitempty"` }
RetryPolicy definition See: https://lyft.github.io/envoy/docs/configuration/http_conn_man/route_config/route.html#retry-policy
type RootRuntime ¶
type RootRuntime struct { SymlinkRoot string `json:"symlink_root"` Subdirectory string `json:"subdirectory"` OverrideSubdirectory string `json:"override_subdirectory,omitempty"` }
RootRuntime definition. See: https://lyft.github.io/envoy/docs/configuration/overview/overview.html
type Route ¶
type Route struct { Runtime *Runtime `json:"runtime,omitempty"` Path string `json:"path,omitempty"` Prefix string `json:"prefix,omitempty"` PrefixRewrite string `json:"prefix_rewrite,omitempty"` WeightedClusters WeightedClusters `json:"weighted_clusters,omitempty"` Cluster string `json:"cluster,omitempty"` Headers []Header `json:"headers,omitempty"` TimeoutMS int `json:"timeout_ms,omitempty"` RetryPolicy RetryPolicy `json:"retry_policy"` AutoHostRewrite bool `json:"auto_host_rewrite,omitempty"` }
Route definition. See: https://lyft.github.io/envoy/docs/configuration/http_conn_man/route_config/route.html#config-http-conn-man-route-table-route
func BuildRoutes ¶
func BuildRoutes(ruleList []api.Rule, instances []*api.ServiceInstance) []Route
BuildRoutes builds routes based on rules. Assumes at least one route for each service
type SDS ¶
SDS definition. See: https://lyft.github.io/envoy/docs/configuration/cluster_manager/sds.html#config-cluster-manager-sds
type SSLContext ¶
type SSLContext struct { CertChainFile string `json:"cert_chain_file"` PrivateKeyFile string `json:"private_key_file"` CACertFile *string `json:"ca_cert_file,omitempty"` }
SSLContext defintion See: https://lyft.github.io/envoy/docs/configuration/listeners/ssl.html#config-listener-ssl-context
type ServiceConfig ¶
type ServiceConfig struct { EnvoyBinary string EnvoyConfig string DrainTimeSeconds int ParentShutdownTimeSeconds int }
ServiceConfig config for Service
type TCPFilterConfig ¶ added in v1.1.0
type TCPFilterConfig struct { StatPrefix string `json:"stat_prefix"` RouteConfig *TCPRouteConfig `json:"route_config"` }
TCPFilterConfig definition
type TCPRoute ¶ added in v1.1.0
type TCPRoute struct { Cluster string `json:"cluster"` DestinationIPList []string `json:"destination_ip_list,omitempty"` DestinationPorts string `json:"destination_ports,omitempty"` SourceIPList []string `json:"source_ip_list,omitempty"` SourcePorts string `json:"source_ports,omitempty"` }
TCPRoute definition
type TCPRouteConfig ¶ added in v1.1.0
type TCPRouteConfig struct {
Routes []TCPRoute `json:"routes"`
}
TCPRouteConfig definition
type VirtualHost ¶
type VirtualHost struct { Name string `json:"name"` Domains []string `json:"domains"` Routes []Route `json:"routes"` }
VirtualHost definition. See: https://lyft.github.io/envoy/docs/configuration/http_conn_man/route_config/vhost.html#config-http-conn-man-route-table-vhost
type WeightedCluster ¶
WeightedCluster definition See: https://lyft.github.io/envoy/docs/configuration/http_conn_man/route_config/route.html#weighted-clusters
type WeightedClusters ¶
type WeightedClusters struct { Clusters []WeightedCluster `json:"clusters"` RunTimeKeyPrefix string `json:"runtime_key_prefix,omitempty"` }
WeightedClusters definition See: https://lyft.github.io/envoy/docs/configuration/http_conn_man/route_config/route.html#weighted-clusters