Skip to content

feat(bucket): extend bucket application with locking, storage pool selection, and user management #2116

@kvaps

Description

@kvaps

Summary

Extend the bucket application and SeaweedFS configuration to support object locking, storage pool selection, and flexible user access management.

Tasks

1. Add WORM for the default pool in SeaweedFS

Currently, -worm BucketClass is generated for each named storage pool, but the default (main) pool also needs a WORM-enabled BucketClass.

2. Rename BucketClass suffix wormlock

Rename the -worm suffix to -lock across all generated BucketClass resources for consistency and clarity.

3. Extend the bucket application values schema

The bucket application should support the following configuration:

locking: true|false       # provisions bucket from the `-lock` BucketClass
storagePool: <name>       # selects a specific BucketClass (by storage pool name)
users:
  <name>:                 # creates a BucketAccess with the appropriate BucketAccessClass
    readonly: true|false
  <name>:
    readonly: true|false

Details:

  • locking: true — creates BucketClaim referencing the -lock BucketClass (with object lock enabled)
  • storagePool — allows selecting a specific storage pool's BucketClass instead of the default
  • users — replaces the current hardcoded pair of BucketAccess resources (default + readonly) with a dynamic map, where each entry creates a BucketAccess in the corresponding BucketAccessClass (readwrite or readonly depending on the readonly flag)

Current State

  • BucketClass with -worm suffix is generated per pool in packages/extra/seaweedfs/templates/storage-pool-bucket-classes.yaml
  • Bucket app (packages/apps/bucket/) currently has empty values.yaml and hardcodes a single BucketClaim + two BucketAccess resources (default and readonly)

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions