Documentation
¶
Index ¶
- type AccessLog
- type Admin
- type CDS
- type Cluster
- type ClusterCache
- type ClusterLoadAssignmentCache
- type ClusterLoadAssignmentHandler
- type ClusterManager
- type Config
- type ConfigWriter
- type Filter
- type Host
- type HttpConnectionManager
- type HttpConnectionManagerConfig
- type IngressResourceHandler
- type LDS
- type Listener
- type ListenerCache
- type OutlierDetection
- type RDS
- type RateLimitService
- type Route
- type RouteConfig
- type Router
- type RouterConfig
- type Runtime
- type SDS
- type SDSHost
- type SSLContext
- type Tracing
- type Translator
- type VirtualHost
- type VirtualHostCache
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cluster ¶
type Cluster struct {
Name string `json:"name"`
Type string `json:"type"`
ConnectTimeoutMs int `json:"connect_timeout_ms"`
PerConnectionBufferLimitBytes int `json:"per_connection_buffer_limit_bytes,omitempty"`
LBType string `json:"lb_type"`
Hosts []Host `json:"hosts,omitempty"`
ServiceName string `json:"service_name,omitempty"`
// *HealthCheck `json:"health_check,omitempty"`
MaxRequestsPerConnection int `json:"max_requests_per_connection,omitempty"`
}
type ClusterCache ¶
type ClusterCache interface {
// Values returns a copy of the contents of the cache.
Values() []*v2.Cluster
// Add adds an entry to the cache. If a Cluster with the same
// name exists, it is replaced.
Add(*v2.Cluster)
// Remove removes the named entry from the cache. If the entry
// is not present in the cache, the operation is a no-op.
Remove(string)
}
ClusterCache represents a cache of computed *v2.Cluster objects.
func NewClusterCache ¶
func NewClusterCache() ClusterCache
NewClusterCache returns a new ClusterCache.
type ClusterLoadAssignmentCache ¶
type ClusterLoadAssignmentCache interface {
// Values returns a copy of the contents of the cache.
Values() []*v2.ClusterLoadAssignment
// Add adds an entry to the cache. If a ClusterLoadAssignment with the same
// name exists, it is replaced.
Add(*v2.ClusterLoadAssignment)
// Remove removes the named entry from the cache. If the entry
// is not present in the cache, the operation is a no-op.
Remove(string)
}
ClusterLoadAssignemntCache represents a cache of computed *v2.ClusterLoadAssignment objects.
func NewClusterLoadAssignmentCache ¶
func NewClusterLoadAssignmentCache() ClusterLoadAssignmentCache
NewClusterLoadAssignmentCache returns a new ClusterLoadAssignmentCache.
type ClusterLoadAssignmentHandler ¶
type ClusterLoadAssignmentHandler struct {
ClusterLoadAssignmentCache
log.Logger
}
type ClusterManager ¶
type ClusterManager struct {
Clusters []*Cluster `json:"clusters"`
*SDS `json:"sds,omitempty"`
LocalClusterName string `json:"local_cluster_namei,omitempty"`
*OutlierDetection `json:"outlier_detection,omitempty"`
*CDS `json:"cds,omitempty"`
}
type Config ¶
type Config struct {
Listeners []*Listener `json:"listeners"`
*LDS `json:"lds,omitempty"`
*Admin `json:"admin,omitempty"`
ClusterManager `json:"cluster_manager"`
FlagsPath string `json:"flags_path,omitempty"`
StatsdUDPIPAddress string `json:"statsd_udp_ip_address,omitempty"`
StatsdTCPClusterName string `json:"statsd_tcp_cluster_name,omitempty"`
StatsdFlushIntervalMs string `json:"stats_flush_interval_ms,omitempty"`
WatchdogMissTimeoutMs string `json:"watchdog_miss_timeout_ms,omitempty"`
WatchdogMegamissTimeoutMs string `json:"watchdog_megamiss_timeout_ms,omitempty"`
WatchdogKillTimeoutMs string `json:"watchdog_kill_timeout_ms,omitempty"`
WatchdogMultikillTimeoutMs string `json:"watchdog_multikill_timeout_ms,omitempty"`
*Tracing `json:"tracing,omitempty"`
*RateLimitService `json:"rate_limit_service,omitempty"`
*Runtime `json:"runtime,omitempty"`
}
Config is the top level Envoy configuration.
type ConfigWriter ¶
type ConfigWriter struct {
// AdminAccessLogPath is the path to write the access log for the administration server.
// Defaults to /dev/null.
AdminAccessLogPath string
// AdminAddress is the TCP address that the administration server will listen on.
// Defaults to 127.0.0.1.
AdminAddress string
// AdminPort is the port that the administration server will listen on.
// Defaults to 9001.
AdminPort int
// XDSAddress is the TCP address of the XDS management server. For JSON configurations
// this is the address of the v1 REST API server. For YAML configurations this is the
// address of the v2 gRPC management server.
// Defaults to 127.0.0.1.
XDSAddress string
// XDSRESTPort is the management server port that provides the v1 REST API.
// Defaults to 8000.
XDSRESTPort int
// XDSGRPCPort is the management server port that provides the v2 gRPC API.
// Defaults to 8001.
XDSGRPCPort int
}
A ConfigWriter knows how to write a bootstap Envoy configuration in both JSON and YAML formats.
type HttpConnectionManager ¶
type HttpConnectionManager struct {
Type string `json:"type"` // must be "read"
Name string `json:"name"` // must be "http_connection_manager"
Config HttpConnectionManagerConfig `json:"config"`
}
type HttpConnectionManagerConfig ¶
type HttpConnectionManagerConfig struct {
CodecType string `json:"codec_type"` // one of http1, http2, auto
StatPrefix string `json:"stat_prefix"`
*RDS `json:"rds,omitempty"`
*RouteConfig `json:"route_config,omitempty"`
Filters []Filter `json:"filters"`
AddUserAgent bool `json:"add_user_agent,omitempty"`
*Tracing `json:"tracing,omitempty"`
// "http1_settings": "{...}",
// "http2_settings": "{...}",
ServerName string `json:"server_name,omitempty"` // defaults to "envoy"
IdleTimeoutSeconds int `json:"idle_timeout_s,omitempty"`
DrainTimeoutMs int `json:"drain_timeout_ms,omitempty"`
AccessLog []AccessLog `json:"access_log,omitempty"`
UseRemoteAddress bool `json:"use_remote_address,omitempty"`
ForwardClientCert string `json:"forward_client_cert,omitempty"`
// "set_current_client_cert": "...",
GenerateRequestID bool `json:"generate_request_id,omitempty"`
}
type IngressResourceHandler ¶
type IngressResourceHandler struct {
VirtualHostCache
log.Logger
}
type Listener ¶
type Listener struct {
Name string `json:"name,omitempty"`
Address string `json:"address"`
Filters []Filter `json:"filters"`
SSLContext *SSLContext `json:"ssl_context,omitempty"`
BindToPort string `json:"bind_to_port,omitempty"` // bool, defaults to "true"
UseProxyProto string `json:"use_proxy_proto,omitempty"` // bool, defaults to "false"
UseOriginalDest string `json:"use_original_dst,omitempty"` // bool, defaults to "false"
PerConnectionBufferLimitBytes string `json:"per_connection_buffer_limit_bytes,omitempty"` // integer, defaults to 1MiB
}
type ListenerCache ¶
ListenerCache is a thread safe, atomic, copy on write cache of v2.Listener objects.
func (ListenerCache) Values ¶
func (lc ListenerCache) Values() []*v2.Listener
type OutlierDetection ¶
type OutlierDetection struct {
EventLogPath string `json:"event_log_path,omitempty"`
}
type RateLimitService ¶
type RateLimitService struct {
}
type Route ¶
type Route struct {
Prefix string `json:"prefix,omitempty"`
Path string `json:"path,omitempty"`
Regex string `json:"regex,omitempty"`
Cluster string `json:"cluster,omitempty"`
ClusterHeader string `json:"cluster_header,omitempty"`
// "weighted_clusters" : "{...}",
HostRedirect string `json:"host_redirect,omitempty"`
PathRedirect string `json:"path_redirect,omitempty"`
PrefixRewrite string `json:"prefix_rewrite,omitempty"`
HostRewrite string `json:"host_rewrite,omitempty"`
AutoHostRewrite bool `json:"auto_host_rewrite,omitempty"`
// "case_sensitive": "...",
UseWebsocket bool `json:"use_websocket,omitempty"`
TimeoutMS int `json:"timeout_ms,omitempty"`
// "runtime": "{...}",
// "retry_policy": "{...}",
// "shadow": "{...}",
Priority string `json:"priority,omitempty"`
}
type RouteConfig ¶
type RouteConfig struct {
ValidateClusters bool `json:"validate_clusters,omitempty"`
VirtualHosts []*VirtualHost `json:"virtual_hosts"`
}
type Router ¶
type Router struct {
Type string `json:"type"` // must be "decoder"
Name string `json:"name"` // must be "router"
Config RouterConfig `json:"config"`
}
type RouterConfig ¶
type RouterConfig struct {
DynamicStats bool `json:"dynamic_stats,omitempty"`
}
type SSLContext ¶
type SSLContext struct {
}
type Translator ¶
type Translator struct {
log.Logger
ClusterCache
ClusterLoadAssignmentCache
VirtualHostCache
}
Translator receives notifications from the Kubernetes API and translates those objects into additions and removals entries of Envoy gRPC objects from a cache.
func (*Translator) OnAdd ¶
func (t *Translator) OnAdd(obj interface{})
func (*Translator) OnDelete ¶
func (t *Translator) OnDelete(obj interface{})
func (*Translator) OnUpdate ¶
func (t *Translator) OnUpdate(oldObj, newObj interface{})
type VirtualHost ¶
type VirtualHost struct {
Name string `json:"name"`
Domains []string `json:"domains"`
Routes []Route `json:"routes"`
RequireSSL string `json:"require_ssl,omitempty"`
}
func (*VirtualHost) AddDomain ¶
func (v *VirtualHost) AddDomain(d string)
func (*VirtualHost) AddRoute ¶
func (v *VirtualHost) AddRoute(r Route)
type VirtualHostCache ¶
type VirtualHostCache interface {
// Values returns a copy of the contents of the cache.
Values() []*v2.VirtualHost
// Add adds an entry to the cache. If a VirtualHost with the same
// name exists, it is replaced.
Add(*v2.VirtualHost)
// Remove removes the named entry from the cache. If the entry
// is not present in the cache, the operation is a no-op.
Remove(string)
}
VirtualHostCache represents a cache of computed *v2.VirtualHost objects.
func NewVirtualHostCache ¶
func NewVirtualHostCache() VirtualHostCache
NewVirtualHostCache returns a new VirtualHostCache.