Helm recipes: filer metadata on a claim through filer.data

enablePVC is ignored once filer.data is set, which the chart's defaults
always do, so the recipes rendered a hostPath for the filer store.
Claims now use the cluster default storage class instead of local-path.

Claude-Session: https://claude.ai/code/session_014apMEkkquAtAYp89paTkAT
Chris Lu committed 2026-09-02 23:55:19 -07:00
1 parent 5eb8ff8c1a
commit 1677e11d32
1 file changed
+15 -17
+15 -17
@@ -20,8 +20,7 @@ global:
master:
replicas: 3
data:
type: persistentVolumeClaim
storageClass: local-path
type: persistentVolumeClaim # the cluster's default storage class; add storageClass to pick one
size: 1Gi
volume:
@@ -29,15 +28,14 @@ volume:
dataDirs:
- name: data
type: persistentVolumeClaim
storageClass: local-path
size: 500Gi
maxVolumes: 0 # size the volume count from the disk
filer:
replicas: 2
enablePVC: true
storageClass: local-path
storage: 20Gi
data:
type: persistentVolumeClaim
size: 20Gi
s3:
enabled: true
@@ -56,7 +54,8 @@ How the pieces fit:
* `replicationPlacement` is three digits, `XYZ`: X extra copies in other data centers, Y in other racks of the same data center, Z on other servers of the same rack. Total copies are 1 + X + Y + Z, and you need at least that many volume servers in the matching places. Without rack or data center labels every volume server is in the same rack, so `001` needs two volume servers and `002` needs three. `enableReplication` sets both `master.defaultReplication` and `filer.defaultReplicaPlacement` to this value. See [[Replication]].
* `volume.replicas` is the number of volume server pods, one per node with the chart's default anti-affinity. It is independent of the replication digits except for the minimum above.
* `maxVolumes: 0` lets each volume server compute how many volumes fit on its disk. The chart's master defaults to 1000MB volumes (`master.volumeSizeLimitMB`); raise it to `30000` for large disks with few buckets, keep it small when you expect many buckets, since each bucket grows its own volumes.
* Master data on a claim keeps the cluster identity when a master pod is rescheduled. The chart defaults to `hostPath`, which does not follow the pod.
* Master and filer data on claims keep the cluster identity and the metadata when a pod is rescheduled. The chart defaults both to `hostPath`, which does not follow the pod. The older `filer.enablePVC` key is ignored once `filer.data` is set, so use `filer.data`.
* Claims use the cluster's default storage class. Add `storageClass` under a `data` block or a `dataDirs` entry to choose another, for example `local-path` on k3s.
* Two filers on the default LevelDB store [[sync with each other|Filer Store Replication]]. For three or more filers, or a lot of metadata, put the store in a database (next recipes).
* `s3.enableAuth` with `s3.credentials` writes the identities into the S3 config secret; the `read` identity gets random keys unless you set it too. `createBuckets` runs once as a post-install hook.
@@ -72,7 +71,7 @@ Expose it with `s3.ingress` or a `LoadBalancer` under `s3.service.type`. Grow th
## Single node for development
One of everything, on the cluster's default storage class, no authentication.
One of everything, no authentication.
```yaml
master:
@@ -88,8 +87,9 @@ volume:
maxVolumes: 0
filer:
enablePVC: true
storage: 5Gi
data:
type: persistentVolumeClaim
size: 5Gi
s3:
enabled: true
@@ -112,8 +112,7 @@ global:
master:
replicas: 3
data:
type: persistentVolumeClaim
storageClass: local-path
type: persistentVolumeClaim # the cluster's default storage class; add storageClass to pick one
size: 1Gi
volume:
@@ -121,15 +120,14 @@ volume:
dataDirs:
- name: data
type: persistentVolumeClaim
storageClass: local-path
size: 500Gi
maxVolumes: 0
filer:
replicas: 2
enablePVC: true
storageClass: local-path
storage: 20Gi
data:
type: persistentVolumeClaim
size: 20Gi
s3:
enabled: true
@@ -180,7 +178,7 @@ s3:
replicas: 3
```
The filer creates its table on first start. `WEED_LEVELDB2_ENABLED` must be turned off, since the chart enables it by default and two enabled stores is an error. The filers no longer need a claim, so `enablePVC` can stay off.
The filer creates its table on first start. `WEED_LEVELDB2_ENABLED` must be turned off, since the chart enables it by default and two enabled stores is an error. The filers no longer need a claim, so `filer.data` can stay at its default.
## Bare metal: node-local disks