Модуль csi-vsphere
предназначен для организации заказа (provisioning) дисков в статических кластерах на базе VMware vSphere, где отсутствует возможность использовать модуль cloud-provider-vsphere
.
Системные требования
- Все виртуальные машины кластера должны быть созданы с использованием инструментов vSphere.
- Имя виртуальной машины в vSphere должно точно совпадать с именем узла (hostname) в кластере Deckhouse Kubernetes Platform.
- В настройках каждой виртуальной машины необходимо включить параметр
disk.EnableUUID:TRUE
. Этот параметр обеспечивает корректную работу модуля с дисковыми ресурсами и позволяет DKP идентифицировать подключенные тома.
Включение модуля
Для работы с хранилищами данных на базе VMware vSphere, где невозможно использовать модуль cloud-provider-vsphere
, включите модуль csi-vsphere
. Это приведет к тому, что на всех узлах кластера будут:
- зарегистрирован CSI-драйвер;
- запущены служебные поды компонента
csi-vsphere
.
Для влючения модуля выполните команду:
d8 k apply -f - <<EOF
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: csi-vsphere
spec:
enabled: true
version: 1
settings:
# Обязательные параметры.
host: myhost
password: myPaSsWd
region: myreg
regionTagCategory: myregtagcat
username: myuname
vmFolderPath: dev/test
zoneTagCategory: myzonetagcat
zones:
- zonea
- zoneb
EOF
Дождитесь, когда модуль перейдет в состояние Ready
. Проверить состояние можно, выполнив следующую команду:
d8 k get module csi-vsphere -w
В результате будет выведена информация о модуле csi-vsphere
:
NAME WEIGHT STATE SOURCE STAGE STATUS
csi-vsphere 910 Enabled Embedded Ready
Подготовка окружения
Список необходимых ресурсов
- User с необходимым набором прав.
- Network с DHCP и доступом в интернет.
- Datacenter с соответствующим тегом
k8s-region
. - Cluster с соответствующим тегом
k8s-zone
. - Datastore в любом количестве с соответствующими тегами.
Установка govc
Для дальнейшей конфигурации csi-vsphere
вам понадобится vSphere CLI — govc.
После установки задайте переменные окружения для работы с vCenter:
export GOVC_URL=example.com
export GOVC_USERNAME=<username>@vsphere.local
export GOVC_PASSWORD=<password>
export GOVC_INSECURE=1
Создание тегов и категорий тегов
В csi-vsphere
нет понятий «регион» и «зона». «Регионом» в csi-vsphere
является Datacenter
, а «зоной» — Cluster
. Для создания этой связи используются теги.
Создайте категории тегов с помощью команд:
govc tags.category.create -d "Kubernetes Region" k8s-region
govc tags.category.create -d "Kubernetes Zone" k8s-zone
Создайте теги в каждой категории. Если вы планируете использовать несколько «зон» (Cluster
), создайте тег для каждой из них:
govc tags.create -d "Kubernetes Region" -c k8s-region test-region
govc tags.create -d "Kubernetes Zone Test 1" -c k8s-zone test-zone-1
govc tags.create -d "Kubernetes Zone Test 2" -c k8s-zone test-zone-2
Назначьте тег «региона» на Datacenter
:
govc tags.attach -c k8s-region test-region /<DatacenterName>
Назначьте теги «зон» на объекты Cluster
:
govc tags.attach -c k8s-zone test-zone-1 /<DatacenterName>/host/<ClusterName1>
govc tags.attach -c k8s-zone test-zone-2 /<DatacenterName>/host/<ClusterName2>
Конфигурация Datastore
Для динамического заказа PersistentVolume
необходимо, чтобы Datastore
был доступен на каждом хосте ESXi (shared datastore).
Для автоматического создания StorageClass в кластере назначьте созданные ранее теги «региона» и «зоны» на объекты Datastore
:
govc tags.attach -c k8s-region test-region /<DatacenterName>/datastore/<DatastoreName1>
govc tags.attach -c k8s-zone test-zone-1 /<DatacenterName>/datastore/<DatastoreName1>
govc tags.attach -c k8s-region test-region /<DatacenterName>/datastore/<DatastoreName2>
govc tags.attach -c k8s-zone test-zone-2 /<DatacenterName>/datastore/<DatastoreName2>
Создание и назначение роли
Ввиду разнообразия подключаемых к csi-vsphere
SSO-провайдеров шаги по созданию пользователя в данной статье не рассматриваются.
Роль, которую предлагается создать далее, включает в себя все возможные права для всех компонентов DKP. Для получения детального списка привилегий, обратитесь к документации.
Создайте роль с необходимыми правами:
govc role.create deckhouse \
Cns.Searchable Datastore.AllocateSpace Datastore.Browse Datastore.FileManagement \
Global.GlobalTag Global.SystemTag Network.Assign StorageProfile.View \
$(govc role.ls Admin | grep -F -e 'Folder.' -e 'InventoryService.' -e 'Resource.' -e 'VirtualMachine.')
Назначьте пользователю роль на объекте vCenter
:
govc permissions.set -principal <username>@vsphere.local -role deckhouse /
Создание StorageClass
Модуль автоматически создает StorageClass для каждого Datastore и DatastoreCluster из зон.
Также он позволяет настроить имя StorageClass’а, который будет использоваться в кластере по умолчанию (параметр default) и отфильтровать ненужные StorageClass’ы (параметр exclude).