submariner

command module
v0.10.0-m2 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2021 License: Apache-2.0 Imports: 36 Imported by: 0

README

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 any CNI cluster network provider, as it utilizes off-the-shelf components to establish encrypted tunnels between each Kubernetes cluster.

Note that Submariner is in the pre-alpha stage, and should not be used for production purposes. 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 on 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 deployed and manged by its Operator. The Operator can be deployed directly, or by using Submariner's Helm Charts, or by using Submariner's subctl CLI helper utility. subctl is the recommended deployment method because it has the most refined deployment user experience and additionally provides testing and bug-diagnosing capabilities.

Installation using subctl

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

See the subctl docs on Submariner's website.

Installation using Helm

See the Helm section on Submariner's website.

Validate Submariner is Working

See the subctl verify docs on Submariner's website.

Building and Testing

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

Known Issues/Notes

OpenShift Notes

When running in OpenShift, Submariner needs to grant the appropriate security context for the service accounts (SAs):

oc adm policy add-scc-to-user privileged system:serviceaccount:submariner:submariner-routeagent
oc adm policy add-scc-to-user privileged system:serviceaccount:submariner:submariner-gateway

Contributing

See the For Developers section on Submariner's website.

Documentation

Overview

SPDX-License-Identifier: Apache-2.0

Copyright Contributors to the Submariner project.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Directories

Path Synopsis
pkg
apis/submariner.io/v1
+groupName=submariner.io SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
+groupName=submariner.io SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cable
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cable/fake
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cable/libreswan
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cable/vxlan
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cable/wireguard
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cableengine
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cableengine/fake
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cableengine/healthchecker
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cableengine/healthchecker/fake
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cableengine/syncer
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
cidr
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
client/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
client/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
client/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
client/clientset/versioned/typed/submariner.io/v1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
client/clientset/versioned/typed/submariner.io/v1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
controllers/datastoresyncer
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
controllers/tunnel
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
endpoint
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
event
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
event/controller
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
event/logger
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
event/testing
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
globalnet
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
globalnet/controllers
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
globalnet/controllers/ipam
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
globalnet/controllers/iptables
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
ipam
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
iptables
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
iptables/fake
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
natdiscovery
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
netlink
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
netlink/fake
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
networkplugin-syncer
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
networkplugin-syncer/handlers/ovn
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
networkplugin-syncer/handlers/ovn/nbctl
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
pod
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
routeagent_driver
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
routeagent_driver/cabledriver
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
routeagent_driver/cni
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
routeagent_driver/constants
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
routeagent_driver/environment
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
routeagent_driver/handlers/kubeproxy
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
routeagent_driver/handlers/ovn
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
routeagent_driver/iptables
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
types
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
util
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
util/clusterfiles
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
apis Module
test
e2e/cluster
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
e2e/dataplane
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
e2e/framework
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
e2e/redundancy
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.
SPDX-License-Identifier: Apache-2.0 Copyright Contributors to the Submariner project.

Jump to

Keyboard shortcuts

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