# 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 ```