https://github.com/octohelm/unifs
https://github.com/octohelm/unifs
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/octohelm/unifs
- Owner: octohelm
- Created: 2023-08-04T04:35:08.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-11-10T02:40:47.000Z (7 months ago)
- Last Synced: 2025-11-10T04:19:26.530Z (7 months ago)
- Language: Go
- Size: 277 KB
- Stars: 0
- Watchers: 1
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# UniFS
```mermaid
flowchart TB
s3_fs[S3 FS]
ftp_fs[Ftp FS]
local_fs[Local FS]
webdav_fs[WebDAV FS]
fsi(FileSystem Inteface)
ftp_fs & s3_fs & webdav_fs & local_fs --> fsi
webdav_server[WebDAV Server]
ftp_server[Ftp Server]
fuse_fs[Fuse Fs]
go_code[Go code]
fsi -->|mount| fuse_fs
fsi -->|direct| go_code
fsi -->|serve| ftp_server
fsi -->|serve| webdav_server
```
### Supported Backends
```
ftp://:@[]
webdav://:@[][?insecure=true]
s3://:@/[][?insecure=true]
file://
```
### CSI
### Create StorageClass
```yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: unifs
provisioner: csi-driver.unifs.octohelm.tech
parameters:
csi.storage.k8s.io/provisioner-secret-name: "${pvc.name}"
csi.storage.k8s.io/provisioner-secret-namespace: "${pvc.namespace}"
csi.storage.k8s.io/node-publish-secret-name: "${pvc.name}"
csi.storage.k8s.io/node-publish-secret-namespace: "${pvc.namespace}"
reclaimPolicy: Delete
```
### Create Secret && PersistentVolumeClaim
```yaml
---
apiVersion: v1
kind: Secret
metadata:
name: fuse-file
namespace: storage-system--unifs
type: Opaque
stringData:
backend: file:///data/unifs
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fuse-file
namespace: storage-system--unifs
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: unifs
volumeMode: Filesystem
---
apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod
namespace: storage-system--unifs
spec:
volumes:
- name: pv-storage
persistentVolumeClaim:
claimName: fuse-file
containers:
- name: web
image: nginx
ports:
- containerPort: 80
name: "http"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: pv-storage
```