Перейти к содержанию

VK Cloud

Требования к запуску нового подчинённого кластера

Заметка

Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее

Перед началом установки подчинённого кластера следует удовлетворить следующие требования:

  • Успешная установка управляющего кластера Bootsman
  • DNS-имя управляющего кластера должно быть в DNS-сервере и разрешается для будущего подчинённого кластера
  • Доступ подчинённого кластера к управляющему
  • Сумма символов будущего имени кластера и имени Namespace не должно превышать 30 символов

Установка

Установку можно провести двумя способами:

  • Использовать установщик Bootsman
  • Применить yaml-манифесты

Установка с помощью установщика Bootsman

Заметка

Во время заполнения формы вы можете в любой момент переключиться в режим yaml

Для создания подчинённого кластера авторизуйтесь в управляющий кластер и нажмите кнопку Кнопка Создания Подчинённого Кластера

Откроется страница установщика для заполнения данных о будущем кластере.

Сначала укажите имя нового подчинённого кластера (1) и описание (2)

  1. Cluster Name
  2. Description

Cluster Name

Kubernetes Options

Kubernetes Options

Имя параметра Описание Комментарий
${SUBCLUSTER_KUBERNETES_VERSION} Версия Kubernetes
${SUBCLUSTER_NAMESPACE} Namespace управляющего кластера, который будет содержать объекты подчинённого кластера
${SUBCLUSTER_POD_CIDR} Подсеть для подов подчинённого кластера Не пересекается с управляющим или другим подчинённым кластером
${SUBCLUSTER_SERVICE_CIDR} Подсеть для сервисов подчинённого кластера Не пересекается с управляющим или другим подчинённым кластером

Provider Configuration

Provider Configuration

Имя параметра Описание Комментарий
${VK_PROJECT_ID} ID проекта в облаке VK Можно узнать в "Найстройках проекта" в разделе "Terraform" параметр "Project ID / tenant_id"
${VK_REGION_NAME} Служебный параметр для работы с API Можно узнать в "Найстройках проекта" в разделе "Доступ по API" параметр "Region Name"
${VK_PRIVACY} Выбор режима взаимодействия с кластером Поддерживаемые значения Public, PrivateMachines, Private. Подробнее
${VK_ENDPOINT} URL для API доступа к вашему проекту Можно узнать в "Найстройках проекта" в разделе "Доступ по API" параметр "Auth URL"
${VK_USER_DOMAN_NAME} Технический параметр. Всегда будет "users" Можно узнать в "Найстройках проекта" в разделе "Доступ по API" параметр "Auth URL"
${VK_USERNAME} Имя пользователя для авторизации в VK Cloud
${VK_PASSWORD} Пароль пользователя для авторизации в VK Cloud
${SSH_KEY_#} Публичный ключ, который будет добавлен на узлы подчиненного кластера

Private Registry

В случае, если вы хотите использовать наш репозиторий образов, то переключите параметр "Use private registry" в выключенное состояние и продолжайте заполнять в соотвествии с следующим разделом.

Private Registry Off

Если хотите произвести установку из локального репозитория, то заполните поля из формы ниже

Private Registry

Заметка

В случае использования уже существующего секрета на управляющем кластере, следует использовать настройку "Credential settings" "Use existing" Формы помогут найти секрет и указать имена полей, которые соотвествуют пользователю и паролю

Заметка

Advanced mode поможет вам задать специфические имена ключей в секрете. По умолчанию, username - пользователь, password - пароль

Имя параметра Описание Комментарий
${PRIVATE_REGISTRY_URL} URL вашего репозитория образов
${PRIVATE_REGISTRY_SECRET_NAMESPACE} Namespace секрета
${PRIVATE_REGISTRY_SECRET_NAME} Имя секрета
${PRIVATE_REGISTRY_USERNAME} Имя пользователя в репозитории образов
${PRIVATE_REGISTRY_PASSWORD} Пароль для пользователя в репозитории образов

Control Plane

Control Plane

Заметка

Для работы кластера Bootsman c внешним ETCD потребуется дополнительная подготовка. Подробнее

Имя параметра Описание Комментарий
${KCP_REPLICAS} Число реплик мастер-нод
${KUBE_API_PORT} Порт для kube-api По умолчанию 6443
Настройка Сети

Bootsman позволяет использовать как существующие сети и подсети VK Cloud, так и вновь созданные

KCP Template

KCP Template

KCP Template

KCP Template

Имя параметра Описание Комментарий
${VK_NETWORK_NAME} Имя сети Не совместим с ${VK_NETWORK_ID}
${VK_NETWORK_ID} ID существующей сети Не совместим с ${VK_NETWORK_NAME}
${VK_SEC_GROUP} Имя группы правил в Firewall в облаке VK Опционально
${VK_SUBNETWORK_NAME} Имя подсети Не совместим с ${VK_SUBNETWORK_ID}
${VK_SUBNETWORK_ID} ID существующей подсети Не совместим с ${VK_NETWORK_NAME}
${VK_SUBNETWORK_CIDR} адресное пространство для новой подсети Не совместим с ${VK_SUBNETWORK_ID}
${VK_ROUTER_NAME} Имя маршрутизатора облака ВК Не совместим с ${VK_ROUTER_ID}
${VK_ROUTER_ID} ID существующего маршрутизатора Не совместим с ${VK_ROUTER_NAME}
Шаблон виртуальных машин

KCP Template

Имя параметра Описание Комментарий
${VK_KCP_IMAGE_ID} ID образа операционной системы Подготовьте ОС в соответсвии с инструкцией или используйте уже подготовленные образа
${VK_KCP_FLAVOR} Шаблон конфигурации облака VK О Шаблонах конфигурации
${VK_KCP_DISK_SIZE} Тип дисков Подробнее о типах дисков
${VK_KCP_DISK_TYPE} Объём дискового пространства Измеряется в GiB
${VK_KCP_ZONE} Зона доступности VK Cloud. Возможно задать более 1 зоны О зонах доступности

WorkerPool

Шаблон виртуальных машин

Заметка

Вы не ограничены в одном типе ВМ, предназначенных для нагрузки. Для создания дополнительного пула виртуальных машин используйте кнопку

Add Worker Pool

Worker Template

Имя параметра Описание Комментарий
${SUBCLUSTER_WORKERPOOL_NAME} Имя пула виртуальных машин
${WORKER_REPLICAS} Число виртуальных машин
${VK_WORKER_IMAGE_ID} ID образа операционной системы Подготовьте ОС в соответсвии с инструкцией или используйте уже подготовленные образа
${VK_WORKER_FLAVOR} Шаблон конфигурации облака VK О Шаблонах конфигурации
${VK_WORKER_DISK_SIZE} Тип дисков Подробнее о типах дисков
${VK_WORKER_DISK_TYPE} Объём дискового пространства Измеряется в GiB
${VK_WORKER_ZONE} Зона доступности VK Cloud. Возможно задать более 1 зоны О зонах доступности

Установка с помощью 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:
  clusterType: capi
  capiConfig:
    kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
    # Раскомментируйте здесь для установки из вашего регистри
    # registry:
    #   url: ${PRIVATE_REGISTRY_URL}
    #   credentials:
    #     username: ${PRIVATE_REGISTRY_USERNAME}
    #     password: ${PRIVATE_REGISTRY_PASSWORD}
    controlPlane:
      replicas: ${KCP_REPLICAS}
      endpoint:
        port: ${KUBE_API_PORT}
    infrastructure:
      sshAuthorizedKeys:
        - >-
          ssh-ed25519 CCULn/ example
      provider: vk
      vkProviderConfig:
        projectId: ${VK_PROJECT_ID}
        regionName: ${VK_REGION_NAME}
        authConfig:
          credentials:
            password: ${VK_PASSWORD}
            username: ${VK_USERNAME}
          identityEndpoint: ${VK_ENDPOINT}
          userDomainName: users
        secGroup:
          name: ${VK_SEC_GROUP}
        privacy: ${VK_PRIVACY}
        network:
          externalNetworkName: ext-net
          name: ${VK_NETWORK_NAME}
          useExisting: ${VK_NETWORK_EXIST}
        router:
          useExisting: ${VK_ROUTER_EXIST}
          name: ${VK_ROUTER_NAME}
        # Раскомментируйте здесь для использования существующей подсети
        # subNetwork:
        #   name: ${VK_SUBNETWORK_NAME}
        #   useExisting: true
        # Раскомментируйте здесь для создания новой подсети
        # subNetwork:
        #   name: ${VK_SUBNETWORK_NAME}
        #   cidr: ${VK_SUBNETWORK_CIDR}
        #   useExisting: false
        template:
          imageId: ${VK_KCP_IMAGE_ID}
          availabilityZones: 
            - ${VK_KCP_ZONE}
          flavorRef: ${VK_KCP_FLAVOR}
          volumeSize: ${VK_KCP_DISK_SIZE}
          volumeType: ${VK_KCP_DISK_TYPE}
    network:
      podsCidrBlocks:
        - ${SUBCLUSTER_POD_CIDR}
      servicesCidrBlocks:
        - ${SUBCLUSTER_SERVICE_CIDR}
    kubeletExtraArgs:
      kubeReserved: ''
      systemReserved: ''
      evictionHard: ''
      evictionMinimumReclaim: ''
      evictionMaxPodGracePeriod: ''
      maxPods: ''
apiVersion: provisioning.bootsman.tech/v1alpha1
kind: WorkerPool
metadata:
  name: ${SUBCLUSTER_WORKERPOOL_NAME}
  namespace: ${SUBCLUSTER_NAMESPACE}
spec:
  clusterName: ${SUBCLUSTER_NAME}
  kubernetesVersion: ${SUBCLUSTER_KUBERNETES_VERSION}
  replicas: ${WORKER_REPLICAS}
  infrastructure:
    provider: vk
    vkProviderConfig:
      imageId: ${VK_WORKER_IMAGE_ID}
      availabilityZones: 
        - ${VK_WORKER_ZONE}
      flavorRef: ${VK_WORKER_FLAVOR}
      volumeSize: ${VK_WORKER_DISK_SIZE}
      volumeType: ${VK_WORKER_DISK_TYPE}
  kubeletExtraArgs:
    kubeReserved: ''
    systemReserved: ''
    evictionHard: ''
    evictionMinimumReclaim: ''
    evictionMaxPodGracePeriod: ''
    maxPods: ''