GCPClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в GCP.
Используется облачным провайдером, если управляющий слой (control plane) кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
d8 p 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-v20250313
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-v20250313
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.instanceClass
Обязательный параметр
Частичное содержимое полей GCPInstanceClass.
- объектmasterNodeGroup.instanceClass.additionalLabels
Список дополнительных лейблов.
Подробно про лейблы можно прочитать в документации Google Cloud.
Пример:
project: cms-production severity: critical - массив строк
Список дополнительных сетевых тегов (network tags).
Сетевые теги позволяют применять к инстансам firewall-правила. Подробно о сетевых тегах можно прочитать в документации Google Cloud.
- булевый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-2404-noble-amd64-v20250313 - строка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.instanceClass.additionalLabels
Список дополнительных лейблов.
Подробно про лейблы можно прочитать в документации Google Cloud.
Пример:
project: cms-production severity: critical - массив строк
Список дополнительных сетевых тегов (network tags).
Сетевые теги позволяют применять к инстансам firewall-правила. Подробно о сетевых тегах можно прочитать в документации Google Cloud.
- булевый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-2404-noble-amd64-v20250313 - строка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.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
Список зон, в которых допустимо создавать узлы.
Порядок указания зон не влияет на порядок создания узлов. Узлы будут размещаться в зонах в алфавитном порядке: первый узел — в зоне, стоящей первой по алфавиту, второй — во второй зоне и так далее. Если количество зон меньше числа узлов, то после размещения узла в последней зоне по алфавиту распределение продолжится сначала списка.