# Mount S3 storage vào K8S cluster
```{admonition} Pre-condition
* Đã tạo S3 pool.
* Đã tạo ACL với quyền read & write cho tất cả bucket.
* Đã tạo K8S.
```
**Các bước thực hiện:**
----------
### Bước 1. Cài đặt Helm
Link cài đặt: https://helm.sh/docs/intro/install/
### Bước 2. Deploy CSI-S3 trên K8S
```
helm repo add yandex-s3 https://yandex-cloud.github.io/k8s-csi-s3/charts
helm repo update
helm show values yandex-s3/csi-s3 > values.yaml
```
Chỉnh sửa các thông số **accesskey**, **secretkey**, **endpoint** trong file **values.yaml**
```
---
images:
# Source: quay.io/k8scsi/csi-node-driver-registrar:v1.2.0
registrar: cr.yandex/crp9ftr22d26age3hulg/yandex-cloud/csi-s3/csi-node-driver-registrar:v1.2.0
# Source: quay.io/k8scsi/csi-provisioner:v2.1.0
provisioner: cr.yandex/crp9ftr22d26age3hulg/yandex-cloud/csi-s3/csi-provisioner:v2.1.0
# Main image
csi: cr.yandex/crp9ftr22d26age3hulg/yandex-cloud/csi-s3/csi-s3-driver:0.41.1
storageClass:
# Specifies whether the storage class should be created
create: true
# Name
name: csi-s3
# Use a single bucket for all dynamically provisioned persistent volumes
singleBucket: ""
# mounter to use - either geesefs, s3fs or rclone (default geesefs)
mounter: geesefs
# GeeseFS mount options
mountOptions: "--memory-limit 1000 --dir-mode 0777 --file-mode 0666"
# Volume reclaim policy
reclaimPolicy: Delete
# Annotations for the storage class
# Example:
# annotations:
# storageclass.kubernetes.io/is-default-class: "true"
annotations: {}
secret:
# Specifies whether the secret should be created
create: true
# Name of the secret
name: csi-s3-secret
# S3 Access Key
accessKey: "*****************"
# S3 Secret Key
secretKey: "*****************"
# Endpoint
endpoint: https://s3.sunteco.app
# Region
region: ""
tolerations:
all: false
node: []
controller: []
nodeSelector: {}
kubeletPath: /var/lib/kubelet
```
Deploy CSI-S3 trong K8S
```
helm --kubeconfig={name_file_kubeconfig} upgrade --install csi-s3 yandex-s3/csi-s3 --namespace storage --create-namespace --values values.yaml
```
### Bước 3. Kiểm tra việc mount S3 storage trên K8S
Tạo file **pvc.yaml** với nội dung:
```yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
namespace: storage
name: sang-pvc-s3
spec:
storageClassName: csi-s3
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
```
Chạy câu lệnh tạo pvc:
```
kubectl --kubeconfig={name_file_kubeconfig} apply -f pvc.yaml
```
```{div} sd-fs-5 sd-text-primary
Result:
```
```{thumbnail} ../../../_static/img/ske/how-to/mount-s3-storage-vao-k8s-cluster-1.png
:width: 65%
:alt: Image
:align: center
```
```{thumbnail} ../../../_static/img/ske/how-to/mount-s3-storage-vao-k8s-cluster-2.png
:width: 65%
:alt: Image
:align: center
```