Skip to content

Add ocp4_workload_seaweedfs role for SeaweedFS S3-compatible storage#135

Merged
wkulhanek merged 10 commits intomainfrom
add-seaweedfs-role
Apr 28, 2026
Merged

Add ocp4_workload_seaweedfs role for SeaweedFS S3-compatible storage#135
wkulhanek merged 10 commits intomainfrom
add-seaweedfs-role

Conversation

@wkulhanek
Copy link
Copy Markdown
Contributor

@wkulhanek wkulhanek commented Apr 28, 2026

Summary

  • Add new ocp4_workload_seaweedfs role that deploys SeaweedFS S3-compatible distributed object storage on OpenShift via ArgoCD/Helm
  • Integrate SeaweedFS as a fourth storage backend option in ocp4_workload_quay_operator (alongside Noobaa, Garage, and S4)
  • SeaweedFS addresses Garage's limitation where Clair vulnerability scanning fails to fetch image layers from Garage's S3 API

Details

New role (ocp4_workload_seaweedfs):

  • Deploys master, volume, and filer components via ArgoCD Application using the official SeaweedFS Helm chart
  • Pre-configures S3 IAM credentials via a config Secret before deployment
  • Creates buckets via weed shell exec into filer pod
  • Stores S3 credentials in a K8s Secret (seaweedfs-s3-credentials) for consumption by downstream roles
  • Creates OpenShift Route for external S3 API access (port 8333)
  • Reports endpoints and credentials via agnosticd_user_info

Quay operator updates:

  • Added ocp4_workload_quay_operator_seaweedfs_* configuration variables
  • Added SeaweedFS service/credential validation block in workload tasks
  • Added RadosGWStorage config block in Quay's DISTRIBUTED_STORAGE_CONFIG
  • Updated objectstorage managed condition in QuayRegistry CR

Add SeaweedFS as a fourth S3-compatible storage backend option for Quay,
alongside Noobaa, Garage, and S4. SeaweedFS (Apache 2.0 licensed) provides
a lightweight distributed object storage that supports Clair vulnerability
scanning, addressing Garage's limitation with Clair layer fetching.

New role deploys SeaweedFS via ArgoCD/Helm with master, volume, and filer
components, pre-configured S3 IAM credentials, bucket creation via weed
shell, and credential Secret for downstream consumption.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@wkulhanek wkulhanek marked this pull request as draft April 28, 2026 07:50
wkulhanek and others added 9 commits April 28, 2026 10:36
Replace embedded {{ }} inside lookup strings with Jinja2 string
concatenation (~) to avoid the deprecation warning that will become
an error in ansible-core 2.23.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The weed shell binary does not support a -shell.command flag. Instead,
pipe the s3.bucket.create command via stdin using echo and shell.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Quay operator rejects the config bundle when it contains Clair-related
fields (FEATURE_SECURITY_SCANNER, SECURITY_SCANNER_V4_ENDPOINT, CLAIR_CONFIG)
while clair.managed is true, as the operator manages those fields itself.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@wkulhanek wkulhanek marked this pull request as ready for review April 28, 2026 11:19
@wkulhanek wkulhanek merged commit 121d1e3 into main Apr 28, 2026
1 check passed
@wkulhanek wkulhanek deleted the add-seaweedfs-role branch April 28, 2026 11:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant