# ffs-csi-driver

## Build multi-platform images

```sh
docker buildx build --platform=linux/arm64,linux/amd64 --build-arg FFS_CLIENT=385595570414.dkr.ecr.us-west-2.amazonaws.com/dbaas/dev/ffs/client:75734b2fe00dbffc4700edbc89a76e4434cd4439 --push -t mhboy/ffsplugin:v1 .
```

## Install ffs csi driver

```sh
git clone https://github.com/tidbcloud/ffs-csi-driver.git
kubectl apply -f ffs-csi-driver/deploy/ffs-csi.yaml
```

## Deploy ffs client

#### Storage Class Usage (Dynamic Provisioning)

 -  Create a storage class
```sh
cat <<EOF | kubectl apply -f -
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ffs-csi
provisioner: ffs.csi.k8s.io
parameters:
  universe: universe-svc.ffs-system.svc.cluster.local:9091
  zone: zone-1
  tenant: tenant-1
  keepCache: "true"
  asyncWrite: "false"
  merge: "false"
  logLevel: warn
reclaimPolicy: Retain
volumeBindingMode: Immediate
EOF
```
 -  Create PVC
```sh
cat <<EOF | kubectl apply -f -
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-ffs-dynamic
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: "ffs-csi"
EOF
```

#### PV/PVC Usage (Static Provisioning)

 -  Create PV
```sh
cat <<EOF | kubectl apply -f -
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-ffs
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: ffs-csi
  csi:
    driver: ffs.csi.k8s.io
    readOnly: false
    volumeHandle: unique-volumeid
    volumeAttributes:
      universe: universe-svc.ffs-system.svc.cluster.local:9091
      zone: zone-1
      tenant: tenant-1
      keepCache: "true"
      asyncWrite: "false"
      merge: "false"
      logLevel: warn
EOF
```

 -  Create PVC
```sh
cat <<EOF | kubectl apply -f -
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-ffs-static
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  volumeName: pv-ffs
  storageClassName: ffs-csi
EOF
```
