Files
homelab/kubernetes/apps/libation/pvc.yaml
T
k.rennerandClaude Opus 4.7 3625f59a51 libation: cluster-native CronJob feeding the audiobookshelf-books PVC
Replaces the workstation-side Libation install with a daily CronJob that
runs the official rmcrackan/libation image headlessly. SLEEP_TIME=-1
makes the entrypoint do one scan+liberate pass and exit; the schedule
is handled by Kubernetes.

Lives in the audiobookshelf namespace because k8s PVCs are namespace-
scoped and we share /audiobooks with the audiobookshelf Deployment.
A small RWO ceph-block PVC (libation-config) holds AccountsSettings.json,
LibationContext.db, and the cover/search caches; an init container
seeds it once from the SOPS-encrypted bootstrap secret (sentinel-file
gated so token refreshes and DB updates persist across runs).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 15:00:04 +02:00

26 lines
939 B
YAML

# Libation's config dir holds AccountsSettings.json (Audible identity
# tokens, refreshed by Libation across runs), LibationContext.db
# (library state — what's been downloaded), the cover-image cache, the
# Lucene search index, and Settings.json. The PVC is seeded from a
# SOPS-encrypted Secret on first boot (sentinel file gate); after that
# Libation reads and writes it directly so token rotation persists.
#
# Books are written to the audiobookshelf-books PVC (already provisioned
# by the audiobookshelf seed Kustomization, RWX ceph-filesystem). We
# share the same namespace so the PVC reference is direct — k8s PVCs
# are namespace-scoped.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: libation-config
namespace: audiobookshelf
annotations:
kustomize.toolkit.fluxcd.io/prune: disabled
spec:
accessModes:
- ReadWriteOnce
storageClassName: ceph-block
resources:
requests:
storage: 2Gi