Code Monkey home page Code Monkey logo

submariner's Introduction

Submariner

CII Best Practices Release Images Periodic Flake Finder

Submariner is a tool built to connect overlay networks of different Kubernetes clusters. While most testing is performed against Kubernetes clusters that have enabled Flannel/Calico/Canal/Weave/OpenShiftSDN, Submariner should be compatible with most CNI cluster network providers, as it utilizes off-the-shelf components to establish encrypted tunnels between each Kubernetes cluster.

Note that Submariner is in an early stage, and while we welcome usage and experimentation, it is quite possible that you could run into bugs.

Submariner is a Cloud Native Computing Foundation sandbox project.

Architecture

See the Architecture section of Submariner's website.

Network Path

The network path of Submariner varies depending on the origin/destination of the IP traffic. In all cases, traffic between two clusters will transit between the leader elected (in each cluster) gateway nodes, through ip xfrm rules. Each gateway node has a running Charon daemon which will perform IPsec keying and policy management.

When the source Pod is on a worker node that is not the elected gateway node, the traffic destined for the remote cluster will transit through the submariner VXLAN tunnel (vx-submariner) to the local cluster gateway node. On the gateway node, traffic is encapsulated in an IPsec tunnel and forwarded to the remote cluster. Once the traffic reaches the destination gateway node, it is routed in one of two ways, depending on the destination CIDR. If the destination CIDR is a Pod network, the traffic is routed via CNI-programmed network. If the destination CIDR is a Service network, then traffic is routed through the facility configured via kube-proxy on the destination gateway node.

Prerequisites

See the Prerequisites docs on Submariner's website.

Installation

Submariner is always deployed using a Go-based Kubernetes custom controller, called an Operator, that provides API-based installation and management. Deployment tools like the subctl command line utility and Helm charts wrap the Operator. The recommended deployment method is subctl, as it is currently the default in CI and provides diagnostic features.

See the Deplyment docs on Submariner's website.

Installation using subctl

Submariner provides the subctl CLI utility to simplify the deployment and maintenance of Submariner across your clusters.

See the subctl Deployment docs on Submariner's website.

Installation using Helm

See the Helm Deployment docs on Submariner's website.

Validate Submariner is Working

See the subctl verify docs and Automated Troubleshooting docs on Submariner's website.

Building and Testing

See the Building and Testing docs on Submariner's website.

Known Issues

See the Known Issues docs on Submariner's website.

Contributing

See the Development section of Submariner's website.

submariner's People

Contributors

aswinsuryan avatar billy99 avatar cyriltovena avatar deanlorenz avatar dependabot-preview[bot] avatar dependabot[bot] avatar dfarrell07 avatar dragonstuff avatar elevran avatar github-actions[bot] avatar gliptak avatar hunchback avatar jaanki avatar maayanf24 avatar mangelajo avatar manosnoam avatar mkimuram avatar mkolesnik avatar mpeterson avatar negashev avatar nyechiel avatar oats87 avatar pinikomarov avatar roytman avatar skitt avatar sridhargaddam avatar submariner-bot avatar tpantelis avatar vthapar avatar wangchenglong01 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.