95 lines
3.3 KiB
YAML

# services/crypto/xmr-miner/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: monero-p2pool
namespace: crypto
labels: { app: monero-p2pool }
spec:
replicas: 1
selector:
matchLabels: { app: monero-p2pool }
template:
metadata:
labels: { app: monero-p2pool }
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: "crypto"
vault.hashicorp.com/agent-inject-secret-xmr-env: "kv/data/atlas/crypto/xmr-payout"
vault.hashicorp.com/agent-inject-template-xmr-env: |
{{- with secret "kv/data/atlas/crypto/xmr-payout" -}}
export XMR_ADDR="{{ .Data.data.address }}"
{{- end -}}
spec:
nodeSelector:
node-role.kubernetes.io/worker: "true"
serviceAccountName: crypto-vault-sync
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: hardware
operator: In
values: ["rpi4","rpi5"]
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 50
preference:
matchExpressions:
- key: hardware
operator: In
values: ["rpi4"]
initContainers:
- name: fetch-p2pool
image: alpine:3.20
command: ["/bin/sh","-c"]
args:
- |
set -euxo pipefail
apk add --no-cache curl tar openssl >/dev/null
test -n "${P2POOL_URL}"
echo "Downloading ${P2POOL_URL}"
curl -fsSL "${P2POOL_URL}" -o /tmp/p2pool.tgz
if [ -n "${P2POOL_SHA256}" ]; then
echo "${P2POOL_SHA256} /tmp/p2pool.tgz" | sha256sum -c -
fi
mkdir -p /opt/p2pool
tar -xzf /tmp/p2pool.tgz -C /opt/p2pool
ls -l /opt/p2pool
BIN="$(find /opt/p2pool -maxdepth 2 -type f -name 'p2pool*' | head -n1)"
test -n "${BIN}"
install -m0755 "${BIN}" /opt/p2pool/p2pool
env:
- name: P2POOL_URL
valueFrom: { configMapKeyRef: { name: xmr-miner-sources, key: P2POOL_URL } }
- name: P2POOL_SHA256
valueFrom: { configMapKeyRef: { name: xmr-miner-sources, key: P2POOL_SHA256, optional: true } }
volumeMounts:
- { name: p2pool-bin, mountPath: /opt/p2pool }
containers:
- name: monero-p2pool
image: debian:bookworm-slim
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c"]
args:
- |
set -eu
. /vault/secrets/xmr-env
exec /opt/p2pool/p2pool \
--host monerod.crypto.svc.cluster.local \
--rpc-port 18081 \
--zmq-port 18083 \
--stratum 0.0.0.0:3333 \
--wallet "${XMR_ADDR}"
ports:
- { name: stratum, containerPort: 3333, protocol: TCP }
readinessProbe:
tcpSocket: { port: 3333 }
initialDelaySeconds: 10
periodSeconds: 10
volumeMounts:
- { name: p2pool-bin, mountPath: /opt/p2pool }
volumes:
- name: p2pool-bin
emptyDir: {}