HuaweiCloudClusterConfiguration

Version: deckhouse.io/v1

Описывает конфигурацию облачного кластера в Huawei Cloud.

Используется облачным провайдером, если управляющий слой кластера размещён в облаке.

Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:

kubectl -n d8-system exec -ti svc/deckhouse-leader -c deckhouse -- deckhouse-controller edit provider-cluster-configuration

Пример:

apiVersion: deckhouse.io/v1
kind: HuaweiCloudClusterConfiguration
layout: Standard
sshPublicKey: "<SSH_PUBLIC_KEY>"
zones:
- eu-3a
standard:
  externalNetworkName: external-network
provider:
  domainName: "<DOMAIN_NAME>"
  region: eu-3
  accessKey: "<USERNAME>"
  secretKey: "<PASSWORD>"
masterNodeGroup:
  replicas: 1
  instanceClass:
    rootDiskSize: 50
    imageName: debian-11-genericcloud-amd64-20220911-1135
nodeGroups:
- name: front
  replicas: 2
  instanceClass:
    flavorName: m1.large
    imageName: debian-11-genericcloud-amd64-20220911-1135
    rootDiskSize: 50
    configDrive: false
    floatingIPPools:
    - public
    - shared
    additionalSecurityGroups:
    - sec_group_1
    - sec_group_2
  zones:
  - eu-1a
  - eu-1b
  • apiVersion
    строка

    Обязательный параметр

    Допустимые значения: deckhouse.io/v1

  • kind
    строка

    Обязательный параметр

    Допустимые значения: HuaweiCloudClusterConfiguration

  • layout
    строка

    Обязательный параметр

    Название схемы размещения.

    Возможные схемы размещения провайдера описаны на странице Схемы размещения.

  • masterNodeGroup

    Обязательный параметр

    Спецификация для описания NodeGroup master-узлов.

    Чтобы изменения вступили в силу, после изменения параметров секции masterNodeGroup выполните команду dhctl converge.

    • masterNodeGroup.instanceClass
      объект

      Обязательный параметр

      Частичное содержимое полей HuaweiCloudInstanceClass.

      • masterNodeGroup.instanceClass.etcdDiskSizeGb
        целочисленный

        Размер диска для etcd. Значение указывается в гигабайтах.

        По умолчанию: 10

        Пример:

        etcdDiskSizeGb: 10
        
      • masterNodeGroup.instanceClass.flavorName
        строка

        Обязательный параметр

        Тип заказываемых виртуальных машин.

      • masterNodeGroup.instanceClass.imageName
        строка

        Обязательный параметр

        Имя образа виртуальной машины, который будет использоваться для инстанса.

        Список поддерживаемых Deckhouse ОС и их версий можно найти на странице Поддерживаемые версии Kubernetes и ОС (учитывайте используемую версию Deckhouse).

      • masterNodeGroup.instanceClass.rootDiskSize
        целочисленный

        Размер root-диска. Значение указывается в гигабайтах.

        Параметр также влияет на тип диска.

    • masterNodeGroup.replicas
      целочисленный

      Обязательный параметр

      Количество создаваемых master-узлов. Для обеспечения кворума важно, чтобы оно было нечетным.

      Допустимые значения: 1 <= X

    • masterNodeGroup.serverGroup
      объект

      ServerGroup объединяет инстансы в группу. Инстансы в такой группе будут размещены на одном гипервизоре (affinity) или на разных гипервизорах (anti-affinity). Это позволяет повысить отказоустойчивость кластера.

      • masterNodeGroup.serverGroup.policy
        строка

        Обязательный параметр

        Политика распределения инстансов:

        • AntiAffinity — размещает инстансы на разных гипервизорах. Данной политикой управляет Deckhouse.

        Допустимые значения: AntiAffinity

    • masterNodeGroup.volumeTypeMap
      объект

      Обязательный параметр

      Словарь типов дисков для хранения данных etcd и конфигурационных файлов Kubernetes.

      Формат элементов словаря: <ЗОНА ДОСТУПНОСТИ>: <ТИП ДИСКА> (см. пример).

      Если указан параметр rootDiskSize, этот же тип диска будет использован в качестве загрузочного диска виртуальной машины.

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

      Если значение, указанное в replicas, превышает количество элементов в словаре, master-узлы, чьи номера превышают длину словаря, получают значения, начиная с начала словаря. Если для словаря из примера указано replicas: 5, с типом диска fast-eu-1a будут master-0, master-2 и master-4, а с типом диска fast-eu-1b будут master-1 и master-3.

      Пример:

      volumeTypeMap:
        eu-1a: fast-eu-1a
        eu-1b: fast-eu-1b
      
  • nodeGroups
    массив объектов

    Массив дополнительных NodeGroup для создания статических узлов (например, для выделенных frontend-узлов или шлюзов).

    • nodeGroups.instanceClass
      объект

      Обязательный параметр

      Частичное содержимое полей.

      • nodeGroups.instanceClass.etcdDiskSizeGb
        целочисленный

        Размер диска для etcd. Значение указывается в гигабайтах.

        По умолчанию: 10

        Пример:

        etcdDiskSizeGb: 10
        
      • nodeGroups.instanceClass.flavorName
        строка

        Обязательный параметр

        Тип заказываемых виртуальных машин.

      • nodeGroups.instanceClass.imageName
        строка

        Обязательный параметр

        Имя образа виртуальной машины, который будет использоваться для инстанса.

        Список поддерживаемых Deckhouse ОС и их версий можно найти на странице Поддерживаемые версии Kubernetes и ОС (учитывайте используемую версию Deckhouse).

      • nodeGroups.instanceClass.rootDiskSize
        целочисленный

        Размер root-диска. Значение указывается в гигабайтах.

        Параметр также влияет на тип диска.

    • nodeGroups.name
      строка

      Обязательный параметр

      Имя NodeGroup, которое будет использоваться для генерации имен узлов.

    • nodeGroups.nodeTemplate

      Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узлов.

      • nodeGroups.nodeTemplate.annotations
        объект

        Пример:

        annotations:
          ai.fleet.com/discombobulate: 'true'
        
      • nodeGroups.nodeTemplate.labels
        объект

        Список лейблов, которые будут прикреплены ко всем ресурсам кластера (если они это поддерживают).

        Аналогично стандартному полю metadata.labels.

        Если поменять лейблы в рабочем кластере, после применения изменений необходимо пересоздать все машины.

        Пример:

        labels:
          environment: production
          app: warp-drive-ai
        
      • nodeGroups.nodeTemplate.taints
        массив объектов

        Аналогично полю .spec.taints из объекта Node.

        Доступны только поля effect, key, values.

        Пример:

        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
        
        • nodeGroups.nodeTemplate.taints.effect
          строка

          Допустимые значения: NoSchedule, PreferNoSchedule, NoExecute

        • nodeGroups.nodeTemplate.taints.key
          строка
        • nodeGroups.nodeTemplate.taints.value
          строка
    • nodeGroups.replicas
      целочисленный

      Обязательный параметр

      Количество узлов.

  • provider
    объект

    Обязательный параметр

    • provider.accessKey
      строка

      Обязательный параметр

      Ключ доступа к облаку Huawei Cloud.

    • provider.authURL
      строка

      URL-адрес аутентификации личности.

    • provider.cloud
      строка

      Обязательный параметр

      Конечная точка поставщика облачных услуг.

    • provider.domainName
      строка

      Имя учетной записи IAM для охвата.

    • provider.insecure
      булевый

      Доверять самоподписанным SSL-сертификатам.

    • provider.projectID
      строка

      Идентификатор проекта.

    • provider.region
      строка

      Обязательный параметр

      Регион Huawei Cloud, в котором будет развернут кластер.

    • provider.secretKey
      строка

      Обязательный параметр

      Секретный ключ облака Huawei Cloud.

  • sshPublicKey
    строка

    Обязательный параметр

    Публичный ключ для доступа на узлы.

  • standard
    объект

    Настройки для схемы размещения Standard.

    • standard.enableEIP
      булевый

      Включите Elastic IP для мастер узлов.

      Шаблон: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$

    • standard.internalNetworkCIDR
      строка

      Обязательный параметр

      Адресация для внутренней сети узлов кластера.

      Шаблон: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$

    • standard.internalNetworkDNSServers
      массив строк

      Список адресов рекурсивных DNS внутренней сети.

      • Элемент массива
        строка

        Шаблон: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

    • standard.internalNetworkSecurity
      булевый

      Флаг, который определяет необходимость настройки SecurityGroups на портах внутренней сети.

      По умолчанию: true

  • vpcPeering
    объект

    Настройки для схемы размещения VpcPeering.

    • vpcPeering.internalNetworkCIDR
      строка

      Обязательный параметр

      Адресация для внутренней сети узлов кластера.

      Шаблон: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$

    • vpcPeering.internalNetworkDNSServers
      массив строк

      Список адресов рекурсивных DNS внутренней сети узлов кластера.

      • Элемент массива
        строка

        Шаблон: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

    • vpcPeering.internalNetworkSecurity
      булевый

      Флаг, который определяет необходимость настройки SecurityGroups на портах внутренней сети.

      По умолчанию: true

    • vpcPeering.subnet
      строка

      Имя подсети в сети VPC.

  • zones
    массив строк

    Необязательный параметр.

    Глобальное ограничение набора зон, с которыми работает данный облачный провайдер.