Установка Container Storage Interface для S3
Container Storage Interface для S3 (CSI) позволяет динамически резервировать бакеты S3-совместимых хранилищ и монтировать их к подам кластера Managed Service for Kubernetes в виде постоянных томов (PersistentVolume). Подключение выполняется при помощи FUSE
Примечание
Перед публикацией в Yandex Cloud Marketplace новые версии приложения тестируются на работоспособность в инфраструктуре Yandex Cloud, поэтому могут обновляться с задержкой. Чтобы использовать самую последнюю версию, установите ее c помощью Helm-чарта из репозитория на GitHub.
Установить Container Storage Interface для S3 можно следующими способами:
- В консоли управления с помощью Cloud Marketplace
- C помощью Helm-чарта из репозитория Cloud Marketplace
- С помощью Helm-чарта из репозитория на GitHub
Перед началом работы
-
Создайте статический ключ доступа для сервисного аккаунта. Сохраните идентификатор ключа и секретный ключ — они понадобятся при установке приложения.
-
(Опционально) Чтобы новые тома помещались в один бакет с разными префиксами, создайте бакет Yandex Object Storage. Сохраните имя бакета — оно понадобится при установке приложения. Пропустите этот шаг, если для каждого тома требуется создавать отдельный бакет.
-
Убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
Установка в консоли управления с помощью Cloud Marketplace
- Перейдите на страницу каталога
и выберите сервис Managed Service for Kubernetes. - Нажмите на имя нужного кластера Managed Service for Kubernetes и выберите вкладку
Marketplace. - В разделе Доступные для установки приложения выберите Container Storage Interface для S3 и нажмите кнопку Перейти к установке.
- Задайте настройки приложения:
- Пространство имен — выберите пространство имен
kube-system
. - Название приложения — укажите название приложения, например
csi-s3
. - Создать класс хранения — выберите эту опцию, чтобы создать новый класс хранилища при развертывании приложения.
- Создать секрет — выберите эту опцию, чтобы создать новый секрет для класса хранилища при установке приложения.
- Идентификатор ключа S3 — скопируйте в это поле идентификатор ключа сервисного аккаунта.
- Секретный ключ S3 — скопируйте в это поле секретный ключ сервисного аккаунта.
- Общий бакет S3 для томов — укажите имя общего бакета, в котором будут создаваться динамически распределяемые тома. Чтобы CSI создавал новый бакет для каждого тома, оставьте это поле пустым.
- Адрес S3-сервиса — адрес S3-сервиса, который будет использовать приложение. По умолчанию
https://storage.yandexcloud.net
. - Опции монтирования GeeseFS — опции монтирования для программы GeeseFS. Полный список опций см. в документации GeeseFS
. - Политика очистки томов — выберите политику очистки томов PersistentVolume при удалении PersistentVolumeClaim:
- Retain — сохранять том.
- Delete — удалять том.
- Название класса хранения — если вы ранее выбрали опцию Создать класс хранения, укажите имя нового класса хранилища.
- Название секрета — если вы ранее выбрали опцию Создать секрет, укажите имя нового секрета, который будет создан для класса хранилища. В ином случае укажите имя существующего секрета, который будет использован для класса хранилища.
- Игнорировать все политики taint — выберите эту опцию, чтобы драйвер CSI, который монтирует файловую систему на узлах, игнорировал все политики taint для узлов кластера Managed Service for Kubernetes.
- Пространство имен — выберите пространство имен
- Нажмите кнопку Установить.
- Дождитесь перехода приложения в статус
Deployed
.
Установка с помощью Helm-чарта из репозитория Cloud Marketplace
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Для установки Helm-чарта
с CSI выполните команду, указав в ней параметры ключа, созданного ранее:helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/csi-s3/csi-s3 \ --version 0.42.1 \ --untar && \ helm install \ --namespace kube-system \ --set secret.accessKey=<идентификатор_ключа> \ --set secret.secretKey=<секретный_ключ> \ csi-s3 ./csi-s3/
Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \
, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.Также вы можете задать дополнительные параметры Container Storage Interface для S3.
Установка с помощью Helm-чарта из репозитория на GitHub
В репозитории на GitHub
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Для установки Helm-чарта
с CSI выполните команду:helm repo add yandex-s3 https://yandex-cloud.github.io/k8s-csi-s3/charts && \ helm repo update && \ helm pull yandex-s3/csi-s3 --untar && \ helm install \ --namespace kube-system \ --set secret.accessKey=<идентификатор_ключа> \ --set secret.secretKey=<секретный_ключ> \ csi-s3 ./csi-s3/
Также вы можете задать дополнительные параметры Container Storage Interface для S3.
Параметры для установки с помощью Helm-чарта
При установке приложения Container Storage Interface для S3 обязательными являются параметры secret.accessKey
и secret.secretKey
. Вы можете не указывать остальные параметры, либо переопределить их в команде установки с помощью ключа --set <имя_параметра>=<новое_значение>
.
Список доступных для переопределения параметров и их значения по умолчанию приведены в таблице:
Имя параметра | Описание | Значение по умолчанию |
---|---|---|
storageClass.create |
Требуется ли создание нового класса хранилища | true |
storageClass.name |
Имя класса хранилища | csi-s3 |
storageClass.singleBucket |
Использовать один бакет для всех PersistentVolumeClaim | |
storageClass.mountOptions |
Опции монтирования GeeseFS | --memory-limit 1000 --dir-mode 0777 --file-mode 0666 |
storageClass.reclaimPolicy |
Политика очистки томов | Delete |
storageClass.annotations |
Описание для класса хранилища | |
secret.create |
Требуется ли создание нового секрета | true |
secret.name |
Имя секрета | csi-s3-secret |
secret.accessKey |
Идентификатор ключа | |
secret.secretKey |
Секретный ключ | |
secret.endpoint |
Адрес S3-сервиса | https://storage.yandexcloud.net |