Skip to content

flomesh-io/ErieCanal

ErieCanal

GitHub GitHub go.mod Go version

GitHub release (latest by date including pre-releases) GitHub tag (latest SemVer pre-release) GitHub (Pre-)Release Date

ErieCanal is a Kubernetes Multi-Cluster Service API (MCS) implementation, and provides MCS, Ingress, Egress, and Gateway API for Kubernetes clusters.

ErieCanal is an implementation of Kubernetes Multi-Cluster Service API (MCS) that depends on a service mesh and Ingress to provide service registration and discovery capabilities across k8s clusters. When using ErieCanal as an MCS provider, it must be used in conjunction with osm-edge, which provides east-west traffic flow capabilities, while ErieCanal provides north-south traffic flow capabilities. ErieCanal also provides the ability to register and discover services across clusters. In the MCS multi-cluster mode, ErieCanal currently supports three traffic modes for Kubernetes clusters that join the ClusterSet: Locality, Failover, and ActiveActive.

In the Locality mode, which is the default configuration, traffic is scheduled based on proximity within the local cluster or can be scheduled to a specific cluster based on topology.In the ActiveActive mode, the cluster provides the same traffic processing capabilities as service export (ServiceExport) using load balancing. In the Failover mode, the importing service (ServiceImport) cluster provides disaster recovery capabilities for the exporting service (ServiceExport) cluster. ErieCanal's implementation does not require the underlying Kubernetes to use a special network and does not require a unified two-layer or three-layer network between the multi-cluster networks. Therefore, it is generally applicable to Kubernetes clusters of various types of networks.

Architecture


MCS Bridge - eBPF based approach (coming soon)

mcs bridge


ErieCanal + Service Mesh based approach (backward compatibility)

ErieCanal Architecture diagram


Install

This chart bootstraps a ErieCanal deployment on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • Kubernetes 1.19+

Installing the Chart

To install the chart with the release name ec run:

helm repo add ec https://ec.flomesh.io
helm install ec ec/erie-canal --namespace erie-canal --create-namespace

The command deploys ErieCanal on the Kubernetes cluster using the default configuration in namespace erie-canal and creates the namespace if it doesn't exist. The configuration section lists the parameters that can be configured during installation.

As soon as all pods are up and running, you can start to evaluate ErieCanal.

Uninstalling the Chart

To uninstall the ec deployment run:

helm uninstall ec --namespace erie-canal

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

helm install ec ec/erie-canal \
  --namespace erie-canal \
  --create-namespace \
  --set ec.image.pullPolicy=Always

Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

helm install ec ec/erie-canal \
  --namespace erie-canal \
  --create-namespace \
  -f values-override.yaml

Demos

Following the demo here, have a quick view of ErieCanal.