meridio

module
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2024 License: Apache-2.0

README

Meridio

GitHub release Build Status Go Reference go.mod version Go Report Card GitHub stars GitHub CVE

Meridio is an Open Source project providing capabilities to facilitate attraction and distribution of external traffic within Kubernetes. It operates on layer 3/4 to provide traffic distribution via so-called secondary networking upholding separation from the traffic distributed on the default "primary" network within the cluster.

In order to attract traffic towards different services exposed by user applications, service addresses (VIPs) are announced to gateways via different kinds of routing protocols monitored by link-supervision mechanisms available in Meridio.

In addition, Meridio enables development and usage of highly configurable network services thanks to traffic classifiers which allows users to separate the traffic into multiple groups. For now, only a TCP/UDP/SCTP stateless (Maglev) load-balancer is supported as network service.

Through an gRPC API hosted in a sidecar container, user applications can control at runtime external networks and network services attached to the pod, and thus start or stop traffic towards the pod.

Overview

Getting Started

Features

Secondary Networking

Isolation of the traffic and the network is a key aspect for Meridio, it improves the resiliency, the security, the decongestion and the minimization of the traffic. In addition, each network can have its own specificities and capabilities provided via different dataplane methods (VPP, OVS, Kernel, accelerated network...) which can carry exotic protocols. Meridio is for now, providing dataplane only for TCP, UDP and SCTP traffic on IPv4 and IPv6.

External Traffic Attraction

Announcing service-addresses (VIP-addresses) to the external gateways permits the traffic to be attracted towards the different services exposed by the target applications. Frontend services provide different connectivity mechanisms such as VLANs or host network interfaces to connect the network services to the gateways. In addition, Multus can offer decoupling of connectivity mechanisms while supplying a whole variety of network interfaces through CNI plugins. To announce the service and ensure the link-supervision, routing protocols are used. For now, BGP and Static BFD are supported.

Network Services

Development of new network services with more or different capabilities (network acceleration, SCTP load-balancing...) is possible within Meridio. As the current default network service, a no-NAT stateless Load-Balancer is offered by Meridio. It provides traffic classification (based on 5-tuple) to steer traffic into multiple different instances of the network service applications can subscribe to.

Runtime Configuration

Meridio users have the flexibility to adjust the network services on the fly as they desire. Traffic attractors, streams gathering traffic into logical groups and traffic classifiers (flows) can be added, removed and updated without any redeployment of the resources, and with no traffic disturbance. Individually, each user pods have the ability to select the traffic to consume at runtime which will produce secondary network reorganization to cover the user pods needs and requests.

Community

Slack

The team is reachable on slack for any question, feedback or help: Slack

Events

Prerequisites

To run Meridio, the following are required:

  • Kubernetes 1.21+
  • Spire
  • Network Service Mesh 1.5+
  • Linux Kernel 5.15+

Directories

Path Synopsis
api
v1
Package v1 contains API Schema definitions for the meridio v1 API group +kubebuilder:object:generate=true +groupName=meridio.nordix.org
Package v1 contains API Schema definitions for the meridio v1 API group +kubebuilder:object:generate=true +groupName=meridio.nordix.org
v1alpha1
Package v1alpha1 contains API Schema definitions for the meridio v1alpha1 API group
Package v1alpha1 contains API Schema definitions for the meridio v1alpha1 API group
cmd
nsp
examples
target Module
pkg
ambassador/tap/conduit/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
ambassador/tap/stream/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
ambassador/tap/trench/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
ambassador/tap/types/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
configuration/manager
Package manager provides a server implementation of the ConfigurationManager service of the Network Service Platform (NSP) API.
Package manager provides a server implementation of the ConfigurationManager service of the Network Service Platform (NSP) API.
configuration/manager/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
configuration/reader
Package reader provides an implementation to read the meridio configmap and convert it to Network Service Platform (NSP) API stucture instances.
Package reader provides an implementation to read the meridio configmap and convert it to Network Service Platform (NSP) API stucture instances.
ipam/trench/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
log
nat
nsm
nsm/interfacemonitor
Package interfacemonitor contains code implementing NetworkServiceServer and NetworkServiceClient to adverstise a listener when an nsm interface has been created or removed
Package interfacemonitor contains code implementing NetworkServiceServer and NetworkServiceClient to adverstise a listener when an nsm interface has been created or removed
nsm/interfacename
Package interfacename contains code implementing NetworkServiceServer and NetworkServiceClient to generate and set the name of the interface in the mechanism and the mechanism preferences of the requests
Package interfacename contains code implementing NetworkServiceServer and NetworkServiceClient to generate and set the name of the interface in the mechanism and the mechanism preferences of the requests
nsm/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
nsp
nsp/types/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
test

Jump to

Keyboard shortcuts

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