vSphere
Внимание
Требуется vSphere версии 6.7 u3 или выше
Требования к запуску нового подчинённого кластера
Перед началом установки подчинённого кластера следует удовлетворить следующие требования:
- Успешная установка управляющего кластера Bootsman
- DNS-имя управляющего кластера должно быть в DNS-сервере и разрешается для будущего подчинённого кластера
- Доступ подчинённого кластера к управляющему
- Сумма символов будущего имени кластера и имени Namespace не должно превышать 30 символов
- В случае наличия в вашем гипервизоре более одного Cluster в целевом Datacenter, требуется создать отдельного пользователя по инструкции
Установка
Установку можно провести двумя способами:
- Использовать установщик Bootsman
- Применить yaml-манифесты
Установка с помощью установщика Bootsman
Заметка
Во время заполнения формы вы можете в любой момент переключится в режим yaml
Для создания подчинённого кластера авторизуйтесь в управляющий кластер и нажмите кнопку 
Вас перенаправит на страничку установщика для заполнения данных о будущем кластере.
Сначала укажите имя нового подчинённого кластера (1) и описание (2)
- Cluster Name
- Description
Далее заполните поля в блоке "Kubernetes Options"
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${SUBCLUSTER_KUBERNETES_VERSION} | Версия Kubernetes | |
| ${SUBCLUSTER_NAMESPACE} | Namespace управляющего кластера, который будет содержать объекты подчинённого кластера | |
| ${SUBCLUSTER_POD_CIDR} | Подсеть для подов подчинённого кластера | Не пересекается с управляющим или другим подчинённым кластером |
| ${SUBCLUSTER_SERVICE_CIDR} | Подсеть для сервисов подчинённого кластера | Не пересекается с управляющим или другим подчинённым кластером |
Далее заполните поля в блоке "Control Plane"
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${KCP_REPLICAS} | Число реплик мастер-нод | |
| ${KCP_IP} | Статический IP адрес для мастер-нод | |
| ${KUBE_API_PORT} | Порт для kube-api | По-умолчанию 6443 |
| ${VSPHERE_USERNAME} | Пользователь vSphere | |
| ${VSPHERE_PASSWORD} | Пароль пользователя vSphere |
Следующий блок содержит информацию об образе будущих виртуальных машин
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${VSPHERE_KCP_TEMPLATE} | Имя образа ВМ в vSphere | |
| ${VSPHERE_ADDRESS} | IP-адрес или DNS-имя vSphere | |
| ${VSPHERE_NETWORK} | Имя сети vSphere | Должна быть создана до запуска |
| ${VSPHERE_FOLDER} | Имя директории в vSphere | Должна быть создана до запуска |
| ${VSPHERE_DATACENTER} | Имя датацентра | |
| ${VSPHERE_DATASTORE} | Имя дискового хранилища |
И завершающий блок настройки Control Plane - это выделяемые ресурсы
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${VSPHERE_KCP_CPU} | Число vCPU, выделенных для каждой мастер-ноды | |
| ${VSPHERE_KCP_MEMORY} | Объём оперативной памяти для каждой мастер-ноды | Измеряется в MiB |
| ${VSPHERE_KCP_DISK} | Объём дискового пространства для каждой мастер-ноды | Измеряется в GiB |
Далее добавьте информацию о приватном репозитории
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${REGISTRY_DOMAIN_NAME} | Доменное имя вашего регистри | |
| ${REGISTRY_USERNAME} | Пользователь для вашего регистри | Измеряется в MiB |
| ${REGISTRY_PASSWORD} | Пароль для вашего регистри | Измеряется в GiB |
| ${REGISTRY_URL} | Полный путь до образов внутри вашего регистри | Измеряется в GiB |
Дальнейшая настройка касается создания пула worker-нод
Заметка
Вы не ограничены в одном типе ВМ, предназначенных для нагрузки. Для создания дополнительного пула виртуальных машин используйте кнопку
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${SUBCLUSTER_WORKERPOOL_NAME} | Имя пул виртуальных машин | |
| ${WORKER_REPLICAS} | Число виртуальных машин | |
| ${VSPHERE_WORKER_TEMPLATE} | Объём дискового пространства для каждой мастер-ноды | Может быть идентичным с ${VSPHERE_KCP_TEMPLATE} |
| ${VSPHERE_ADDRESS} | IP-адрес или DNS-имя vSphere | Должно быть идентичным с настройкой указанной в Control Plane |
| ${VSPHERE_NETWORK} | Имя сети vSphere | Должна быть создана до запуска |
| ${VSPHERE_FOLDER} | Имя директории | Должна быть создана до запуска |
| ${VSPHERE_DATACENTER} | Имя датацентра | Должно быть идентичным с настройкой указанной в Control Plane |
| ${VSPHERE_DATASTORE} | Имя дискового хранилища |
Ресурсы для пула виртуальных машин
| Имя параметра | Описание | Комментарий |
|---|---|---|
| ${VSPHERE_WORKER_CPU} | Число vCPU, выделенных для каждой воркер-ноды | |
| ${VSPHERE_WORKER_MEMORY} | Объём оперативной памяти для каждой воркер-ноды | Измеряется в MiB |
| ${VSPHERE_WORKER_DISK} | Объём дискового пространства для каждой воркер-ноды | Измеряется в GiB |
Установка с помощью yaml-манифестов
Если вам удобнее способ применения yaml-манифестов, то ниже есть примеры. Заполните их в соответствии с описанием из главы, представленной ранее.
Для применения yaml-манифестов можно использовать kubectl
kubectl apply -f Cluster.yaml
kubectl apply -f Workerpool.yaml
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: Cluster
metadata:
name: ${SUBCLUSTER_NAME}
namespace: ${SUBCLUSTER_NAMESPACE}
spec:
addons:
repoURL: ${REGISTRY_URL}
airgap:
repository: ${REGISTRY_URL}
bootsmanVersion: latest
capiConfig:
controlPlane:
endpoint:
host: ${KCP_IP}
port: ${KUBE_API_PORT}
replicas: ${KCP_REPLICAS}
infrastructure:
provider: vsphere
sshAuthorizedKeys:
- >-
ssh-ed25519 CCULn/YglEAzQcMqC7xIViZEl0gBU49o73wKaf1M0x0K0bgyZpG6DJDXw24cjbI4U4yaZI example
vsphereProviderConfig:
secret:
password: ${VSPHERE_PASSWORD}
user: ${VSPHERE_USERNAME}
template:
datacenter: ${VSPHERE_DATACENTER}
datastore: ${VSPHERE_DATASTORE}
folder: ${VSPHERE_FOLDER}
insecureFlag: ${VSPHERE_INSECURE}
networkName: ${VSPHERE_NETWORK}
resource:
diskGiB: ${VSPHERE_KCP_DISK}
memoryMiB: ${VSPHERE_KCP_MEMORY}
numCPUs: ${VSPHERE_KCP_CPU}
serverAddress: ${VSPHERE_ADDRESS}
template: ${VSPHERE_KCP_TEMPLATE}
kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
network:
podsCidrBlocks:
- ${SUBCLUSTER_POD_CIDR}
servicesCidrBlocks:
- ${SUBCLUSTER_SERVICE_CIDR}
registry:
credentials:
password: ${REGISTRY_PASSWORD}
username: ${REGISTRY_USERNAME}
url: ${REGISTRY_DOMAIN_NAME}
clusterType: capi
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: WorkerPool
metadata:
name: ${SUBCLUSTER_WORKERPOOL_NAME}
namespace: ${SUBCLUSTER_NAMESPACE}
spec:
clusterName: ${SUBCLUSTER_NAME}
infrastructure:
provider: vsphere
vsphereConfig:
datacenter: ${VSPHERE_DATACENTER}
datastore: ${VSPHERE_DATASTORE}
folder: ${VSPHERE_FOLDER}
insecureFlag: ${VSPHERE_INSECURE}
networkName: ${VSPHERE_NETWORK}
resource:
diskGiB: ${VSPHERE_WORKER_DISK}
memoryMiB: ${VSPHERE_WORKER_MEMORY}
numCPUs: ${VSPHERE_WORKER_CPU}
serverAddress: ${VSPHERE_ADDRESS}
template: ${VSPHERE_WORKER_TEMPLATE}
kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
replicas: ${WORKER_REPLICAS}








