--- # tasks file for monero - name: Create Monero namespace k8s: state: present definition: apiVersion: v1 kind: Namespace metadata: name: monero - name: Create PVC for Monero k8s: state: present definition: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: data namespace: monero spec: storageClassName: r720-nfs-client accessModes: - ReadWriteOnce resources: requests: storage: 512Gi - name: Create PVC for P2Pool k8s: state: present definition: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: p2pool namespace: monero spec: storageClassName: r720-nfs-client accessModes: - ReadWriteOnce resources: requests: storage: 64Gi - name: Create a Tor instance for Monerod k8s: definition: apiVersion: tor.k8s.torproject.org/v1alpha2 kind: Tor metadata: name: tor namespace: monero - name: Create Deployment for Monerod when: setup k8s: definition: apiVersion: v1 kind: Deployment metadata: name: monerod namespace: monero spec: replicas: 1 selector: matchLabels: app: monerod template: metadata: labels: app: monerod spec: containers: - name: monerod image: nginx imagePullPolicy: IfNotPresent resources: requests: memory: 2Gi ports: - containerPort: 18080 - containerPort: 18081 - containerPort: 18083 - containerPort: 18084 volumeMounts: - name: data mountPath: /data - name: p2pool image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 3333 - containerPort: 37889 volumes: - name: data persistentVolumeClaim: claimName: data - name: Create Service for Monero k8s: definition: apiVersion: v1 kind: Service metadata: name: monerod namespace: monero spec: selector: app: monerod ports: - port: 18080 name: p2p - port: 18081 name: rpc - port: 18083 name: zmq - port: 18084 name: anonp2p type: ClusterIP - name: Create Service for P2Pool k8s: definition: apiVersion: v1 kind: Service metadata: name: p2pool namespace: monero spec: selector: app: p2pool ports: - port: 3333 name: mine - port: 37889 name: p2p type: LoadBalancer - name: Create OnionService k8s: definition: apiVersion: tor.k8s.torproject.org/v1alpha2 kind: OnionService metadata: name: rpc namespace: monero spec: version: 3 rules: - port: number: 18081 backend: service: name: monerod port: number: 18081 - name: Create OnionService k8s: definition: apiVersion: tor.k8s.torproject.org/v1alpha2 kind: OnionService metadata: name: p2p namespace: monero spec: version: 3 rules: - port: number: 18084 backend: service: name: monerod port: number: 18084 - name: Create OnionService k8s: definition: apiVersion: tor.k8s.torproject.org/v1alpha2 kind: OnionService metadata: name: mining namespace: monero spec: version: 3 rules: - port: number: 3333 backend: service: name: p2pool port: number: 3333 - name: Create OnionService k8s: definition: apiVersion: tor.k8s.torproject.org/v1alpha2 kind: OnionService metadata: name: p2poolp2p namespace: monero spec: version: 3 rules: - port: number: 37889 backend: service: name: p2pool port: number: 37889 - name: Get p2p OnionService info kubernetes.core.k8s_info: api_version: tor.k8s.torproject.org/v1alpha2 kind: OnionService namespace: monero field_selectors: - metadata.name=p2p register: p2p_onionservice - name: Get p2pool OnionService info kubernetes.core.k8s_info: api_version: tor.k8s.torproject.org/v1alpha2 kind: OnionService namespace: monero field_selectors: - metadata.name=p2poolp2p register: p2pool_onionservice - name: Get Tor Service info kubernetes.core.k8s_info: api_version: v1 kind: Service namespace: monero field_selectors: - metadata.name=tor-tor-svc register: tor_svc - name: Edit Deployment for Monerod k8s: definition: apiVersion: v1 kind: Deployment metadata: name: monerod namespace: monero spec: replicas: 1 selector: matchLabels: app: monerod template: metadata: labels: app: monerod spec: containers: - name: monerod image: ericomeehan/monerod:latest imagePullPolicy: Always command: - monerod args: - "--proxy={{ tor_svc.resources[0].spec.clusterIP }}:9050" - "--p2p-bind-ip=0.0.0.0" - "--p2p-bind-port=18080" - "--rpc-bind-ip=0.0.0.0" - "--rpc-bind-port=18081" - "--tx-proxy=tor,{{ tor_svc.resources[0].spec.clusterIP }}:9050" - "--anonymous-inbound={{ p2p_onionservice.resources[0].status.hostname }}:18084,0.0.0.0:18084" - "--data-dir=/data" - "--zmq-pub=tcp://127.0.0.1:18083" - "--non-interactive" - "--no-igd" - "--confirm-external-bind" resources: requests: memory: 2Gi ports: - containerPort: 18080 - containerPort: 18081 - containerPort: 18083 - containerPort: 18084 volumeMounts: - name: monerod mountPath: /data - name: p2pool image: ericomeehan/p2pool:latest imagePullPolicy: IfNotPresent command: - p2pool args: - "--host" - "127.0.0.1" - "--rpc-port" - "18081" - "--wallet" - "{{ monero_p2pool_wallet_address }}" - "--stratum" - "0.0.0.0:3333" - "--p2p" - "0.0.0.0:37889" - "--addpeers" - "65.21.227.114:37889" - "--socks5" - "{{ tor_svc.resources[0].spec.clusterIP }}:9050" - "--no-dns" - "--no-upnp" - "--onion-address" - "{{ p2pool_onionservice.resources[0].status.hostname }}" ports: - containerPort: 3333 - containerPort: 37889 volumeMounts: - name: p2pool mountPath: /home/p2pool volumes: - name: monerod persistentVolumeClaim: claimName: data - name: p2pool persistentVolumeClaim: claimName: p2pool