RustFS
Installiert RustFS als S3-kompatiblen Object Storage in Kubernetes über das offizielle Helm-Repository:
helm repo add rustfs https://charts.rustfs.com
helm install rustfs rustfs/rustfs --version 1.0.0-rc.1
Modes
| Mode | Beschreibung |
|---|---|
standalone |
1 Pod, 1 Data-PVC (Default im Block) |
distributed |
StatefulSet mit replicas >= 2 und Erasure Coding |
Ingress
Das Upstream-Chart-Ingress zeigt nur auf die Console (:9001).
Der Block legt optional einen zweiten Ingress für die S3 API (:9000) an.
| Config | Port | Zweck |
|---|---|---|
ingress.console |
9001 | Web-UI / OIDC Callback |
ingress.s3 |
9000 | S3 API für Apps |
OIDC (Authentik / Keycloak)
OIDC wird über Env-Vars verdrahtet (Chart hat keine native OIDC-Section).
Callback-URL (Provider default):
https://<ingress.console.host>/rustfs/admin/v3/oidc/callback/default
In Authentik:
- Application / Provider vom Typ OAuth2/OIDC anlegen
- Redirect URI exakt wie oben eintragen
- Groups-Claim flach als
groupsins ID Token mappen (Full path aus) - Im Block
oidc.enabled: true+config_url/client_id/client_secretsetzen
Authentik / OIDC Policies
Authentik liefert im groups-Claim oft viele Gruppen (UUIDs/Namen). RustFS behandelt
jeden Wert als Policy-Namen und schlägt fehl, sobald einer nicht existiert
(OIDC policy mapping did not resolve to current policies).
Empfohlen, wenn App-Zugriff in Authentik bereits auf die richtigen Gruppen beschränkt ist und alle OIDC-User Full Access bekommen sollen:
oidc:
enabled: true
role_policy: consoleAdmin
username_claim: preferred_username
email_claim: email
SSO-Logins sind STS-Sessions: Identität kommt aus Authentik (preferred_username / email).
Sie erscheinen nicht als dauerhafte Einträge unter Identity → Users (das sind nur lokale IAM-User).
Optional zusätzlich leere IAM-Gruppen aus Authentik-UUIDs anlegen (group_policies → Sync):
oidc:
role_policy: consoleAdmin
group_policies:
"<authentik-group-uuid-or-name>": consoleAdmin
Für feinere Rechte ohne role_policy: Claim in Authentik auf echte RustFS-Policy-Namen
filtern (Property Mapping) — siehe RustFS OIDC Docs.
actions
install
- name: rustfs
from: cargo.ayedo.cloud/ayedo/k8s/rustfs:0.1.2
kubeconfig:
from: k8s
config:
root:
access_key: "<access_key>"
secret_key: "<secret_key>"
storage:
class: longhorn
data_size: 2Ti
ingress:
class: ingress
tls:
enabled: true
letsencrypt:
issuer: cloudflare
console:
enabled: true
host: rustfs.example.com
s3:
enabled: true
host: s3.example.com
oidc:
enabled: false
polycrate run rustfs install
uninstall
polycrate run rustfs uninstall
Logging
Default: stdout only (storage.log_directory leer). Das Chart-Default /logs
würde eine rustfs-logs PVC anlegen; RustFS schreibt dort INFO-Tracing-close-
Spans und füllt kleine Volumes schnell.
File-Logs nur explizit:
storage:
log_directory: /logs
log_size: 10Gi
Nach dem Wechsel von File-Logs auf stdout die alte PVC manuell löschen
(helm.sh/resource-policy: keep).
Hinweise
- Root-Credentials müssen gesetzt werden (
root.access_key/root.secret_key), außerallow_insecure_defaults: true(nur Dev). - Chart-Version und App-Version sind in
block.polygepinnt. - Gerenderte Helm-Values landen unter
artifacts/blocks/<block>/values.yaml.