translation

package
v1.14.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2023 License: Apache-2.0 Imports: 25 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewCluster

func NewCluster(name string, mutationFunc ...ClusterMutator) (ciliumv2.XDSResource, error)

NewCluster creates a new Envoy cluster.

func NewClusterWithDefaults

func NewClusterWithDefaults(name string, mutationFunc ...ClusterMutator) (ciliumv2.XDSResource, error)

NewClusterWithDefaults same as NewCluster but has default mutation functions applied.

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 NewListener

func NewListener(name string, ciliumSecretNamespace string, tls map[model.TLSSecret][]string, mutatorFunc ...ListenerMutator) (ciliumv2.XDSResource, error)

NewListener creates a new Envoy listener with the given name. The listener will have both secure and insecure filters. Secret Discovery Service (SDS) is used to fetch the TLS certificates.

func NewListenerWithDefaults

func NewListenerWithDefaults(name string, ciliumSecretNamespace string, tls map[model.TLSSecret][]string, mutatorFunc ...ListenerMutator) (ciliumv2.XDSResource, error)

NewListenerWithDefaults same as NewListener but with default mutators applied.

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 NewVirtualHost

func NewVirtualHost(hostnames []string, httpsRedirect bool, hostNameSuffixMatch bool, httpRoutes []model.HTTPRoute, mutators ...VirtualHostMutator) (*envoy_config_route_v3.VirtualHost, error)

NewVirtualHost creates a new VirtualHost with the given host and routes.

func NewVirtualHostWithDefaults

func NewVirtualHostWithDefaults(hostnames []string, httpsRedirect bool, hostNameSuffixMatch bool, httpRoutes []model.HTTPRoute, 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.

Types

type ClusterMutator

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 WithOutlierDetection

func WithOutlierDetection(splitExternalLocalOriginErrors bool) ClusterMutator

WithOutlierDetection enables outlier detection on the cluster.

type ListenerMutator

func WithSocketOption

func WithSocketOption(tcpKeepAlive, tcpKeepIdleInSeconds, tcpKeepAliveProbeIntervalInSeconds, tcpKeepAliveMaxFailures int64) ListenerMutator

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.

  • Exact Match must have the highest priority
  • If multiple prefix matches are satisfied, the longest path is having higher priority

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, hostNameSuffixMatch bool) Translator

NewTranslator returns a new translator

type VirtualHostMutator

func WithMaxStreamDuration

func WithMaxStreamDuration(seconds int64) VirtualHostMutator

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL