Install
Install standalone or distributed RustFS on Kubernetes with the official Helm chart.
This guide gets the official RustFS chart from source or the Helm repository, installs it, and verifies access to the S3 API and Console.
Requirements
| Component | Requirement |
|---|---|
| Helm | Version 3 |
| Kubernetes | A cluster reachable with kubectl |
| StorageClass | Dynamic PVC provisioning for RustFS data |
| RustFS | 1.0.0-alpha.69 or later |
An Ingress controller is optional. If you enable Ingress, set ingress.className to the controller in your cluster, such as nginx or traefik.
Check the active cluster and available StorageClasses:
kubectl config current-context
kubectl get storageclass
helm version --shortGet the chart
Choose how Helm should access the chart. Both options set RUSTFS_CHART, which the installation commands below use.
Clone the RustFS source repository to use the chart at helm/rustfs:
git clone https://github.com/rustfs/rustfs.git
cd rustfs
export RUSTFS_CHART=./helm/rustfsAdd the RustFS repository listed on Artifact Hub, then update the local repository index:
helm repo add rustfs https://charts.rustfs.com
helm repo update
export RUSTFS_CHART=rustfs/rustfsInstall standalone mode
Create a values file for a one-Pod development deployment:
mode:
standalone:
enabled: true
distributed:
enabled: false
secret:
rustfs:
access_key: "<your-access-key>"
secret_key: "<your-secret-key>"
storageclass:
name: standard
dataStorageSize: 10Gi
logStorageSize: 1Gi
ingress:
enabled: falseReplace standard with a StorageClass in your cluster, then install:
helm upgrade --install rustfs "$RUSTFS_CHART" \
--namespace rustfs \
--create-namespace \
-f standalone-values.yamlInstall distributed mode
For a distributed cluster, set the Pod and drive counts explicitly. Total data drives equal replicaCount * drivesPerNode.
mode:
standalone:
enabled: false
distributed:
enabled: true
replicaCount: 4
drivesPerNode: 2
secret:
rustfs:
access_key: "<your-access-key>"
secret_key: "<your-secret-key>"
storageclass:
name: standard
dataStorageSize: 100Gi
logStorageSize: 1Gi
ingress:
enabled: falseThe example creates four Pods and eight data PVCs. Ensure the cluster can schedule all Pods and provision all PVCs, then install:
helm upgrade --install rustfs "$RUSTFS_CHART" \
--namespace rustfs \
--create-namespace \
-f distributed-values.yamlChoose the topology before installation
Kubernetes does not allow updates to StatefulSet volumeClaimTemplates. Changing drivesPerNode later requires StatefulSet recreation or a new installation.
Verify and access RustFS
kubectl -n rustfs get pods,pvc,services
kubectl -n rustfs rollout status statefulset/rustfsStandalone mode creates a Deployment instead of a StatefulSet. Check it with:
kubectl -n rustfs rollout status deployment/rustfsForward the S3 API and Console to your workstation:
kubectl -n rustfs port-forward svc/rustfs 9000:9000 9001:9001Use http://localhost:9000 as the S3 endpoint and open http://localhost:9001 for the Console.
Key values
| Value | Purpose | Chart default |
|---|---|---|
mode.standalone.enabled | Enable one-Pod standalone mode | false |
mode.distributed.enabled | Enable distributed mode | true |
replicaCount | Distributed Pod count | 4 |
drivesPerNode | Data PVCs per Pod | Inferred from replicaCount |
storageclass.name | StorageClass for PVCs | local-path |
storageclass.dataStorageSize | Size of each data PVC | 256Mi |
storageclass.logStorageSize | Size of each log PVC | 256Mi |
service.endpoint.port | S3 API port | 9000 |
service.console.port | Console port | 9001 |
We recommend setting storage sizes explicitly; the chart defaults are intended only for basic evaluation.