4.2 KiB
RustFS Helm Mode
RustFS helm chart supports standalone and distributed mode. For standalone mode, there is only one pod and one pvc; for distributed mode, there are two styles, 4 pods and 16 pvcs(each pod has 4 pvcs), 16 pods and 16 pvcs(each pod has 1 pvc). You should decide which mode and style suits for your situation. You can specify the parameters mode and replicaCount to install different mode and style.
- For standalone mode: Only one pod and one pvc acts as single node single disk; Specify parameters
mode.standalone.enabled="true",mode.distributed.enabled="false"to install. - For distributed mode(default): Multiple pods and multiple pvcs, acts as multiple nodes multiple disks, there are two styles:
- 4 pods and each pods has 4 pvcs(default)
- 16 pods and each pods has 1 pvc: Specify parameters
replicaCountwith--set replicaCount="16"to install.
NOTE: Please make sure which mode suits for you situation and specify the right parameter to install rustfs on kubernetes.
Parameters Overview
| parameter | description | default value |
|---|---|---|
| replicaCount | Number of cluster nodes. | Default is 4. |
| mode.standalone.enabled | RustFS standalone mode support, namely one pod one pvc. | Default is false |
| mode.distributed.enabled | RustFS distributed mode support, namely multiple pod multiple pvc. | Default is true. |
| image.repository | docker image repository. | rustfs/rustfs. |
| image.tag | the tag for rustfs docker image | "latest" |
| secret.rustfs.access_key | RustFS Access Key ID | rustfsadmin |
| secret.rustfs.secret_key | RustFS Secret Key ID | rustfsadmin |
| storageclass.name | The name for StorageClass. | local-path |
| ingress.className | Specify the ingress class, traefik or nginx. | nginx |
NOTE: local-path is used by k3s. If you want to use local-path, running the command,
kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.32/deploy/local-path-storage.yaml
Installation
Requirement
- Helm V3
- RustFS >= 1.0.0-alpha.69
Due to the traefik and ingress has different session sticky/affinity annotations, and rustfs support both those two controller, you should specify parameter ingress.className to select the right one which suits for you.
Installation with traekfik controller
If your ingress class is traefik, running the command:
helm install rustfs -n rustfs --create-namespace ./ --set ingress.className="traefik"
Installation with nginx controller
If your ingress class is nginx, running the command:
helm install rustfs -n rustfs --create-namespace ./ --set ingress.className="nginx"
Installation check and rustfs login
Check the pod status
kubectl -n rustfs get pods -w
NAME READY STATUS RESTARTS AGE
rustfs-0 1/1 Running 0 2m27s
rustfs-1 1/1 Running 0 2m27s
rustfs-2 1/1 Running 0 2m27s
rustfs-3 1/1 Running 0 2m27s
Check the ingress status
kubectl -n rustfs get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
rustfs nginx your.rustfs.com 10.43.237.152 80, 443 29m
Access the rustfs cluster via https://your.rustfs.com with the default username and password rustfsadmin.
Replace the
your.rustfs.comwith your own domain as well as the certificates.
TLS configuration
By default, tls is not enabled.If you want to enable tls(recommendated),you can follow below steps:
- Step 1: Certification generation
You can request cert and key from CA or use the self-signed cert(not recommendated on prod),and put those two files(eg, tls.crt and tls.key) under some directory on server, for example tls directory.
- Step 2: Certification specifying
You should use --set-file parameter when running helm install command, for example, running the below command can enable ingress tls and generate tls secret:
helm install rustfs rustfs/rustfs -n rustfs --set tls.enabled=true,--set-file tls.crt=./tls.crt,--set-file tls.key=./tls.key
Uninstall
Uninstalling the rustfs installation with command,
helm uninstall rustfs -n rustfs