Initial support for running a quorum k8s network across multiple clusters.
To run a multi-cluster Quorum k8s network, a quorum network must initially be started in a single cluster and the genesis.json needs to be shared with all other cluster that wish to connect.
There is a new (optional) entry in the qubernetes config external-nodes, e.g.
This is the information that a cluster needs to connect to another cluster. There is a qctl command to obtain this info from inside a cluster, e.g. qctl ls nodes --asexternal -b --node-ip=$(minikube ip)
If cluster A (C-A) wishes to add nodes from cluster B (C-B), C-A must:
Obtain its running node information as an external node, e.g. qctl ls nodes --asexternal -b --node-ip=$(minikube ip) and give this it C-A.
C-A must add C-B's external_node info to its qubernetes config and generate the appropriate resources, qctl generate network --update.
Once C-A has been deploy, C-A must do the same: obtain the external_nodes info for its running nodes, and share that with C-B.
When C-B has updated its qubernetes config with C-A external_nodes and redeployed, the nodes should be able to connect.
note: currently only supporting NodePort so the external_node info must be obtained from a running cluster, and note the NodePort may change if the node goes down.
todo: Ingress support should be implemented next, so that the external_node info will not change if a node goes down and is restarted.
Initial support for running a quorum k8s network across multiple clusters.
To run a multi-cluster Quorum k8s network, a quorum network must initially be started in a single cluster and the
genesis.json
needs to be shared with all other cluster that wish to connect.There is a new (optional) entry in the qubernetes config
external-nodes
, e.g.This is the information that a cluster needs to connect to another cluster. There is a
qctl
command to obtain this info from inside a cluster, e.g.qctl ls nodes --asexternal -b --node-ip=$(minikube ip)
If cluster A (C-A) wishes to add nodes from cluster B (C-B), C-A must:
qctl ls nodes --asexternal -b --node-ip=$(minikube ip)
and give this it C-A.external_node
info to its qubernetes config and generate the appropriate resources,qctl generate network --update
.external_node
info will not change if a node goes down and is restarted.