Documentation
¶
Index ¶
- Constants
- type ClusterCache
- type ConfigurableRuntimeSettings
- type CustomTag
- type EndpointSliceCache
- func (c *EndpointSliceCache) DeleteEndpointSlice(endpointSlice *discoveryv1.EndpointSlice) bool
- func (c *EndpointSliceCache) Recalculate() map[string]*envoy_endpoint_v3.ClusterLoadAssignment
- func (c *EndpointSliceCache) RecalculateEndpoints(port, healthPort v1.ServicePort, ...) []*LoadBalancingEndpoint
- func (c *EndpointSliceCache) SetClusters(clusters []*dag.ServiceCluster) error
- func (c *EndpointSliceCache) UpdateEndpointSlice(endpointSlice *discoveryv1.EndpointSlice) bool
- type EndpointSliceTranslator
- func (e *EndpointSliceTranslator) Contents() []proto.Message
- func (e *EndpointSliceTranslator) Merge(entries map[string]*envoy_endpoint_v3.ClusterLoadAssignment)
- func (e *EndpointSliceTranslator) OnAdd(obj any, _ bool)
- func (e *EndpointSliceTranslator) OnChange(root *dag.DAG)
- func (e *EndpointSliceTranslator) OnDelete(obj any)
- func (e *EndpointSliceTranslator) OnUpdate(oldObj, newObj any)
- func (e *EndpointSliceTranslator) Query(names []string) []proto.Message
- func (e *EndpointSliceTranslator) SetObserver(observer contour.Observer)
- func (*EndpointSliceTranslator) TypeURL() string
- type EndpointsCache
- type EndpointsTranslator
- func (e *EndpointsTranslator) Contents() []proto.Message
- func (e *EndpointsTranslator) Merge(entries map[string]*envoy_endpoint_v3.ClusterLoadAssignment)
- func (e *EndpointsTranslator) OnAdd(obj any, _ bool)
- func (e *EndpointsTranslator) OnChange(root *dag.DAG)
- func (e *EndpointsTranslator) OnDelete(obj any)
- func (e *EndpointsTranslator) OnUpdate(oldObj, newObj any)
- func (e *EndpointsTranslator) Query(names []string) []proto.Message
- func (e *EndpointsTranslator) SetObserver(observer contour.Observer)
- func (*EndpointsTranslator) TypeURL() string
- type ExtensionServiceConfig
- type GlobalExternalAuthConfig
- type Listener
- type ListenerCache
- type ListenerConfig
- type LoadBalancingEndpoint
- type LocalityEndpoints
- type RateLimitConfig
- type RouteCache
- type RuntimeCache
- type SecretCache
- type SnapshotHandler
- type TracingConfig
Constants ¶
const ( ENVOY_HTTP_LISTENER = "ingress_http" ENVOY_HTTPS_LISTENER = "ingress_https" ENVOY_FALLBACK_ROUTECONFIG = "ingress_fallbackcert" DEFAULT_HTTP_ACCESS_LOG = "/dev/stdout" DEFAULT_HTTPS_ACCESS_LOG = "/dev/stdout" )
nolint:revive
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClusterCache ¶
ClusterCache manages the contents of the gRPC CDS cache.
func (*ClusterCache) Contents ¶
func (c *ClusterCache) Contents() []proto.Message
Contents returns a copy of the cache's contents.
func (*ClusterCache) OnChange ¶
func (c *ClusterCache) OnChange(root *dag.DAG)
func (*ClusterCache) TypeURL ¶
func (*ClusterCache) TypeURL() string
func (*ClusterCache) Update ¶
func (c *ClusterCache) Update(v map[string]*envoy_cluster_v3.Cluster)
Update replaces the contents of the cache with the supplied map.
type ConfigurableRuntimeSettings ¶ added in v1.24.6
type CustomTag ¶ added in v1.25.0
type CustomTag struct {
// TagName is the unique name of the custom tag.
TagName string
// Literal is a static custom tag value.
Literal string
// EnvironmentName indicates that the label value is obtained
// from the environment variable.
EnvironmentName string
// RequestHeaderName indicates which request header
// the label value is obtained from.
RequestHeaderName string
}
type EndpointSliceCache ¶ added in v1.27.0
type EndpointSliceCache struct {
// contains filtered or unexported fields
}
EndpointSliceCache is a cache of EndpointSlice and ServiceCluster objects.
func (*EndpointSliceCache) DeleteEndpointSlice ¶ added in v1.27.0
func (c *EndpointSliceCache) DeleteEndpointSlice(endpointSlice *discoveryv1.EndpointSlice) bool
DeleteEndpointSlice deletes endpointSlice from the cache. Any ServiceClusters that are backed by a Service that endpointSlice belongs to, become stale. Returns a boolean indicating whether any ServiceClusters use endpointSlice or not.
func (*EndpointSliceCache) Recalculate ¶ added in v1.27.0
func (c *EndpointSliceCache) Recalculate() map[string]*envoy_endpoint_v3.ClusterLoadAssignment
Recalculate regenerates all the ClusterLoadAssignments from the cached EndpointSlices and stale ServiceClusters. A ClusterLoadAssignment will be generated for every stale ServerCluster, however, if there are no endpointSlices for the Services in the ServiceCluster, the ClusterLoadAssignment will be empty.
func (*EndpointSliceCache) RecalculateEndpoints ¶ added in v1.27.0
func (c *EndpointSliceCache) RecalculateEndpoints(port, healthPort v1.ServicePort, endpointSliceMap map[string]*discoveryv1.EndpointSlice) []*LoadBalancingEndpoint
RecalculateEndpoints generates a slice of LoadBalancingEndpoint resources by matching the given service port to the given discoveryv1.EndpointSlice. endpointSliceMap may be nil, in which case, the result is also nil.
func (*EndpointSliceCache) SetClusters ¶ added in v1.27.0
func (c *EndpointSliceCache) SetClusters(clusters []*dag.ServiceCluster) error
SetClusters replaces the cache of ServiceCluster resources. All the added clusters will be marked stale.
func (*EndpointSliceCache) UpdateEndpointSlice ¶ added in v1.27.0
func (c *EndpointSliceCache) UpdateEndpointSlice(endpointSlice *discoveryv1.EndpointSlice) bool
UpdateEndpointSlice adds endpointSlice to the cache, or replaces it if it is already cached. Any ServiceClusters that are backed by a Service that endpointSlice belongs become stale. Returns a boolean indicating whether any ServiceClusters use endpointSlice or not.
type EndpointSliceTranslator ¶ added in v1.27.0
type EndpointSliceTranslator struct {
// Observer notifies when the endpointSlice cache has been updated.
Observer contour.Observer
contour.Cond
logrus.FieldLogger
// contains filtered or unexported fields
}
A EndpointsSliceTranslator translates Kubernetes EndpointSlice objects into Envoy ClusterLoadAssignment resources.
func NewEndpointSliceTranslator ¶ added in v1.27.0
func NewEndpointSliceTranslator(log logrus.FieldLogger) *EndpointSliceTranslator
NewEndpointSliceTranslator allocates a new endpointsSlice translator.
func (*EndpointSliceTranslator) Contents ¶ added in v1.27.0
func (e *EndpointSliceTranslator) Contents() []proto.Message
Contents returns a copy of the contents of the cache.
func (*EndpointSliceTranslator) Merge ¶ added in v1.27.0
func (e *EndpointSliceTranslator) Merge(entries map[string]*envoy_endpoint_v3.ClusterLoadAssignment)
Merge combines the given entries with the existing entries in the EndpointSliceTranslator. If the same key exists in both maps, an existing entry is replaced.
func (*EndpointSliceTranslator) OnAdd ¶ added in v1.27.0
func (e *EndpointSliceTranslator) OnAdd(obj any, _ bool)
func (*EndpointSliceTranslator) OnChange ¶ added in v1.27.0
func (e *EndpointSliceTranslator) OnChange(root *dag.DAG)
OnChange observes DAG rebuild events.
func (*EndpointSliceTranslator) OnDelete ¶ added in v1.27.0
func (e *EndpointSliceTranslator) OnDelete(obj any)
func (*EndpointSliceTranslator) OnUpdate ¶ added in v1.27.0
func (e *EndpointSliceTranslator) OnUpdate(oldObj, newObj any)
func (*EndpointSliceTranslator) Query ¶ added in v1.27.0
func (e *EndpointSliceTranslator) Query(names []string) []proto.Message
func (*EndpointSliceTranslator) SetObserver ¶ added in v1.27.0
func (e *EndpointSliceTranslator) SetObserver(observer contour.Observer)
func (*EndpointSliceTranslator) TypeURL ¶ added in v1.27.0
func (*EndpointSliceTranslator) TypeURL() string
type EndpointsCache ¶
type EndpointsCache struct {
// contains filtered or unexported fields
}
EndpointsCache is a cache of Endpoint and ServiceCluster objects.
func (*EndpointsCache) DeleteEndpoint ¶
func (c *EndpointsCache) DeleteEndpoint(eps *v1.Endpoints) bool
DeleteEndpoint deletes eps from the cache. Any ServiceClusters that are backed by a Service that eps belongs become stale. Returns a boolean indicating whether any ServiceClusters use eps or not.
func (*EndpointsCache) Recalculate ¶
func (c *EndpointsCache) Recalculate() map[string]*envoy_endpoint_v3.ClusterLoadAssignment
Recalculate regenerates all the ClusterLoadAssignments from the cached Endpoints and stale ServiceClusters. A ClusterLoadAssignment will be generated for every stale ServerCluster, however, if there are no endpoints for the Services in the ServiceCluster, the ClusterLoadAssignment will be empty.
func (*EndpointsCache) SetClusters ¶
func (c *EndpointsCache) SetClusters(clusters []*dag.ServiceCluster) error
SetClusters replaces the cache of ServiceCluster resources. All the added clusters will be marked stale.
func (*EndpointsCache) UpdateEndpoint ¶
func (c *EndpointsCache) UpdateEndpoint(eps *v1.Endpoints) bool
UpdateEndpoint adds eps to the cache, or replaces it if it is already cached. Any ServiceClusters that are backed by a Service that eps belongs become stale. Returns a boolean indicating whether any ServiceClusters use eps or not.
type EndpointsTranslator ¶
type EndpointsTranslator struct {
// Observer notifies when the endpoints cache has been updated.
Observer contour.Observer
contour.Cond
logrus.FieldLogger
// contains filtered or unexported fields
}
A EndpointsTranslator translates Kubernetes Endpoints objects into Envoy ClusterLoadAssignment resources.
func NewEndpointsTranslator ¶
func NewEndpointsTranslator(log logrus.FieldLogger) *EndpointsTranslator
NewEndpointsTranslator allocates a new endpoints translator.
func (*EndpointsTranslator) Contents ¶
func (e *EndpointsTranslator) Contents() []proto.Message
Contents returns a copy of the contents of the cache.
func (*EndpointsTranslator) Merge ¶
func (e *EndpointsTranslator) Merge(entries map[string]*envoy_endpoint_v3.ClusterLoadAssignment)
Merge combines the given entries with the existing entries in the EndpointsTranslator. If the same key exists in both maps, an existing entry is replaced.
func (*EndpointsTranslator) OnAdd ¶
func (e *EndpointsTranslator) OnAdd(obj any, _ bool)
func (*EndpointsTranslator) OnChange ¶
func (e *EndpointsTranslator) OnChange(root *dag.DAG)
OnChange observes DAG rebuild events.
func (*EndpointsTranslator) OnDelete ¶
func (e *EndpointsTranslator) OnDelete(obj any)
func (*EndpointsTranslator) OnUpdate ¶
func (e *EndpointsTranslator) OnUpdate(oldObj, newObj any)
func (*EndpointsTranslator) Query ¶
func (e *EndpointsTranslator) Query(names []string) []proto.Message
func (*EndpointsTranslator) SetObserver ¶ added in v1.27.0
func (e *EndpointsTranslator) SetObserver(observer contour.Observer)
func (*EndpointsTranslator) TypeURL ¶
func (*EndpointsTranslator) TypeURL() string
type ExtensionServiceConfig ¶ added in v1.26.0
type ExtensionServiceConfig struct {
ExtensionService types.NamespacedName
Timeout timeout.Setting
SNI string
}
type GlobalExternalAuthConfig ¶ added in v1.25.0
type GlobalExternalAuthConfig struct {
ExtensionServiceConfig
FailOpen bool
Context map[string]string
WithRequestBody *dag.AuthorizationServerBufferSettings
}
type ListenerCache ¶
type ListenerCache struct {
Config ListenerConfig
contour.Cond
// contains filtered or unexported fields
}
ListenerCache manages the contents of the gRPC LDS cache.
func NewListenerCache ¶
func NewListenerCache( listenerConfig ListenerConfig, metricsConfig contour_api_v1alpha1.MetricsConfig, healthConfig contour_api_v1alpha1.HealthConfig, adminPort int, ) *ListenerCache
NewListenerCache returns an instance of a ListenerCache
func (*ListenerCache) Contents ¶
func (c *ListenerCache) Contents() []proto.Message
Contents returns a copy of the cache's contents.
func (*ListenerCache) OnChange ¶
func (c *ListenerCache) OnChange(root *dag.DAG)
func (*ListenerCache) Query ¶
func (c *ListenerCache) Query(names []string) []proto.Message
Query returns the proto.Messages in the ListenerCache that match a slice of strings
func (*ListenerCache) TypeURL ¶
func (*ListenerCache) TypeURL() string
func (*ListenerCache) Update ¶
func (c *ListenerCache) Update(v map[string]*envoy_listener_v3.Listener)
Update replaces the contents of the cache with the supplied map.
type ListenerConfig ¶
type ListenerConfig struct {
// Envoy's HTTP (non TLS) access log path.
// If not set, defaults to DEFAULT_HTTP_ACCESS_LOG.
HTTPAccessLog string
// Envoy's HTTPS (TLS) access log path.
// If not set, defaults to DEFAULT_HTTPS_ACCESS_LOG.
HTTPSAccessLog string
// UseProxyProto configures all listeners to expect a PROXY
// V1 or V2 preamble.
// If not set, defaults to false.
UseProxyProto bool
// MinimumTLSVersion defines the minimum TLS protocol version the proxy should accept.
MinimumTLSVersion string
// MaximumTLSVersion defines the maximum TLS protocol version the proxy should accept.
MaximumTLSVersion string
// CipherSuites defines the ciphers Envoy TLS listeners will accept when
// negotiating TLS 1.2.
CipherSuites []string
// DefaultHTTPVersions defines the default set of HTTP
// versions the proxy should accept. If not specified, all
// supported versions are accepted. This is applied to both
// HTTP and HTTPS listeners but has practical effect only for
// HTTPS, because we don't support h2c.
DefaultHTTPVersions []envoy_v3.HTTPVersionType
// AccessLogType defines if Envoy logs should be output as Envoy's default or JSON.
// Valid values: 'envoy', 'json'
// If not set, defaults to 'envoy'
AccessLogType contour_api_v1alpha1.AccessLogType
// AccessLogJSONFields sets the fields that should be shown in JSON logs.
// Valid entries are the keys from internal/envoy/accesslog.go:jsonheaders
// Defaults to a particular set of fields.
AccessLogJSONFields contour_api_v1alpha1.AccessLogJSONFields
// AccessLogFormatString sets the format string to be used for text based access logs.
// Defaults to empty to defer to Envoy's default log format.
AccessLogFormatString string
// AccessLogFormatterExtensions defines the Envoy extensions to enable for access log.
AccessLogFormatterExtensions []string
// AccessLogLevel defines the logging level for access log.
AccessLogLevel contour_api_v1alpha1.AccessLogLevel
// Timeouts holds Listener timeout settings.
Timeouts contourconfig.Timeouts
// AllowChunkedLength enables setting allow_chunked_length on the HTTP1 options for all
// listeners.
AllowChunkedLength bool
// MergeSlashes toggles Envoy's non-standard merge_slashes path transformation option for all listeners.
MergeSlashes bool
// ServerHeaderTransformation defines the action to be applied to the Server header on the response path.
ServerHeaderTransformation contour_api_v1alpha1.ServerHeaderTransformationType
// XffNumTrustedHops sets the number of additional ingress proxy hops from the
// right side of the x-forwarded-for HTTP header to trust.
XffNumTrustedHops uint32
// ConnectionBalancer
// The validated value is 'exact'.
// If no configuration is specified, Envoy will not attempt to balance active connections between worker threads
// If specified, the listener will use the exact connection balancer.
ConnectionBalancer string
// MaxRequestsPerConnection defines the max number of requests per connection before which the connection is closed.
// if not specified there is no limit set.
MaxRequestsPerConnection *uint32
HTTP2MaxConcurrentStreams *uint32
// PerConnectionBufferLimitBytes defines the soft limit on size of the listener’s new connection read and write buffers
// If unspecified, an implementation defined default is applied (1MiB).
PerConnectionBufferLimitBytes *uint32
// RateLimitConfig optionally configures the global Rate Limit Service to be
// used.
RateLimitConfig *RateLimitConfig
// GlobalExternalAuthConfig optionally configures the global external authorization Service to be
// used.
GlobalExternalAuthConfig *GlobalExternalAuthConfig
// TracingConfig optionally configures the tracing collector Service to be
// used.
TracingConfig *TracingConfig
// SocketOptions configures socket options HTTP and HTTPS listeners.
SocketOptions *contour_api_v1alpha1.SocketOptions
}
ListenerConfig holds configuration parameters for building Envoy Listeners.
type LoadBalancingEndpoint ¶
type LoadBalancingEndpoint = envoy_endpoint_v3.LbEndpoint
func RecalculateEndpoints ¶
func RecalculateEndpoints(port, healthPort v1.ServicePort, eps *v1.Endpoints) []*LoadBalancingEndpoint
RecalculateEndpoints generates a slice of LoadBalancingEndpoint resources by matching the given service port to the given v1.Endpoints. eps may be nil, in which case, the result is also nil.
type LocalityEndpoints ¶
type LocalityEndpoints = envoy_endpoint_v3.LocalityLbEndpoints
type RateLimitConfig ¶ added in v1.13.0
type RateLimitConfig struct {
ExtensionServiceConfig
Domain string
FailOpen bool
EnableXRateLimitHeaders bool
EnableResourceExhaustedCode bool
}
type RouteCache ¶
RouteCache manages the contents of the gRPC RDS cache.
func (*RouteCache) Contents ¶
func (c *RouteCache) Contents() []proto.Message
Contents returns a copy of the cache's contents.
func (*RouteCache) OnChange ¶
func (c *RouteCache) OnChange(root *dag.DAG)
func (*RouteCache) Query ¶
func (c *RouteCache) Query(names []string) []proto.Message
Query searches the RouteCache for the named RouteConfiguration entries.
func (*RouteCache) TypeURL ¶
func (*RouteCache) TypeURL() string
TypeURL returns the string type of RouteCache Resource.
func (*RouteCache) Update ¶
func (c *RouteCache) Update(v map[string]*envoy_route_v3.RouteConfiguration)
Update replaces the contents of the cache with the supplied map.
type RuntimeCache ¶ added in v1.21.0
RuntimeCache manages the contents of the gRPC RTDS cache.
func NewRuntimeCache ¶ added in v1.24.6
func NewRuntimeCache(runtimeSettings ConfigurableRuntimeSettings) *RuntimeCache
NewRuntimeCache builds a RuntimeCache with the provided runtime settings that will be set in the runtime layer configured by Contour.
func (*RuntimeCache) Contents ¶ added in v1.21.0
func (c *RuntimeCache) Contents() []proto.Message
Contents returns all Runtime layers (currently only the dynamic layer).
func (*RuntimeCache) OnChange ¶ added in v1.21.0
func (c *RuntimeCache) OnChange(root *dag.DAG)
func (*RuntimeCache) Query ¶ added in v1.21.0
func (c *RuntimeCache) Query(names []string) []proto.Message
Query returns only the "dynamic" layer if requested, otherwise empty.
func (*RuntimeCache) TypeURL ¶ added in v1.21.0
func (*RuntimeCache) TypeURL() string
type SecretCache ¶
SecretCache manages the contents of the gRPC SDS cache.
func NewSecretsCache ¶ added in v1.20.0
func NewSecretsCache(secrets []*envoy_tls_v3.Secret) *SecretCache
func (*SecretCache) Contents ¶
func (c *SecretCache) Contents() []proto.Message
Contents returns a copy of the cache's contents.
func (*SecretCache) OnChange ¶
func (c *SecretCache) OnChange(root *dag.DAG)
func (*SecretCache) TypeURL ¶
func (*SecretCache) TypeURL() string
func (*SecretCache) Update ¶
func (c *SecretCache) Update(v map[string]*envoy_tls_v3.Secret)
Update replaces the contents of the cache with the supplied map.
type SnapshotHandler ¶ added in v1.28.0
type SnapshotHandler struct {
// SnapshotCache contains go-control-plane Snapshots
// and is used by the go-control-plane xDS server.
SnapshotCache envoy_cache_v3.SnapshotCache
// contains filtered or unexported fields
}
SnapshotHandler responds to DAG builds via the OnChange() event and generates and caches go-control-plane Snapshots.
func NewSnapshotHandler ¶ added in v1.28.0
func NewSnapshotHandler(resources []xdscache.ResourceCache, snapshotCache envoy_cache_v3.SnapshotCache, logger logrus.FieldLogger) *SnapshotHandler
NewSnapshotHandler returns an instance of SnapshotHandler.
func (*SnapshotHandler) OnChange ¶ added in v1.28.0
func (s *SnapshotHandler) OnChange(*dag.DAG)
OnChange is called when the DAG is rebuilt and a new snapshot is needed.
func (*SnapshotHandler) Refresh ¶ added in v1.28.0
func (s *SnapshotHandler) Refresh()
Refresh is called when the EndpointsTranslator updates values in its cache.
type TracingConfig ¶ added in v1.25.0
type TracingConfig struct {
ExtensionServiceConfig
ServiceName string
OverallSampling float64
MaxPathTagLength uint32
CustomTags []*CustomTag
}