Files

56 lines
1.7 KiB
YAML

# Bootnode API durable storage — Base/SQLite on a PVC, continuously replicated
# to the Hanzo S3 (SeaweedFS) by a Litestream sidecar.
#
# Canonical store is Base/SQLite (HIP-0106). The SQLite file lives on a small
# block-storage PVC; Litestream streams its WAL to s3.lux.cloud for durability
# and point-in-time restore, so a rescheduled pod can rebuild from S3.
#
# Credentials are NOT in this manifest: Litestream reads the S3 secret access
# key from the shared `hanzo-s3-secret` (key `password`, access-key-id `hanzo`)
# — the same secret luxd / lux-mpc use for snapshot replication.
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: bootnode-api-data
namespace: bootnode
labels:
app: bootnode-api
component: api
brand: lux
spec:
accessModes:
- ReadWriteOnce
storageClassName: do-block-storage
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: ConfigMap
metadata:
name: bootnode-litestream
namespace: bootnode
labels:
app: bootnode-api
component: api
brand: lux
data:
# Litestream replicates the single SQLite DB on the shared data volume to the
# Hanzo S3 (SeaweedFS). Keys/secret come from env (see the sidecar in
# deployment-api.yaml); never inline credentials here.
litestream.yml: |
dbs:
- path: /data/bootnode/bootnode.db
replicas:
- type: s3
endpoint: https://s3.lux.cloud
bucket: lux-snapshots
path: bootnode/bootnode.db
region: us-east-1
force-path-style: true
# Stream the WAL frequently; retain a day of generations.
sync-interval: 10s
retention: 24h
snapshot-interval: 1h