With monero-operator
you'll have access to three custom resource definitions:
MoneroNodeSet
: set of monero nodes that share a similar configurationMoneroNetwork
: set of monero node sets that form a cluster of interconnected nodesMoneroMiningNodeSet
: a set of monero mining nodes that perform either solo or pooled mining
The MoneroNodeSet CRD provides one with the ability of saying "I want an x number of nodes that looks like this", and then having that materializing behind the scenes.
MoneroNodeSet
|
'--- service
'--- statefulset -- controllerrevision -- {pod1, ..., podN}
| |
pvc pvc
Its definition supports the following fields:
apiVersion
- Specifies the API version, for exampletekton.dev/v1beta1
.kind
- Identifies this resource object as aMoneroNode
object.metadata
- Specifies metadata that uniquely identifies theMoneroNode
object. For example, aname
.spec
- Specifies the configuration information for thisMoneroNode
object. This must include:replicas
- number of pods to have running monerodhardAntiAffinity
- force pods to land on different underlying machinestor
- whether thetor
sidecar should be included or not to make it available over Tor as a hidden servicemonerod
- Specifies the configuration for the monero daemon and details like related proxies for non-clearnet usage.image
: image to use for launching the pod with monerodargs
: extra configuration to be passed down to monerod. This is a free-form list of arguments to be passed to monerod.
For instance:
kind: MoneroNodeSet
apiVersion: utxo.com.br/v1alpha1
metadata:
name: node-set
spec:
replicas: 5
tor: true
monerod:
image: utxobr/monerod:v0.17.0.2
args:
- --limit-rate-up=128000
The MoneroNetwork CRD provides one with the ability of saying "I want a network of inter-connected monero nodes", and then having that materializing behind the scenes.
MoneroNetwork
|
'--- MoneroNodeSet-1 (pointing at set-2 and set-3)
'--- MoneroNodeSet-2 (pointing at set-1 and set-3)
'--- MoneroNodeSet-3 (pointing at set-1 and set-2)
The difference between MoneroNodeSet
and MoneroNetwork
is that in the first
(nodeset) there's no difference in the configuration passed to each one of the
nodes in the set (they're all configured the same). In the case of the network
type, the nodes are configured independently so that each one if aware of each
other.
Having each node connected to each other, we're able to form completely private networks (great for testing).
Its definition supports the following fields:
apiVersion
- Specifies the API version, for exampletekton.dev/v1beta1
.kind
- Identifies this resource object as aMoneroNode
object.metadata
- Specifies metadata that uniquely identifies theMoneroNode
object. For example, aname
.spec
- Specifies the configuration information for thisMoneroNode
object. This must include:monerod
- Specifies the configuration for the monero daemon and details like related proxies for non-clearnet usage.
For instance:
kind: MoneroNetwork
apiVersion: utxo.com.br/v1alpha1
metadata:
name: regtest
spec:
replicas: 3
template:
spec:
monerod:
image: utxobr/monerod:v0.17.0.2
args:
- --regtest
- --limit-rate-up=128000
The MoneroMiningNodeSet CRD provides one with the ability of saying "I want x nodes whole sole purpose is mining", and then having that materializing behind the scenes.
MoneroMiningNodeSet
|
'--- deployment -- replicaset -- {pod1, ..., podN}
'--- configmap | |
| |
mounts mounts
configmap configmap
Its definition supports the following fields:
apiVersion
- Specifies the API version, for exampletekton.dev/v1beta1
.kind
- Identifies this resource object as aMoneroNode
object.metadata
- Specifies metadata that uniquely identifies theMoneroNode
object. For example, aname
.spec
- Specifies the configuration information for thisMoneroNode
object. This must include:xmrig
- Specifies the configuration to be passsed for the
For instance,
kind: MoneroMiningNodeSet
apiVersion: utxo.com.br/v1alpha1
metadata:
name: miners
spec:
replicas: 5
xmrig:
image: utxobr/xmrig:v6.12.1
config:
cpu: true
opencl: false
cuda: false
pools:
- url: pool.supportxmr.com:443
user: 891B5keCnwXN14hA9FoAzGFtaWmcuLjTDT5aRTp65juBLkbNpEhLNfgcBn6aWdGuBqBnSThqMPsGRjWVQadCrhoAT6CnSL3
pass: $(pod.name)
keepalive: true
tls: true