Instance

Scope: Cluster
Version: v1alpha1

Описывает независимый от реализации объект эфемерной машины.

InstanceTypesCatalog

Scope: Cluster
Version: v1alpha1

Contains information about discovered data from cloud.

  • instanceTypes
    массив объектов

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

    List of available instance types.

    • instanceTypes.cpu
      строка или число

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

      The number of CPUs for the instance type.

      Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • instanceTypes.memory
      строка или число

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

      The amount of RAM a instance type has.

      Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

    • instanceTypes.name
      строка

      Instance type name.

    • instanceTypes.rootDisk
      строка или число

      Root disk size.

      Шаблон: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$

NodeGroup

Scope: Cluster

Описывает runtime-параметры группы узлов.

Пример:

# NodeGroup for cloud nodes in AWS.
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
  name: test
spec:
  nodeType: CloudEphemeral
  cloudInstances:
    zones:
      - eu-west-1a
      - eu-west-1b
    minPerZone: 1
    maxPerZone: 2
    classReference:
      kind: AWSInstanceClass
      name: test
  nodeTemplate:
    labels:
      tier: test
---
# NodeGroup for static nodes on bare metal servers (or VMs).
apiVersion: deckhouse.io/v1
kind: NodeGroup
metadata:
  name: worker
spec:
  nodeType: Static
  • metadata
    объект
    • metadata.name
      строка

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

      Максимальная длина: 42

  • spec
    объект

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

    • spec.chaos
      объект

      Настройки Chaos Monkey.

      Пример:

      chaos:
        mode: DrainAndDelete
        period: 24h
      
      • spec.chaos.mode
        строка

        Режим работы Chaos Monkey:

        • DrainAndDelete — при срабатывании делает узлу drain, затем удаляет его.
        • Disabled — не трогает данную NodeGroup.

        По умолчанию: "Disabled"

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

      • spec.chaos.period
        строка

        Интервал времени срабатывания Chaos Monkey.

        Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.

        По умолчанию: "6h"

        Шаблон: ^([0-9]+h([0-9]+m)?|[0-9]+m)$

    • spec.cloudInstances
      объект

      Параметры заказа облачных виртуальных машин.

      Внимание! Допустимо использовать только совместно с nodeType: CloudEphemeral.

      • spec.cloudInstances.classReference
        объект

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

        Ссылка на объект InstanceClass. Уникален для каждого модуля cloud-provider-*.

        • spec.cloudInstances.classReference.kind
          строка

          Тип объекта (например, OpenStackInstanceClass). Тип объекта указан в документации соответствующего модуля облачного провайдера.

          Допустимые значения: OpenStackInstanceClass, GCPInstanceClass, VsphereInstanceClass, AWSInstanceClass, YandexInstanceClass, AzureInstanceClass, VCDInstanceClass, ZvirtInstanceClass, DynamixInstanceClass

        • spec.cloudInstances.classReference.name
          строка

          Имя нужного InstanceClass-объекта (например, finland-medium).

      • spec.cloudInstances.maxPerZone
        целочисленный

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

        Максимальное количество инстансов в зоне. Проставляется как верхняя граница в cluster-autoscaler.

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

      • spec.cloudInstances.maxSurgePerZone
        целочисленный

        Количество одновременно создаваемых инстансов при scale-up.

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

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

      • spec.cloudInstances.maxUnavailablePerZone
        целочисленный

        Недоступное количество инстансов при RollingUpdate’е.

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

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

      • spec.cloudInstances.minPerZone
        целочисленный

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

        Минимальное количество инстансов в зоне.

        Проставляется в объект MachineDeployment и в качестве нижней границы в cluster autoscaler.

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

      • spec.cloudInstances.priority
        целочисленный

        Приоритет группы узлов.

        При масштабировании кластера cluster autoscaler будет выбирать сначала группы узлов с установленным бОльшим приоритетом. Если существует несколько групп узлов с одинаковым приоритетом, группа будет выбрана из них случайным образом.

        Использование приоритетов может быть удобно, например, для предпочтения заказа более дешевых узлов (например, spot-инстансов) перед более дорогими.

      • spec.cloudInstances.quickShutdown
        булевый

        Снижает время drain’а CloudEphemeral-машин до 5 минут.

      • spec.cloudInstances.standby
        строка или число

        Количество резервных (подогретых) узлов в этой NodeGroup во всех зонах.

        Резервный узел — это узел кластера, на котором резервируются ресурсы, доступные в любой момент для масштабирования. Наличие такого узла позволяет cluster autoscaler’у не ждать инициализации узла (которая может занимать несколько минут), а сразу размещать на нем нагрузку.

        Значение может быть абсолютным (например, 2) или процентом желаемых узлов (например, 10%). Если указан процент, абсолютное значение рассчитывается исходя из процента от максимального количества узлов (параметр maxPerZone), округленного в меньшую сторону, но не менее одного.

        Шаблон: ^[0-9]+%?$

      • spec.cloudInstances.standbyHolder
        объект

        Объем резервируемых ресурсов.

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

        • spec.cloudInstances.standbyHolder.notHeldResources
          Параметр устарел
          объект

          Устарело: параметр больше не используется. Используйте параметр overprovisioningRate.

          Резервируемые ресурсы.

          • spec.cloudInstances.standbyHolder.notHeldResources.cpu
            строка или число

            Количество CPU.

            Значение может быть абсолютным (например, 1) или в millicore-формате (например, 1500m).

            Шаблон: ^[0-9]+m?$

          • spec.cloudInstances.standbyHolder.notHeldResources.memory
            строка или число

            Количество памяти.

            Значение может быть абсолютным в байтах (например, 128974848) или в Kubernetes-формате с суффиксами: G, Gi, M, Mi (например, 750Mi).

            Шаблон: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$

        • spec.cloudInstances.standbyHolder.overprovisioningRate
          целочисленный

          Процент резервируемых ресурсов, рассчитываемый от ресурсов узла в NodeGroup.

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

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

      • spec.cloudInstances.zones
        массив строк

        Переопределение перечня зон, в которых создаются инстансы.

        Значение по умолчанию зависит от выбранного облачного провайдера и обычно соответствует всем зонам используемого региона.

        Пример:

        zones:
        - Helsinki
        - Espoo
        - Tampere
        
    • spec.cri
      объект

      Параметры container runtime.

      • spec.cri.containerd
        объект

        Параметры работы containerd.

        При настройке этих параметров cri.type должен быть Containerd.

        • spec.cri.containerd.maxConcurrentDownloads
          целочисленный

          Максимальное количество параллельных потоков загрузки для каждой операции pull.

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

      • spec.cri.docker
        Параметр устарел
        объект

        Параметры настройки Docker.

        • spec.cri.docker.manage
          булевый

          Автоматическое управление версией и параметрами Docker.

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

        • spec.cri.docker.maxConcurrentDownloads
          целочисленный

          Максимальное количество потоков одновременного скачивания Docker-образов.

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

      • spec.cri.notManaged
        объект

        Настройки для CRI, установленных на узлах вручную.

        • spec.cri.notManaged.criSocketPath
          строка

          Путь к сокету CRI.

      • spec.cri.type
        строка

        Тип container runtime.

        Если не указан, используется значение defaultCRI из первичной конфигурации кластера (параметр cluster-configuration.yaml Secret’а d8-cluster-configuration в пространстве имен kube-system), которая создается при установке.

        Допустимые значения: Docker, Containerd, NotManaged

    • spec.disruptions
      объект

      Параметры обновлений, приводящих к возможному простою.

      Пример:

      disruptions:
        approvalMode: Automatic
        automatic:
          drainBeforeApproval: false
          windows:
          - from: '06:00'
            to: '08:00'
            days:
            - Tue
            - Sun
      
      • spec.disruptions.approvalMode
        строка

        Режим выдачи разрешения на disruptive-обновление (обновление, требующее прерывание работы узла):

        • Manual — отключить автоматическую выдачу разрешений на disruptive-обновление. Если потребуется disruptive-обновление, загорится специальный алерт. Внимание! Для группы узлов master режим выдачи разрешения всегда должен быть Manual, чтобы избежать проблем при drain’е узла.
        • Automatic — автоматически выдавать разрешения на disruptive-обновление.
        • RollingUpdate — в этом режиме будет создан новый узел с обновленными настройками, а старый узел будет удален. Разрешено только для облачных узлов.

        Когда не используется режим RollingUpdate, при обновлении узел освобождается от нагрузки (drain), после чего обновляется (перезагружается) и вводится в работу. Обратите внимание, что в этом случае в кластере должно быть место для размещения нагрузки на время, пока обновляемый узел недоступен. В режиме RollingUpdate узел заменяется на обновленный, то есть на время обновления в кластере появляется дополнительный узел. В облачной инфраструктуре режим RollingUpdate удобен, например, если в кластере нет ресурсов для временного размещения нагрузки с обновляемого узла.

        По умолчанию: "Automatic"

        Допустимые значения: Manual, Automatic, RollingUpdate

      • spec.disruptions.automatic
        объект

        Дополнительные параметры для режима Automatic.

        • spec.disruptions.automatic.drainBeforeApproval
          булевый

          Выгон (draining) подов с узла перед выдачей разрешения на disruption.

          Внимание! Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выгона подов с узлов):

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

        • spec.disruptions.automatic.windows
          массив объектов

          Список окон disruption-обновлений узлов.

          • spec.disruptions.automatic.windows.days
            массив строк

            Дни недели, в которые применяется окно обновлений.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              День недели.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.automatic.windows.from
            строка

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

            Время начала окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.automatic.windows.to
            строка

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

            Время окончания окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
      • spec.disruptions.rollingUpdate
        объект

        Дополнительные параметры для режима RollingUpdate.

        • spec.disruptions.rollingUpdate.windows
          массив объектов

          Список окон disruption-обновлений узлов.

          • spec.disruptions.rollingUpdate.windows.days
            массив строк

            Дни недели, в которые применяется окно обновлений.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              День недели.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.rollingUpdate.windows.from
            строка

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

            Время начала окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.rollingUpdate.windows.to
            строка

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

            Время окончания окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
    • spec.fencing
      объект

      Включить fencing для этой группы.

      • spec.fencing.mode
        строка

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

        Поддерживаемые режимы работы fencing:

        • Watchdog - использовать модуль ядра watchdog (сторожевой таймер).

        Реализация Watchdog включает в себя два основных компонента:

        1. Fencing-agent - это DaemonSet, который разворачивается на определенной группе узлов (nodegroup). После запуска агент активирует Watchdog и устанавливает специальную метку node-manager.deckhouse.io/fencing-enabled на узле, где он функционирует. Агент регулярно проверяет доступность Kubernetes API. Если API доступен, агент отправляет сигнал в Watchdog, что сбрасывает сторожевой таймер. Также агент отслеживает специальные метки обслуживания на узле и, в зависимости от их наличия, включает или отключает Watchdog. В качестве Watchdog используется модуль ядра softdog с определенными параметрами (soft_margin=60 и soft_panic=1). Это означает, что время таймаута сторожевого таймера составляет 60 секунд. По истечении этого времени происходит kernel-panic, и узел остается в этом состоянии до тех пор, пока пользователь не выполнит его перезагрузку.

        2. Fencing-controller - контроллер, который отслеживает все узлы с установленной меткой node-manager.deckhouse.io/fencing-enabled. Если какой-либо из узлов становится недоступным на протяжении более 60 секунд, контроллер удаляет все поды с этого узла и затем удаляет сам узел.

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

    • spec.kubelet
      объект

      Параметры настройки kubelet.

      • spec.kubelet.containerLogMaxFiles
        целочисленный

        Максимальное количество файлов журналов с учетом ротации.

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

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

      • spec.kubelet.containerLogMaxSize
        строка

        Максимальный размер файла журнала до того, как он будет ротирован.

        По умолчанию: "50Mi"

        Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

      • spec.kubelet.maxPods
        целочисленный

        Максимальное количество подов на узлах данной NodeGroup.

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

      • spec.kubelet.resourceReservation
        объект

        Управление резервированием ресурсов для системных служб на узле.

        Больше информации в документации Kubernetes.

        • spec.kubelet.resourceReservation.mode
          строка

          Выбор режима резервирования системных ресурсов:

          • Off — отключение резервирования системных ресурсов.
          • Auto — автоматический подсчет резервирования через алгоритм, основанный на размере узла.
          • Static — указание статических значений через параметр static.

          Обратите внимание, что Deckhouse не использует выделенную cgroup для резервирования ресурсов (флаг -system-reserved-cgroup не используется).

          По умолчанию: "Auto"

        • spec.kubelet.resourceReservation.static
          объект

          Параметры резервирования ресурсов в режиме Static.

          • spec.kubelet.resourceReservation.static.cpu
            строка или число

            Шаблон: \d+[m]

          • spec.kubelet.resourceReservation.static.ephemeralStorage
            строка или число

            Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

          • spec.kubelet.resourceReservation.static.memory
            строка или число

            Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

      • spec.kubelet.rootDir
        строка

        Путь к каталогу для файлов kubelet (volume mounts и т. д.).

        По умолчанию: "/var/lib/kubelet"

      • spec.kubelet.topologyManager
        объект

        Управление менеджером топологии.

        Менеджер топологии позволяет планировщику Kubernetes учитывать данные о топологии ресурсов при планировании подов.

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

        Дополнительная информация в документации Kubernetes.

        • spec.kubelet.topologyManager.enabled
          булевый

          Включение использования менеджера топологий.

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

        • spec.kubelet.topologyManager.policy
          строка

          Определение политики выравнивания ресурсов с учетом топологии узлов при планировании пода.

          Поддерживаются четыре политики:

          • None — выравнивание ресурсов не выполняется (используется по умолчанию).
          • BestEffort — для каждого контейнера определяется предпочтительный NUMA-узел. Если предпочтительные узлы для планирования пода отсутствуют, то новый под будет запланирован на узел без учета данных менеджера топологии, а уже запущенный под продолжит работу.
          • Restricted — для каждого контейнера пода определяется предпочтительный NUMA-узел. Если предпочтительные узлы для планирования пода отсутствуют, то новый под не будет запланирован на узел, а уже запущенный под будет остановлен.
          • SingleNumaNode — для каждого контейнера пода определяется предпочтительный NUMA-узел. Если нет NUMA-узла, предпочтительного для всех контейнеров пода, то новый под не будет запланирован, а уже запущенный под будет остановлен.

          Больше информации читайте в документации Kubernetes.

          По умолчанию: "None"

          Допустимые значения: None, BestEffort, Restricted, SingleNumaNode

        • spec.kubelet.topologyManager.scope
          строка

          Определение гранулярности выравнивания ресурсов:

          • Container. Вычисление предпочтительных ресурсов выполняется для контейнера. При вычислении не учитывается, что несколько контейнеров относятся к одному поду.
          • Pod. Вычисление предпочтительных ресурсов выполняется для пода. Все контейнеры пода рассматриваются как единое целое при вычислении.

          По умолчанию: "Container"

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

    • spec.nodeTemplate
      объект

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

      Пример:

      nodeTemplate:
        labels:
          environment: production
          app: warp-drive-ai
        annotations:
          ai.fleet.com/discombobulate: 'true'
        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
      
      • spec.nodeTemplate.annotations
        объект

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

        Пример:

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

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

        Пример:

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

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

        Внимание! Доступны только поля effect, key, value.

        Пример:

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

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

        • spec.nodeTemplate.taints.key
          строка
        • spec.nodeTemplate.taints.value
          строка
    • spec.nodeType
      строка

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

      Тип узлов, которые представляет эта группа:

      • CloudEphemeral — узлы для этой группы будут автоматически создаваться (и удаляться) в настроенном облачном провайдере;
      • CloudPermanent — узлы этой группы берутся из ProviderClusterConfiguration и создаются/удаляются через dhctl;
      • CloudStatic — узел, созданный вручную или любыми внешними инструментами, размещенный в том же облаке, с которым настроена интеграция у одного из облачных провайдеров. На таком узле работает CSI и такой узел управляется cloud-controller-manager’ом: объект Node автоматически обогащается информацией о зоне и регионе по данным, полученным от облака; при удалении узла из облака, соответствующий ему объект Node будет удален в Kubernetes;
      • Static — статический узел, размещенный на физическом сервере или виртуальной машине. Узел не управляется cloud-controller-manager’ом, даже если включен один из облачных провайдеров.

      Допустимые значения: CloudEphemeral, CloudPermanent, CloudStatic, Static

    • spec.operatingSystem
      объект

      Параметры операционной системы.

      • spec.operatingSystem.manageKernel
        Параметр устарел
        булевый

        Этот параметр не используется. Раньше он включaл автоматическое управление ядром операционной системы.

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

    • spec.staticInstances
      объект

      Параметры настройки машин статических узлов кластера.

      • spec.staticInstances.count
        целочисленный

        Количество виртуальных машин, которые нужно создать.

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

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

      • spec.staticInstances.labelSelector
        объект

        Настройка фильтра меток (label) по ресурсам.

        Если указаны одновременно matchExpressions и matchLabels, учитываются оба фильтра (операция И).

        Пустое значение labelSelector соответствует всем объектам. Нулевое — никаким.

        • spec.staticInstances.labelSelector.matchExpressions
          массив объектов

          Список фильтров на основе выражений.

          Итоговый результат — результат пересечения множеств, определяемых всеми фильтрами в списке (операция И).

          A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

          • spec.staticInstances.labelSelector.matchExpressions.key
            строка

            Имя метки.

          • spec.staticInstances.labelSelector.matchExpressions.operator
            строка

            Оператор сравнения.

          • spec.staticInstances.labelSelector.matchExpressions.values
            массив строк

            Значение метки.

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

              Шаблон: [a-z0-9]([-a-z0-9]*[a-z0-9])?

              Длина: 1..63

        • spec.staticInstances.labelSelector.matchLabels
          объект

          Фильтр на основе совпадения/несовпадения меток.

    • spec.update
      объект
      • spec.update.maxConcurrent
        строка или число

        Максимальное количество одновременно обновляемых узлов.

        Можно указать число узлов или процент от общего количества узлов в данной группе.

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

        Шаблон: ^[1-9][0-9]*%?$

Описывает runtime-параметры группы узлов.

  • metadata
    объект
    • metadata.name
      строка

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

      Максимальная длина: 42

  • spec
    объект

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

    • spec.chaos
      объект

      Настройки Chaos Monkey.

      Пример:

      chaos:
        mode: DrainAndDelete
        period: 24h
      
      • spec.chaos.mode
        строка

        Режим работы Chaos Monkey:

        • DrainAndDelete — при срабатывании делает узлу drain, затем удаляет его.
        • Disabled — не трогает данную NodeGroup.

        По умолчанию: "Disabled"

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

      • spec.chaos.period
        строка

        Интервал времени срабатывания Chaos Monkey.

        Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.

        По умолчанию: "6h"

        Шаблон: ^[0-9]+[mh]{1}$

    • spec.cloudInstances
      объект

      Параметры заказа облачных виртуальных машин.

      Внимание! Допустимо использовать только совместно с nodeType: CloudEphemeral.

      • spec.cloudInstances.classReference
        объект

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

        Ссылка на объект InstanceClass. Уникален для каждого модуля cloud-provider-*.

        • spec.cloudInstances.classReference.kind
          строка

          Тип объекта (например, OpenStackInstanceClass). Тип объекта указан в документации соответствующего модуля облачного провайдера.

          Допустимые значения: OpenStackInstanceClass, GCPInstanceClass, VsphereInstanceClass, AWSInstanceClass, YandexInstanceClass, AzureInstanceClass, VCDInstanceClass, ZvirtInstanceClass, DynamixInstanceClass

        • spec.cloudInstances.classReference.name
          строка

          Имя нужного InstanceClass-объекта (например, finland-medium).

      • spec.cloudInstances.maxPerZone
        целочисленный

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

        Максимальное количество инстансов в зоне.

        Проставляется как верхняя граница в cluster-autoscaler.

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

      • spec.cloudInstances.maxSurgePerZone
        целочисленный

        Количество одновременно создаваемых инстансов при scale-up.

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

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

      • spec.cloudInstances.maxUnavailablePerZone
        целочисленный

        Недоступное количество инстансов при RollingUpdate’е.

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

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

      • spec.cloudInstances.minPerZone
        целочисленный

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

        Минимальное количество инстансов в зоне.

        Проставляется в объект MachineDeployment и в качестве нижней границы в cluster autoscaler.

        При значении 0 для некоторых InstanceClass нужно задавать capacity. Более подробно можно узнать в описании нужных InstanceClass.

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

      • spec.cloudInstances.standby
        строка или число

        Количество резервных (подогретых) узлов в этой NodeGroup во всех зонах.

        Резервный узел — это узел кластера, на котором резервируются ресурсы, доступные в любой момент для масштабирования. Наличие такого узла позволяет cluster autoscaler’у не ждать инициализации узла (которая может занимать несколько минут), а сразу размещать на нем нагрузку.

        Значение может быть абсолютным (например, 2) или процентом желаемых узлов (например, 10%). Если указан процент, абсолютное значение рассчитывается исходя из процента от максимального количества узлов (параметр maxPerZone), округленного в меньшую сторону, но не менее одного.

        Шаблон: ^[0-9]+%?$

      • spec.cloudInstances.standbyHolder
        объект

        Объем резервируемых ресурсов.

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

        • spec.cloudInstances.standbyHolder.notHeldResources
          объект

          Резервируемые ресурсы.

          • spec.cloudInstances.standbyHolder.notHeldResources.cpu
            строка или число

            Количество CPU.

            Значение может быть абсолютным (например, 1) или в millicore-формате (например, 1500m).

            Шаблон: ^[0-9]+m?$

          • spec.cloudInstances.standbyHolder.notHeldResources.memory
            строка или число

            Количество памяти.

            Значение может быть абсолютным в байтах (например, 128974848) или в Kubernetes-формате с суффиксами: G, Gi, M, Mi (например, 750Mi).

            Шаблон: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$

      • spec.cloudInstances.zones
        массив строк

        Переопределение перечня зон, в которых создаются инстансы.

        Значение по умолчанию зависит от выбранного облачного провайдера и обычно соответствует всем зонам используемого региона.

        Пример:

        zones:
        - Helsinki
        - Espoo
        - Tampere
        
    • spec.cri
      объект

      Параметры container runtime.

      • spec.cri.containerd
        объект

        Параметры работы containerd.

        При настройке этих параметров cri.type должен быть Containerd.

        • spec.cri.containerd.maxConcurrentDownloads
          целочисленный

          Максимальное количество параллельных потоков загрузки для каждой операции pull.

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

      • spec.cri.docker
        объект

        Параметры настройки Docker.

        Внимание! Docker считается устаревшим, не используйте его.

        • spec.cri.docker.manage
          булевый

          Автоматическое управление версией и параметрами Docker.

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

        • spec.cri.docker.maxConcurrentDownloads
          целочисленный

          Максимальное количество потоков одновременного скачивания Docker-образов.

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

      • spec.cri.notManaged
        объект

        Настройки для CRI, установленных на узлах вручную.

        • spec.cri.notManaged.criSocketPath
          строка

          Путь к сокету CRI.

      • spec.cri.type
        строка

        Тип container runtime.

        Если не указан, используется значение defaultCRI из первичной конфигурации кластера (параметр cluster-configuration.yaml Secret’а d8-cluster-configuration в пространстве имен kube-system), которая создается при установке.

        Допустимые значения: Docker, Containerd, NotManaged

    • spec.disruptions
      объект

      Параметры обновлений, приводящих к возможному простою.

      Пример:

      disruptions:
        approvalMode: Automatic
        automatic:
          drainBeforeApproval: false
          windows:
          - from: '06:00'
            to: '08:00'
            days:
            - Tue
            - Sun
      
      • spec.disruptions.approvalMode
        строка

        Режим выдачи разрешения на disruptive-обновление (обновление, требующее прерывание работы узла):

        • Manual — отключить автоматическую выдачу разрешений на disruptive-обновление. Если потребуется disruptive-обновление, загорится специальный алерт. Внимание! Для группы узлов master режим выдачи разрешения всегда должен быть Manual, чтобы избежать проблем при drain’е узла.
        • Automatic — автоматически выдавать разрешения на disruptive-обновление.
        • RollingUpdate — в этом режиме будет создан новый узел с обновленными настройками, а старый узел будет удален. Разрешено только для облачных узлов.

        Когда не используется режим RollingUpdate, при обновлении узел освобождается от нагрузки (drain), после чего обновляется (перезагружается) и вводится в работу. Обратите внимание, что в этом случае в кластере должно быть место для размещения нагрузки на время, пока обновляемый узел недоступен. В режиме RollingUpdate узел заменяется на обновленный, то есть на время обновления в кластере появляется дополнительный узел. В облачной инфраструктуре режим RollingUpdate удобен, например, если в кластере нет ресурсов для временного размещения нагрузки с обновляемого узла.

        По умолчанию: "Automatic"

        Допустимые значения: Manual, Automatic, RollingUpdate

      • spec.disruptions.automatic
        объект

        Дополнительные параметры для режима Automatic.

        • spec.disruptions.automatic.drainBeforeApproval
          булевый

          Выгон (draining) подов с узла перед выдачей разрешения на disruption.

          Внимание! Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выгона подов с узлов):

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

        • spec.disruptions.automatic.windows
          массив объектов

          Список окон disruption-обновлений узлов.

          • spec.disruptions.automatic.windows.days
            массив строк

            Дни недели, в которые применяется окно обновлений.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              День недели.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.automatic.windows.from
            строка

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

            Время начала окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.automatic.windows.to
            строка

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

            Время окончания окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
      • spec.disruptions.rollingUpdate
        объект

        Additional parameters for the RollingUpdate mode.

        • spec.disruptions.rollingUpdate.windows
          массив объектов

          Time windows for node disruptive updates.

          • spec.disruptions.rollingUpdate.windows.days
            массив строк

            Days of the week when node could be updated.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              Day of the week.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.rollingUpdate.windows.from
            строка

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

            Start time of disruptive update window (UTC timezone).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.rollingUpdate.windows.to
            строка

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

            End time of disruptive update window (UTC timezone).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
    • spec.kubelet
      объект

      Параметры настройки kubelet.

      • spec.kubelet.containerLogMaxFiles
        целочисленный

        Максимальное количество файлов журналов с учетом ротации.

        Внимание! Параметр не влияет на работу, если тип CRI — Docker.

        Внимание! Docker считается устаревшим, не используйте его.

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

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

      • spec.kubelet.containerLogMaxSize
        строка

        Максимальный размер файла журнала до того, как он будет ротирован.

        Внимание! Параметр не влияет на работу, если тип CRI — Docker.

        Внимание! Docker считается устаревшим, не используйте его.

        По умолчанию: "50Mi"

        Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

      • spec.kubelet.maxPods
        целочисленный

        Максимальное количество подов на узлах данной NodeGroup.

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

      • spec.kubelet.rootDir
        строка

        Путь к каталогу для файлов kubelet (volume mounts и т. д.).

        По умолчанию: "/var/lib/kubelet"

    • spec.nodeTemplate
      объект

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

      Пример:

      nodeTemplate:
        labels:
          environment: production
          app: warp-drive-ai
        annotations:
          ai.fleet.com/discombobulate: 'true'
        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
      
      • spec.nodeTemplate.annotations
        объект

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

        Пример:

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

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

        Пример:

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

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

        Внимание! Доступны только поля effect, key, value.

        Пример:

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

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

        • spec.nodeTemplate.taints.key
          строка
        • spec.nodeTemplate.taints.value
          строка
    • spec.nodeType
      строка

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

      Тип узлов, которые представляет эта группа:

      • Cloud — узлы для этой группы будут автоматически создаваться (и удаляться) в настроенном облачном провайдере;
      • Static — статический узел, размещенный на железном сервере или виртуальной машине. Узел не управляется cloud-controller-manager’ом, даже если включен один из облачных провайдеров;
      • Hybrid — статический узел (созданный вручную или любыми внешними инструментами), размещенный в том же облаке, с которым настроена интеграция у одного из облачных провайдеров. На таком узле работает CSI и такой узел управляется cloud-controller-manager’ом: объект Node автоматически обогащается информацией о зоне и регионе по данным, полученным от облака; при удалении узла из облака соответствующий ему объект Node будет удален в Kubernetes.

      Допустимые значения: Cloud, Static, Hybrid

    • spec.operatingSystem
      объект

      Параметры операционной системы.

      • spec.operatingSystem.manageKernel
        булевый

        Этот параметр не используется. Раньше он включaл автоматическое управление ядром операционной системы.

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

Описывает runtime-параметры группы узлов.

  • metadata
    объект
    • metadata.name
      строка

      Шаблон: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$

      Максимальная длина: 42

  • spec
    объект

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

    • spec.chaos
      объект

      Настройки Chaos Monkey.

      Пример:

      chaos:
        mode: DrainAndDelete
        period: 24h
      
      • spec.chaos.mode
        строка

        Режим работы Chaos Monkey:

        • DrainAndDelete — при срабатывании делает узлу drain, затем удаляет его.
        • Disabled — не трогает данную NodeGroup.

        По умолчанию: "Disabled"

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

      • spec.chaos.period
        строка

        Интервал времени срабатывания Chaos Monkey.

        Задается в виде строки с указанием часов и минут: 30m, 1h, 2h30m, 24h.

        По умолчанию: "6h"

        Шаблон: ^[0-9]+[mh]{1}$

    • spec.cloudInstances
      объект

      Параметры заказа облачных виртуальных машин.

      Внимание! Допустимо использовать только совместно с nodeType: CloudEphemeral.

      • spec.cloudInstances.classReference
        объект

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

        Ссылка на объект InstanceClass. Уникален для каждого модуля cloud-provider-*.

        • spec.cloudInstances.classReference.kind
          строка

          Тип объекта (например, OpenStackInstanceClass). Тип объекта указан в документации соответствующего модуля облачного провайдера.

          Допустимые значения: OpenStackInstanceClass, GCPInstanceClass, VsphereInstanceClass, AWSInstanceClass, YandexInstanceClass, AzureInstanceClass, VCDInstanceClass, ZvirtInstanceClass, DynamixInstanceClass

        • spec.cloudInstances.classReference.name
          строка

          Имя нужного InstanceClass-объекта (например, finland-medium).

      • spec.cloudInstances.maxPerZone
        целочисленный

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

        Максимальное количество инстансов в зоне.

        Проставляется как верхняя граница в cluster-autoscaler.

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

      • spec.cloudInstances.maxSurgePerZone
        целочисленный

        Количество одновременно создаваемых инстансов при scale-up.

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

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

      • spec.cloudInstances.maxUnavailablePerZone
        целочисленный

        Недоступное количество инстансов при RollingUpdate’е.

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

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

      • spec.cloudInstances.minPerZone
        целочисленный

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

        Минимальное количество инстансов в зоне.

        Проставляется в объект MachineDeployment и в качестве нижней границы в cluster autoscaler.

        При значении 0 для некоторых InstanceClass нужно задавать capacity. Более подробно можно узнать в описании нужных InstanceClass.

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

      • spec.cloudInstances.standby
        строка или число

        Количество резервных (подогретых) узлов в этой NodeGroup во всех зонах.

        Резервный узел — это узел кластера, на котором резервируются ресурсы, доступные в любой момент для масштабирования. Наличие такого узла позволяет cluster autoscaler’у не ждать инициализации узла (которая может занимать несколько минут), а сразу размещать на нем нагрузку.

        Значение может быть абсолютным (например, 2) или процентом желаемых узлов (например, 10%). Если указан процент, абсолютное значение рассчитывается исходя из процента от максимального количества узлов (параметр maxPerZone), округленного в меньшую сторону, но не менее одного.

        Шаблон: ^[0-9]+%?$

      • spec.cloudInstances.standbyHolder
        объект

        Объем резервируемых ресурсов.

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

        • spec.cloudInstances.standbyHolder.notHeldResources
          объект

          Резервируемые ресурсы.

          • spec.cloudInstances.standbyHolder.notHeldResources.cpu
            строка или число

            Количество CPU.

            Значение может быть абсолютным (например, 1) или в millicore-формате (например, 1500m).

            Шаблон: ^[0-9]+m?$

          • spec.cloudInstances.standbyHolder.notHeldResources.memory
            строка или число

            Количество памяти.

            Значение может быть абсолютным в байтах (например, 128974848) или в Kubernetes-формате с суффиксами: G, Gi, M, Mi (например, 750Mi).

            Шаблон: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)?$

      • spec.cloudInstances.zones
        массив строк

        Переопределение перечня зон, в которых создаются инстансы.

        Значение по умолчанию зависит от выбранного облачного провайдера и обычно соответствует всем зонам используемого региона.

        Пример:

        zones:
        - Helsinki
        - Espoo
        - Tampere
        
    • spec.cri
      объект

      Параметры container runtime.

      • spec.cri.containerd
        объект

        Параметры работы containerd.

        При настройке этих параметров cri.type должен быть Containerd.

        • spec.cri.containerd.maxConcurrentDownloads
          целочисленный

          Максимальное количество параллельных потоков загрузки для каждой операции pull.

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

      • spec.cri.type
        строка

        Container runtime type.

        Value defaultCRI from the initial cluster configration (cluster-configuration.yaml parameter from the d8-cluster-configuration secret in the kube-system namespace) is used if not specified.

        Note! the Docker is deprecated.

        Допустимые значения: Docker, Containerd, NotManaged

    • spec.disruptions
      объект

      Параметры обновлений, приводящих к возможному простою.

      Пример:

      disruptions:
        approvalMode: Automatic
        automatic:
          drainBeforeApproval: false
          windows:
          - from: '06:00'
            to: '08:00'
            days:
            - Tue
            - Sun
      
      • spec.disruptions.approvalMode
        строка

        Режим выдачи разрешения на disruptive-обновление (обновление, требующее прерывания работы узла):

        • Manual — отключить автоматическую выдачу разрешений на disruptive-обновление. Если потребуется disruptive-обновление, загорится специальный алерт. Внимание! Для группы узлов master режим выдачи разрешения всегда должен быть Manual, чтобы избежать проблем при drain’е узла.
        • Automatic — автоматически выдавать разрешения на disruptive-обновление.
        • RollingUpdate — в этом режиме будет создан новый узел с обновленными настройками, а старый узел будет удален. Разрешено только для облачных узлов.

        Когда не используется режим RollingUpdate, при обновлении узел освобождается от нагрузки (drain), после чего обновляется (перезагружается) и вводится в работу. Обратите внимание, что в этом случае в кластере должно быть место для размещения нагрузки на время, пока обновляемый узел недоступен. В режиме RollingUpdate узел заменяется на обновленный, то есть на время обновления в кластере появляется дополнительный узел. В облачной инфраструктуре режим RollingUpdate удобен, например, если в кластере нет ресурсов для временного размещения нагрузки с обновляемого узла.

        По умолчанию: "Automatic"

        Допустимые значения: Manual, Automatic, RollingUpdate

      • spec.disruptions.automatic
        объект

        Дополнительные параметры для режима Automatic.

        • spec.disruptions.automatic.drainBeforeApproval
          булевый

          Выгон (draining) подов с узла перед выдачей разрешения на disruption.

          Внимание! Данная настройка игнорируется (узлам будет выдано разрешение без предварительного выгона подов с узлов):

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

        • spec.disruptions.automatic.windows
          массив объектов

          Список окон disruption-обновлений узлов.

          • spec.disruptions.automatic.windows.days
            массив строк

            Дни недели, в которые применяется окно обновлений.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              День недели.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.automatic.windows.from
            строка

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

            Время начала окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.automatic.windows.to
            строка

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

            Время окончания окна обновления (в часовом поясе UTC).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
      • spec.disruptions.rollingUpdate
        объект

        Additional parameters for the RollingUpdate mode.

        • spec.disruptions.rollingUpdate.windows
          массив объектов

          Time windows for node disruptive updates.

          • spec.disruptions.rollingUpdate.windows.days
            массив строк

            Days of the week when node could be updated.

            Примеры:

            days: Mon
            
            days: Wed
            
            • Элемент массива
              строка

              Day of the week.

              Допустимые значения: Mon, Tue, Wed, Thu, Fri, Sat, Sun

          • spec.disruptions.rollingUpdate.windows.from
            строка

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

            Start time of disruptive update window (UTC timezone).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            from: '13:00'
            
          • spec.disruptions.rollingUpdate.windows.to
            строка

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

            End time of disruptive update window (UTC timezone).

            Шаблон: ^(?:\d|[01]\d|2[0-3]):[0-5]\d$

            Пример:

            to: '18:30'
            
    • spec.docker
      объект

      Параметры настройки Docker.

      При настройке этих параметров cri.type должен быть Docker.

      Внимание! Docker считается устаревшим, не используйте его.

      • spec.docker.manage
        булевый

        Автоматическое управление версией и параметрами Docker.

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

      • spec.docker.maxConcurrentDownloads
        целочисленный

        Максимальное количество потоков одновременного скачивания Docker-образов.

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

    • spec.kubelet
      объект

      Параметры настройки kubelet.

      • spec.kubelet.containerLogMaxFiles
        целочисленный

        Максимальное количество файлов журналов с учетом ротации.

        Внимание! Параметр не влияет на работу, если тип CRI — Docker.

        Внимание! Docker считается устаревшим, не используйте его.

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

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

      • spec.kubelet.containerLogMaxSize
        строка

        Максимальный размер файла журнала до того, как он будет ротирован.

        Внимание! Параметр не влияет на работу, если тип CRI — Docker.

        Внимание! Docker считается устаревшим, не используйте его.

        По умолчанию: "50Mi"

        Шаблон: \d+[Ei|Pi|Ti|Gi|Mi|Ki|E|P|T|G|M|k|m]

      • spec.kubelet.maxPods
        целочисленный

        Максимальное количество подов на узлах данной NodeGroup.

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

      • spec.kubelet.rootDir
        строка

        Путь к каталогу для файлов kubelet (volume mounts и т. д.).

        По умолчанию: "/var/lib/kubelet"

    • spec.kubernetesVersion
      строка

      Желаемая минорная версия Kubernetes.

      По умолчанию соответствует глобально выбранной для кластера версии (см. документацию по установке) или, если таковая не определена, текущей версии control plane.

      Допустимые значения: 1.27, 1.28, 1.29, 1.30, 1.31

      Пример:

      kubernetesVersion: '1.29'
      
    • spec.nodeTemplate
      объект

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

      Пример:

      nodeTemplate:
        labels:
          environment: production
          app: warp-drive-ai
        annotations:
          ai.fleet.com/discombobulate: 'true'
        taints:
        - effect: NoExecute
          key: ship-class
          value: frigate
      
      • spec.nodeTemplate.annotations
        объект

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

        Пример:

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

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

        Пример:

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

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

        Внимание! Доступны только поля effect, key, value.

        Пример:

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

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

        • spec.nodeTemplate.taints.key
          строка
        • spec.nodeTemplate.taints.value
          строка
    • spec.nodeType
      строка

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

      Тип узлов, которые представляет эта группа:

      • Cloud — узлы для этой группы будут автоматически создаваться (и удаляться) в настроенном облачном провайдере;
      • Static — статический узел, размещенный на железном сервере или виртуальной машине. Узел не управляется cloud-controller-manager’ом, даже если включен один из облачных провайдеров;
      • Hybrid — статический узел (созданный вручную или любыми внешними инструментами), размещенный в том же облаке, с которым настроена интеграция у одного из облачных провайдеров. На таком узле работает CSI и такой узел управляется cloud-controller-manager’ом: объект Node автоматически обогащается информацией о зоне и регионе по данным, полученным от облака; при удалении узла из облака соответствующий ему объект Node будет удален в Kubernetes.

      Допустимые значения: Cloud, Static, Hybrid

    • spec.operatingSystem
      Параметр устарел
      объект

      Параметры операционной системы.

      • spec.operatingSystem.manageKernel
        Параметр устарел
        булевый

        Этот параметр не используется. Раньше он включaл автоматическое управление ядром операционной системы.

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

    • spec.static
      объект

      Параметры статического узла.

      • spec.static.internalNetworkCIDRs
        массив строк

        CIDR подсети.

NodeGroupConfiguration

Scope: Cluster
Version: v1alpha1

Ресурс для выполнения bash-скриптов на узлах.

Подробнее в документации модуля.

  • spec
    объект

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

    • spec.bundles
      массив строк

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

      Список bundle’ов, для которых будет выполняться скрипт. Для выбора всех bundle’ов нужно указать '*'.

      Список возможных bundle’ов такой же, как у параметра allowedBundles модуля.

      Примеры:

      bundles:
      - ubuntu-lts
      - centos-7
      
      bundles:
      - ubuntu-lts
      
      bundles:
      - "*"
      
    • spec.content
      строка

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

      Содержимое шага конфигурации в виде bash-скрипта.

      Для генерации скрипта возможно использовать Go Template.

      Получить список параметров, доступных для использования в шаблонах, можно из секрета bashible-apiserver-context:

      kubectl -n d8-cloud-instance-manager get secrets bashible-apiserver-context -o jsonpath='{.data.input\.yaml}'| base64 -d
      

      Пример:

      {{- range .nodeUsers }}
      echo 'Tuning environment for user {{ .name }}'
      # Some code for tuning user environment
      {{- end }}
      

      Также в скрипте допустимо использовать подготовленные команды bashbooster. Например:

      bb-event-on 'bb-package-installed' 'post-install'
      post-install() {
        bb-log-info "Setting reboot flag due to kernel was updated"
        bb-flag-set reboot
      }
      
    • spec.nodeGroups
      массив строк

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

      Список NodeGroup, к которым нужно применять шаг конфигурации. Для выбора всех NodeGroups нужно указать ‘*’.

      Примеры:

      nodeGroups:
      - master
      - worker
      
      nodeGroups:
      - worker
      
      nodeGroups:
      - "*"
      
    • spec.weight
      целочисленный

      Очередность выполнения шага конфигурации.

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

NodeUser

Scope: Cluster

Описывает Linux-пользователей, которые будут созданы на всех узлах.

Домашний каталог пользователя создается в директории /home/deckhouse/.

  • spec
    объект

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

    • spec.extraGroups
      массив строк

      Список дополнительных групп, в которые должен быть включен пользователь.

      Примеры:

      extraGroups:
      - docker
      
      extraGroups:
      - docker
      - ftp
      
    • spec.isSudoer
      булевый

      Определяет, будет ли пользователю разрешено sudo.

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

      Пример:

      isSudoer: 'true'
      
    • spec.nodeGroups
      массив строк

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

      По умолчанию: ["*"]

      Примеры:

      nodeGroups:
      - master
      - worker
      
      nodeGroups:
      - worker
      
      nodeGroups:
      - "*"
      
    • spec.passwordHash
      строка

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

      Хэш пароля пользователя.

      Формат соответствует хэшам паролей, содержащихся в /etc/shadow. Его можно получить с помощью команды openssl passwd -6.

      Пример:

      passwordHash: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC"
      
    • spec.sshPublicKey
      Параметр устарел
      строка

      Публичный SSH-ключ пользователя.

      Обязательно должен быть указан либо sshPublicKey, либо sshPublicKeys.

      Пример:

      sshPublicKey: ssh-rsa AAABBB
      
    • spec.sshPublicKeys
      массив строк

      Массив публичных SSH-ключей пользователя.

      Обязательно должен быть указан либо sshPublicKey, либо sshPublicKeys.

      Пример:

      sshPublicKeys:
      - ssh-rsa AAABBB
      - cert-authority,principals="name" ssh-rsa BBBCCC
      
    • spec.uid
      число

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

      User ID пользователя на узлах.

      Рекомендуем использовать значения >= 1100 во избежание возможных конфликтов с пользователями, созданными вручную.

      Неизменяемый в течение жизни ресурса параметр.

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

      Пример:

      uid: 1100
      

Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.

Описывает Linux-пользователей, которые будут созданы на всех узлах.

Домашний каталог пользователя создается в директории /home/deckhouse/.

  • spec
    объект

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

    • spec.extraGroups
      массив строк

      Список дополнительных групп, в которые должен быть включен пользователь.

      Примеры:

      extraGroups:
      - docker
      
      extraGroups:
      - docker
      - ftp
      
    • spec.isSudoer
      булевый

      Определяет, будет ли пользователю разрешено sudo.

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

      Пример:

      isSudoer: 'true'
      
    • spec.nodeGroups
      массив строк

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

      По умолчанию: ["*"]

      Примеры:

      nodeGroups:
      - master
      - worker
      
      nodeGroups:
      - worker
      
      nodeGroups:
      - "*"
      
    • spec.passwordHash
      строка

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

      Хэш пароля пользователя.

      Формат соответствует хэшам паролей, содержащихся в /etc/shadow. Его можно получить с помощью команды openssl passwd -6.

      Пример:

      passwordHash: "$2a$10$F9ey7zW.sVliT224RFxpWeMsgzO.D9YRG54a8T36/K2MCiT41nzmC"
      
    • spec.sshPublicKey
      Параметр устарел
      строка

      Публичный SSH-ключ пользователя.

      Обязательно должен быть указан либо sshPublicKey, либо sshPublicKeys.

      Пример:

      sshPublicKey: ssh-rsa AAABBB
      
    • spec.sshPublicKeys
      массив строк

      Массив публичных SSH-ключей пользователя.

      Обязательно должен быть указан либо sshPublicKey, либо sshPublicKeys.

      Пример:

      sshPublicKeys:
      - ssh-rsa AAABBB
      - cert-authority,principals="name" ssh-rsa BBBCCC
      
    • spec.uid
      число

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

      User ID пользователя на узлах.

      Рекомендуем использовать значения >= 1100 во избежание возможных конфликтов с пользователями, созданными вручную.

      Неизменяемый в течение жизни ресурса параметр.

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

      Пример:

      uid: 1100
      

SSHCredentials

Scope: Cluster
Version: v1alpha1

Содержит данные, необходимые Cluster API Provider Static (CAPS) для подключения по протоколу SSH. CAPS подключается к серверу (виртуальной машине), описанному в ресурсе StaticInstance для управления его состоянием.

Ссылка на этот ресурс указывается в параметре credentialsRef ресурса StaticInstance.

  • apiVersion
    строка

    Версия API объекта.

  • kind
    строка

    Тип объекта.

  • metadata
    объект
  • spec
    объект

    Желаемое состояние объекта SSHCredentials.

    • spec.privateSSHKey
      строка

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

      Закрытый ключ SSH в формате PEM, закодированный в Base64.

    • spec.sshExtraArgs
      строка

      Список дополнительных параметров для SSH-клиента (openssh).

      Примеры:

      sshExtraArgs: "-vvv"
      
      sshExtraArgs: "-c chacha20-poly1305@openssh.com"
      
      sshExtraArgs: "-c aes256-gcm@openssh.com"
      
      sshExtraArgs: "-m umac-64-etm@openssh.com"
      
      sshExtraArgs: "-m hmac-sha2-512-etm@openssh.com"
      
    • spec.sshPort
      целочисленный

      Порт для подключения по SSH.

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

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

    • spec.sudoPassword
      строка

      Пароль пользователя для использования sudo.

    • spec.user
      строка

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

      Имя пользователя для подключения по SSH.

StaticInstance

Scope: Cluster
Version: v1alpha1

Описывает объект машины для Cluster API Provider Static.

  • apiVersion
    строка

    Версия API объекта.

  • kind
    строка

    Тип объекта.

  • metadata
    объект
  • spec
    объект

    Желаемое состояние объекта StaticInstance.

    • spec.address
      строка

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

      IP-адрес сервера (виртуальной машины) для подключения.

      Шаблон: ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$

    • spec.credentialsRef
      объект

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

      Ссылка на ресурс SSHCredentials.

      • spec.credentialsRef.apiVersion
        строка

        Версия API ресурса.

      • spec.credentialsRef.kind
        строка

        Kind ресурса.

      • spec.credentialsRef.name
        строка

        Имя ресурса.