56 lines
1.7 KiB
YAML
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
|