Documentation ¶
Overview ¶
Package translation building block for translation from model to CiliumEnvoyConfig, Service, etc. Translator is the interface to take the model and generate required CiliumEnvoyConfig, LoadBalancer Service, Endpoint, etc.
Additional, this package also contains a bare minimum constructors for common Envoy resources: - Cluster - Listener - HTTP Connection Manager - RouteConfiguration - VirtualHost
Each type of resource can be extended to support more features and use cases with mutation functions.
Index ¶
- func NewHTTPCluster(clusterName string, clusterServiceName string, mutationFunc ...ClusterMutator) (ciliumv2.XDSResource, error)
- func NewHTTPConnectionManager(name, routeName string, mutationFunc ...HttpConnectionManagerMutator) (ciliumv2.XDSResource, error)
- func NewRouteConfiguration(name string, virtualhosts []*envoy_config_route_v3.VirtualHost, ...) (ciliumv2.XDSResource, error)
- func NewTCPCluster(clusterName string, clusterServiceName string, mutationFunc ...ClusterMutator) (ciliumv2.XDSResource, error)
- func NewTCPClusterWithDefaults(clusterName string, clusterServiceName string, mutationFunc ...ClusterMutator) (ciliumv2.XDSResource, error)
- func NewVirtualHost(httpRoutes []model.HTTPRoute, param VirtualHostParameter, ...) (*envoy_config_route_v3.VirtualHost, error)
- func NewVirtualHostWithDefaults(httpRoutes []model.HTTPRoute, param VirtualHostParameter, ...) (*envoy_config_route_v3.VirtualHost, error)
- func WithXffNumTrustedHops() ...
- type ClusterMutator
- func WithClusterLbPolicy(lbPolicy int32) ClusterMutator
- func WithConnectionTimeout(seconds int) ClusterMutator
- func WithIdleTimeout(seconds int) ClusterMutator
- func WithOutlierDetection(splitExternalLocalOriginErrors bool) ClusterMutator
- func WithProtocol(protocolVersion HTTPVersionType) ClusterMutator
- type HTTPVersionType
- type HttpConnectionManagerMutator
- type ListenerMutator
- type RouteConfigurationMutator
- type SortableRoute
- type Translator
- type VirtualHostMutator
- type VirtualHostParameter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewHTTPCluster ¶
func NewHTTPCluster(clusterName string, clusterServiceName string, mutationFunc ...ClusterMutator) (ciliumv2.XDSResource, error)
NewHTTPCluster creates a new Envoy cluster.
func NewHTTPConnectionManager ¶
func NewHTTPConnectionManager(name, routeName string, mutationFunc ...HttpConnectionManagerMutator) (ciliumv2.XDSResource, error)
NewHTTPConnectionManager returns a new HTTP connection manager filter with the given name and route. Mutation functions can be passed to modify the filter based on the caller's needs.
func NewRouteConfiguration ¶
func NewRouteConfiguration(name string, virtualhosts []*envoy_config_route_v3.VirtualHost, mutators ...RouteConfigurationMutator) (ciliumv2.XDSResource, error)
NewRouteConfiguration returns a new route configuration for a given list of http routes.
func NewTCPCluster ¶
func NewTCPCluster(clusterName string, clusterServiceName string, mutationFunc ...ClusterMutator) (ciliumv2.XDSResource, error)
NewTCPCluster creates a new Envoy cluster.
func NewTCPClusterWithDefaults ¶
func NewTCPClusterWithDefaults(clusterName string, clusterServiceName string, mutationFunc ...ClusterMutator) (ciliumv2.XDSResource, error)
NewTCPClusterWithDefaults same as NewTCPCluster but has default mutation functions applied. currently this is only used for TLSRoutes to create a passthrough proxy
func NewVirtualHost ¶
func NewVirtualHost(httpRoutes []model.HTTPRoute, param VirtualHostParameter, mutators ...VirtualHostMutator) (*envoy_config_route_v3.VirtualHost, error)
NewVirtualHost creates a new VirtualHost with the given host and routes.
func NewVirtualHostWithDefaults ¶
func NewVirtualHostWithDefaults(httpRoutes []model.HTTPRoute, param VirtualHostParameter, mutators ...VirtualHostMutator) (*envoy_config_route_v3.VirtualHost, error)
NewVirtualHostWithDefaults is same as NewVirtualHost but with a few default mutator function. If there are multiple http routes having the same path matching (e.g. exact, prefix or regex), the incoming request will be load-balanced to multiple backends equally.
func WithXffNumTrustedHops ¶ added in v1.15.0
func WithXffNumTrustedHops() func(*httpConnectionManagerv3.HttpConnectionManager) *httpConnectionManagerv3.HttpConnectionManager
Types ¶
type ClusterMutator ¶
type ClusterMutator func(*envoy_config_cluster_v3.Cluster) *envoy_config_cluster_v3.Cluster
func WithClusterLbPolicy ¶
func WithClusterLbPolicy(lbPolicy int32) ClusterMutator
WithClusterLbPolicy sets the cluster's load balancing policy. https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_balancing/load_balancers
func WithConnectionTimeout ¶
func WithConnectionTimeout(seconds int) ClusterMutator
WithConnectionTimeout sets the cluster's connection timeout.
func WithIdleTimeout ¶
func WithIdleTimeout(seconds int) ClusterMutator
WithIdleTimeout sets the cluster's connection idle timeout.
func WithOutlierDetection ¶
func WithOutlierDetection(splitExternalLocalOriginErrors bool) ClusterMutator
WithOutlierDetection enables outlier detection on the cluster.
func WithProtocol ¶ added in v1.15.0
func WithProtocol(protocolVersion HTTPVersionType) ClusterMutator
type HTTPVersionType ¶ added in v1.15.0
type HTTPVersionType int
const ( HTTPVersionDownstream HTTPVersionType = -1 HTTPVersionAuto HTTPVersionType = 0 HTTPVersion1 HTTPVersionType = 1 HTTPVersion2 HTTPVersionType = 2 HTTPVersion3 HTTPVersionType = 3 )
type HttpConnectionManagerMutator ¶
type HttpConnectionManagerMutator func(*httpConnectionManagerv3.HttpConnectionManager) *httpConnectionManagerv3.HttpConnectionManager
type ListenerMutator ¶
type ListenerMutator func(*envoy_config_listener.Listener) *envoy_config_listener.Listener
func WithProxyProtocol ¶ added in v1.15.0
func WithProxyProtocol() ListenerMutator
func WithSocketOption ¶
func WithSocketOption(tcpKeepAlive, tcpKeepIdleInSeconds, tcpKeepAliveProbeIntervalInSeconds, tcpKeepAliveMaxFailures int64) ListenerMutator
type RouteConfigurationMutator ¶
type RouteConfigurationMutator func(*envoy_config_route_v3.RouteConfiguration) *envoy_config_route_v3.RouteConfiguration
type SortableRoute ¶
type SortableRoute []*envoy_config_route_v3.Route
SortableRoute is a slice of envoy Route, which can be sorted based on matching order as per Ingress requirement.
The sorting order is as follows, continuing on ties, and also noting that when Exact, Regex, or Prefix matches are unset, their length is zero:
- Exact Match length
- Regex Match length
- Prefix match length
- Method match
- Number of header matches
- Number of query parameter matches
As Envoy route matching logic is done sequentially, we need to enforce such sorting order.
func (SortableRoute) Len ¶
func (s SortableRoute) Len() int
func (SortableRoute) Less ¶
func (s SortableRoute) Less(i, j int) bool
func (SortableRoute) Swap ¶
func (s SortableRoute) Swap(i, j int)
type Translator ¶
type Translator interface {
Translate(model *model.Model) (*ciliumv2.CiliumEnvoyConfig, *v1.Service, *v1.Endpoints, error)
}
Translator is the interface to take the model and generate required CiliumEnvoyConfig, LoadBalancer Service, Endpoint, etc.
Different use cases (e.g. Ingress, Gateway API) can provide its own generation logic.
func NewTranslator ¶
func NewTranslator(name, namespace, secretsNamespace string, enforceHTTPs bool, useProxyProtocol bool, hostNameSuffixMatch bool, idleTimeoutSeconds int) Translator
NewTranslator returns a new translator
type VirtualHostMutator ¶
type VirtualHostMutator func(*envoy_config_route_v3.VirtualHost) *envoy_config_route_v3.VirtualHost
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package ingress contains the translation logic from Ingress to CiliumEnvoyConfig and related resources.
|
Package ingress contains the translation logic from Ingress to CiliumEnvoyConfig and related resources. |