Submariner provides a Go-based Kubernetes custom controller, called an Operator,
that provides easy API-based installation and management. A command line utility,
subctl, wraps the Operator to aid users with manual
deployments and easy experimentation.
subctl greatly simplifies the deployment of Submariner, and is therefore the recommended deployment
method. For complete information about
subctl, please refer to this page.
In addition to Operator and
subctl, Submariner also provides Helm Charts.
Download the subctl binary and make it available on your PATH.
curl -Ls https://get.submariner.io | bash export PATH=$PATH:~/.local/bin echo export PATH=\$PATH:~/.local/bin >> ~/.profile
If you have Go installed, you can use that instead:
go install github.com/submariner-io/submariner-operator/pkg/subctl
(and ensure your
go/bin directory is on your
The Broker is a set of Custom Resource Definitions (CRDs) backed by the Kubernetes datastore. The Broker must be deployed on a cluster whose Kubernetes API is accessible by all of the participating clusters.
subctl deploy-broker --kubeconfig <PATH-TO-KUBECONFIG-BROKER>
This will create:
ClusterCRDs in the cluster.
It also generates the
broker-info.subm file which contains the following elements:
The cluster in which the Broker is deployed can also participate in the dataplane connectivity with other clusters, but it will need to be joined (see following step).
For each cluster you want to join, issue the following command:
subctl join --kubeconfig <PATH-TO-JOINING-CLUSTER> broker-info.subm --clusterid <ID>
subctl will automatically discover as much as it can, and prompt the user for any missing necessary information.
Note that each cluster must have a unique cluster ID; the cluster ID can be specified, or otherwise is going to be generated by default
based on the cluster name in the