Yandex Marketplace
June 7, 2023
Установка Container Storage Interface для S3 в Marketplace k8s и через Helm
В данной статье рассмотрим установку CSI S3 в Marketplace mk8s.
- Namespace в котором ставим CSI;
- Оставляем галку создания sc (StorageClass);
- Оставляем галку создания Secret;
- Вставляем идентификатор статического ключа доступа для объектов S3. Пример генерации ключа здесь: https://teletype.in/@cameda/w93lPMPQWS4
- Вставляем секретный ключ доступа. Он создаётся вместе с идентификатором в одном файле;
- Вставляем имя бакета, в котором будут создаваться папки с pvc;
- Адрес S3 сервиса остаётся прежним: https://storage.yandexcloud.net
- Опции монтирования GeeseFS можно изменить по усмотрению;
- Политику очистки (Delete/Reclaim) такженастраиваем по-усмотрению;
- Название sc/secret на усмотрение, также как и галка игнорирования taint.
На момент написания статьи, версия драйвера geesefs.
cr.yandex/yc-marketplace/yandex-cloud/csi-s3/csi-s3-driver:0.35.5
Установка с помощью Helm чарта.
#В параметре storageClass.singleBucket передаётся название бакета; #Параметр untar говорит о том, что ставим инсталляцию впервые и нет никаких исходников. export HELM_EXPERIMENTAL_OCI=1 && \ helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/csi-s3/csi-s3 \ --version 0.35.5 \ --untar && cd csi-s3 && \ helm install \ --namespace default \ --set secret.accessKey=YC...kt72ges \ --set secret.secretKey=YCO...r3OrZz \ --set storageClass.singleBucket=cam-kuber \ --set storageClass.reclaimPolicy=Retain \ csi-s3 .
#Проверка установки helm list -n default #Удаление node-local-dns helm uninstall csi-s3 -n default
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-s3-pvc-dynamic namespace: default spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi storageClassName: csi-s3 EOF
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: cam-nginx labels: app: nginx-prod environment: prod spec: replicas: 2 selector: matchLabels: app: nginx strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest imagePullPolicy: IfNotPresent ports: - name: http containerPort: 80 resources: requests: cpu: 300m memory: 300Mi limits: cpu: 400m memory: 400Mi volumeMounts: - mountPath: /mnt/s3 name: cameda-volume restartPolicy: Always volumes: - name: cameda-volume persistentVolumeClaim: claimName: csi-s3-pvc-dynamic EOF
kubectl exec --tty --stdin <pod_name> -- touch /mnt/s3/file
Полезные ссылки
Информация о CSI
https://cloud.yandex.ru/marketplace/products/yc/csi-s3#docker-images
Подробнее о драйвере GeeseFS: https://cloud.yandex.ru/docs/storage/tools/geesefs
Официальный репозиторий: https://github.com/yandex-cloud/k8s-csi-s3
Подробнее про установку:
https://cloud.yandex.ru/docs/managed-kubernetes/operations/applications/csi-s3
Актуальная версия Helm чарта:
https://cloud.yandex.ru/marketplace/products/yc/csi-s3#docker-images