GCPClusterConfiguration

Version: deckhouse.io/v1

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

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

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

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

После изменения параметров узлов необходимо выполнить команду dhctl converge, чтобы изменения вступили в силу.

Пример:

apiVersion: deckhouse.io/v1
kind: GCPClusterConfiguration
layout: WithoutNAT
sshKey: "<SSH_PUBLIC_KEY>"
subnetworkCIDR: 10.36.0.0/24
masterNodeGroup:
  replicas: 1
  zones:
  - europe-west3-b
  instanceClass:
    machineType: n1-standard-4
    image: projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20240523a
    diskSizeGb: 50
nodeGroups:
- name: static
  replicas: 1
  zones:
  - europe-west3-b
  instanceClass:
    machineType: n1-standard-4
    image: projects/ubuntu-os-cloud/global/images/ubuntu-2404-noble-amd64-v20240523a
    diskSizeGb: 50
    additionalNetworkTags:
    - tag1
    additionalLabels:
      kube-node: static
provider:
  region: europe-west3
  serviceAccountJSON: "<SERVICE_ACCOUNT_JSON>"
  • apiVersion
    строка

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

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

  • kind
    строка

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

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

  • labels
    объект

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

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

    Подробнее про лейблы можно прочитать в официальной документации.

    Формат — key: value.

  • layout
    строка

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

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

    Standard — включает режим Cloud NAT. Подробнее….

    WithoutNAT — выделенная VPN создается для кластера. Все узлы имеют публичные IP-адреса. Подробнее….

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

  • masterNodeGroup
    объект

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

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

    Внимание! После изменения параметров секции masterNodeGroup необходимо выполнить команду dhctl converge, чтобы изменения вступили в силу.

    • masterNodeGroup.additionalLabels
      объект

      Список дополнительных label’ов.

      Подробно про label’ы можно прочитать в официальной документации.

      Пример:

      project: cms-production
      severity: critical
      
    • masterNodeGroup.additionalNetworkTags
      массив строк

      Список дополнительных тегов.

      К примеру, теги позволяют применять к инстансам правила firewall. Подробно про network tags можно прочитать в официальной документации.

    • masterNodeGroup.instanceClass
      объект

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

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

      • masterNodeGroup.instanceClass.disableExternalIP
        булевый

        Устанавливает, запретить назначение внешнего IP для инстанса или нет.

        Параметр доступен только для layout Standard.

        true — узлы не имеют публичных адресов, доступ в интернет осуществляется через CloudNAT.

        false — для узлов создаются статические публичные адреса, они же используются для One-to-One NAT.

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

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

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

        Размер root-диска. Значение указывается в ГиБ.

        Пример:

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

        Размер диска для etcd. Значение указывается в ГиБ.

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

        Пример:

        etcdDiskSizeGb: 20
        
      • masterNodeGroup.instanceClass.image
        строка

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

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

        Список доступных образов можно найти в документации провайдера.

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

        Пример:

        image: projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20190911
        
      • masterNodeGroup.instanceClass.machineType
        строка

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

        Тип заказываемых инстансов.

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

        GCP позволяет указывать нестандартное количество CPU и RAM, например: custom-8-40960 или n2-custom-8-40960.

        Пример:

        machineType: n1-standard-4
        
    • masterNodeGroup.replicas
      целочисленный

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

      Количество создаваемых master-узлов.

      Для обеспечения кворума важно, чтобы оно было нечетным.

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

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

      Список зон, в которых допустимо создавать статические-узлы.

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

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

    • nodeGroups.additionalLabels
      объект
    • nodeGroups.additionalNetworkTags
      массив строк
    • nodeGroups.instanceClass
      объект

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

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

      • nodeGroups.instanceClass.disableExternalIP
        булевый

        Устанавливает, запретить назначение внешнего IP для инстанса или нет.

        Параметр доступен только для layout Standard.

        true — узлы не имеют публичных адресов, доступ в интернет осуществляется через CloudNAT.

        false — для узлов создаются статические публичные адреса, они же используются для One-to-One NAT.

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

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

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

        Размер root-диска. Значение указывается в ГиБ.

        Пример:

        diskSizeGb: 50
        
      • nodeGroups.instanceClass.image
        строка

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

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

        Список доступных образов можно найти в документации провайдера.

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

        Пример:

        image: projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20190911
        
      • nodeGroups.instanceClass.machineType
        строка

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

        Тип заказываемых инстансов.

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

        GCP позволяет указывать нестандартное количество CPU и RAM, например: custom-8-40960 или n2-custom-8-40960.

        Пример:

        machineType: n1-standard-4
        
    • nodeGroups.name
      строка

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

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

    • nodeGroups.nodeTemplate
      объект

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

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

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

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

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

      • nodeGroups.nodeTemplate.taints
        массив объектов

        Аналогично полю .spec.taints из объекта Node. Внимание! Доступны только поля effect, key, values.

        • nodeGroups.nodeTemplate.taints.effect
          строка

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

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

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

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

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

      Список зон, в которых допустимо создавать узлы.

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

    Список GCP VPC networks, с которыми будет объединена сеть кластера.

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

  • provider
    объект

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

    Параметры подключения к API GCP.

    • provider.region
      строка

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

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

    • provider.serviceAccountJSON
      строка

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

      Ключ к Service Account’у с правами Project Admin (service account key) в JSON-формате.

      Как получить service account key.

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

    Список CIDR, разрешенных для подключения к узлам по SSH.

    По умолчанию — с любого адреса.

  • sshKey
    строка

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

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

  • standard
    объект

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

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

      Список имен публичных статических IP-адресов для Cloud NAT.

  • subnetworkCIDR
    строка

    Подсеть, в которой будут работать узлы кластера.

    Шаблон: ^(([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]))$

  • withoutNAT
    объект

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

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

      Список зон, в которых допустимо создавать узлы.