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
- массив строк
Список дополнительных тегов.
К примеру, теги позволяют применять к инстансам правила 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.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.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
Список зон, в которых допустимо создавать узлы.