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

ComponentRequirement
HelmVersion 3
KubernetesA cluster reachable with kubectl
StorageClassDynamic PVC provisioning for RustFS data
RustFS1.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 --short

Get 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/rustfs

Install standalone mode

Create a values file for a one-Pod development deployment:

standalone-values.yaml
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: false

Replace standard with a StorageClass in your cluster, then install:

helm upgrade --install rustfs "$RUSTFS_CHART" \
  --namespace rustfs \
  --create-namespace \
  -f standalone-values.yaml

Install distributed mode

For a distributed cluster, set the Pod and drive counts explicitly. Total data drives equal replicaCount * drivesPerNode.

distributed-values.yaml
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: false

The 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.yaml

Choose 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/rustfs

Standalone mode creates a Deployment instead of a StatefulSet. Check it with:

kubectl -n rustfs rollout status deployment/rustfs

Forward the S3 API and Console to your workstation:

kubectl -n rustfs port-forward svc/rustfs 9000:9000 9001:9001

Use http://localhost:9000 as the S3 endpoint and open http://localhost:9001 for the Console.

Key values

ValuePurposeChart default
mode.standalone.enabledEnable one-Pod standalone modefalse
mode.distributed.enabledEnable distributed modetrue
replicaCountDistributed Pod count4
drivesPerNodeData PVCs per PodInferred from replicaCount
storageclass.nameStorageClass for PVCslocal-path
storageclass.dataStorageSizeSize of each data PVC256Mi
storageclass.logStorageSizeSize of each log PVC256Mi
service.endpoint.portS3 API port9000
service.console.portConsole port9001

We recommend setting storage sizes explicitly; the chart defaults are intended only for basic evaluation.

On this page