Skip to content

Latest commit

 

History

History

docs

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

CRDs

With monero-operator you'll have access to three custom resource definitions:

  • MoneroNodeSet: set of monero nodes that share a similar configuration
  • MoneroNetwork: set of monero node sets that form a cluster of interconnected nodes
  • MoneroMiningNodeSet: a set of monero mining nodes that perform either solo or pooled mining

MoneroNodeSet

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 example tekton.dev/v1beta1.
  • kind - Identifies this resource object as a MoneroNode object.
  • metadata - Specifies metadata that uniquely identifies the MoneroNode object. For example, a name.
  • spec - Specifies the configuration information for this MoneroNode object. This must include:
    • replicas - number of pods to have running monerod
    • hardAntiAffinity - force pods to land on different underlying machines
    • tor - whether the tor sidecar should be included or not to make it available over Tor as a hidden service
    • monerod - 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 monerod
      • args: 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

MoneroNetwork

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 example tekton.dev/v1beta1.
  • kind - Identifies this resource object as a MoneroNode object.
  • metadata - Specifies metadata that uniquely identifies the MoneroNode object. For example, a name.
  • spec - Specifies the configuration information for this MoneroNode 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

MoneroMiningNodeSet

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 example tekton.dev/v1beta1.
  • kind - Identifies this resource object as a MoneroNode object.
  • metadata - Specifies metadata that uniquely identifies the MoneroNode object. For example, a name.
  • spec - Specifies the configuration information for this MoneroNode 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