Skip to main content
Version: v1.0.0

Concepts

Trench

A Trench defines the extension of an external external network into the Kubernetes cluster. Inside each trench the traffic can be split to take different logical and physical paths through the cluster.

Configuration

NameTypeDescriptionRequiredDefault
NamestringName of the Trenchyes

Conduit

The Conduit defines a physical path of chained network services the traffic will pass before it can be consumed by the target application. The Traffic is assigned to the Conduit by Stream. Currently, the only supported network service function is stateless load balancing.

The picture below describes 2 conduits. the left one is a stateless load-balancer and the right one is a SCTP network service. The left user pod has subscribed to one or more stream the stateless load-balancer is handling, so it is connected to it via a new network interface. The right user pod has subscribed to streams the stateless load-balancer and the SCTP network services are handling, so it is connected to them via two new network interfaces, one connected to the stateless load-balancer network service, and the other one connected to the SCTP network service.

Overview-Conduit

Configuration

NameTypeDescriptionRequiredDefault
namestringName of the Conduityes
trenchstringName of the Trench the Conduit belongs toyes
destination-port-nats[]PortNatList of destination ports to NAT.no

PortNat

NameTypeDescriptionRequiredDefault
portuint16Destination Port exposed by the service (exposed in flows). Traffic containing this property will be NATted.yes
target-portuint16Represents the port the traffic will be NATted to. Targets will receive traffic on that port.yes
vips[]stringVIPs exposed by the service (exposed in flows). Traffic containing this property will be NATted.yes
protocolstringProtocol exposed by the service (exposed in flows). Traffic containing this property will be NATted.yes

Stream/Flow

Overview-Stream-Flow

Stream

The Stream reflects a logical grouping of traffic flows. The stream points out the conduit the traffic will pass before it can be consumed by the target application.

Stream is a logical configuration entity, which cannot directly be found in the payload traffic.

The stream is the "network service entity" to be known and referred in the target application. The different target application pods can sign up for consumption of traffic from different streams. When more target pods are signed up for the same stream the traffic will be load-balanced between the pods.

Notice that a target pod concurrently only can sign up for streams belonging to the same trench.

Configuration

NameTypeDescriptionRequiredDefault
namestringName of the Streamyes
conduitstringName of the Conduit the Stream belongs toyes
max-targetsintMax number of targets the stream supportsyes

Flow

The Flow classifies incoming traffic based on the 5-tuple in the IP-header containing: Source and destination IP-addresses, source and destination ports and protocol type.

The traffic that match the classification are mapped to a logically stream.

It is allowed to configure flows having overlapping IP-addresses and port ranges. In this case the priority setting is used to decide which flow will be tried matched first.

Traffic that do not match the classification for any flow will be dropped.

Notice that destination IP-address is provided by referencing one or more Vip.

Configuration

NameTypeDescriptionRequiredDefault
NamestringName of the Flowyes
source-subnets[]stringyes
destination-port-ranges[]stringyes
source-port-ranges[]stringyes
protocols[]stringyes
vips[]stringyes
priorityintyes
streamstringName of the Stream the Flow belongs toyes

VIP

The Vip defines a virtual IP address towards which external traffic can be attracted and load-balanced over a scaling set of target application pods.

As soon as a Vip has been applied to a working trench and attractor the VIP address will be announced by all FEs using BGP.

Configuration

NameTypeDescriptionRequiredDefault
namestringName of the VIPyes
addressstringThe virtual IPaddress. Both ipv4 and ipv6 addresses are supported. The VIP address must be a valid network prefix.yes
trenchstringName of the Trench the VIP belongs toyes

Attractor

The Attractor defines a group of Front-Ends (FEs) sharing commonalities, for example; external interface to utilize, IP-address assignment method, gateway(s) to establish connection with, VIP-addresses to announce etc.

Configuration

NameTypeDescriptionRequiredDefault
namestringName of the Attractoryes
vips[]stringyes
gateways[]stringyes
trenchstringName of the Trench the Attractor belongs toyes

Gateway

The Gateway defines how to establish connectivity with an external gateway such as; which IP-address, routing- and supervision-protocol(s) to use. The Gateway can also define specific protocol settings that differ from the default etc.

Notice that it normally is good practice and often required have "mirrored" settings shared between the external gateway and the Meridio FrontEnds to get the BGP and BFD sessions established. The used "retry" and "time-out" settings will dictate the time it takes traffic to fail-over in case of a link failure.

Notice that when static is chosen as routing protocol BFD link-supervision is by default turned on with default settings.

Note: In the Alpha release BGP with BFD is not a supported option.

Configuration

NameTypeDescriptionRequiredDefault
namestringName of the Gatewayyes
addressstringyes
remote-asnintyes
local-asnintyes
remote-portintyes
local-portintyes
ip-familystringyes
bfdboolyes
protocolstringyes
hold-timeintyes
min-txintyes
min-rxintyes
multiplierintyes
trenchstringName of the Trench the Gateway belongs toyes
bgp-authBgpAuthEnables BGP authentication.no

BgpAuth

NameTypeDescriptionRequiredDefault
sourcestringName of the kubernetes Secret object containing the pre-shard key to be used for BGP authentication.yes
keystringThe key in the kubernetes Secret object's data section identifying the pre-shared key to be used for BGP authentication.yes

Note: Adding the kubernetes Secret object is outside the scope of Meridio, but it must share the kubernetes namespace with the Trench.