GCPClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в GCP.
Используется cloud-провайдером если control plane кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
kubectl -n d8-system exec -ti deploy/deckhouse -- deckhouse-controller edit provider-cluster-configuration
Пример:
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-2204-jammy-v20220831
diskSizeGb: 20
nodeGroups:
- name: static
replicas: 1
zones:
- europe-west3-b
instanceClass:
machineType: n1-standard-4
image: projects/ubuntu-os-cloud/global/images/ubuntu-2204-jammy-v20220831
diskSizeGb: 20
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’ов.
Подробно про labels можно прочитать в официальной документации.
Пример:
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: 20
- masterNodeGroup.instanceClass.etcdDiskSizeGbцелочисленный
Размер диска для etcd. Значение указывается в
ГиБ
.По умолчанию:
20
Пример:
etcdDiskSizeGb: 20
- masterNodeGroup.instanceClass.imageстрока
Обязательный параметр
Образ, который будет использоваться в заказанных инстансах.
Список образов можно найти в документации.
Внимание! Сейчас поддерживается и тестируется только
Ubuntu 18.04
,Ubuntu 20.04
,Ubuntu 22.04
,Centos 7
,Centos 8
,Centos 9
,Debian 9
,Debian 10
,Debian 11
.Пример:
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.instanceClass.disableExternalIPбулевый
- masterNodeGroup.replicasцелочисленный
Обязательный параметр
Сколько master-узлов создавать. Важно иметь нечётное количество мастеров для обеспечения кворума.
Допустимые значения:
1 <= X
- masterNodeGroup.zonesмассив строк
Список зон, в которых допустимо создавать статичные-узлы.
- masterNodeGroup.additionalLabelsобъект
- nodeGroupsмассив объектов
Массив дополнительных NodeGroup для создания статичных узлов (например, для выделенных фронтов или шлюзов).
- nodeGroups.additionalLabelsобъект
- массив строк
- nodeGroups.instanceClassобъект
Обязательный параметр
Частичное содержимое полей GCPInstanceClass.
- nodeGroups.instanceClass.disableExternalIPбулевый
Запретить ли назначение внешнего IP для инстанса.
Параметр доступен только для layout
Standard
.true
— узлы не имеют публичных адресов, доступ в интернет осуществляется черезCloudNAT
.false
— для узлов создаются статические публичные адреса, они же используются для One-to-one NAT.По умолчанию:
true
Допустимые значения:
true
,false
- nodeGroups.instanceClass.diskSizeGbцелочисленный
Размер root-диска. Значение указывается в
ГиБ
.Пример:
diskSizeGb: 20
- nodeGroups.instanceClass.imageстрока
Обязательный параметр
Образ, который будет использоваться в заказанных инстансах.
Список образов можно найти в документации.
Внимание! Сейчас поддерживается и тестируется только
Ubuntu 18.04
,Ubuntu 20.04
,Ubuntu 22.04
,Centos 7
,Centos 8
,Centos 9
,Debian 9
,Debian 10
,Debian 11
.Пример:
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.instanceClass.disableExternalIPбулевый
- 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.nodeTemplate.taints.effectстрока
- nodeGroups.nodeTemplate.annotationsобъект
- 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
.
- provider.regionстрока
- sshAllowListмассив строк
Список CIDR, разрешенных для подключения к узлам по ssh.
По умолчанию, с любого адреса.
- sshKeyстрока
Обязательный параметр
Публичный ключ для доступа на узлы под пользователем
user
. - standardобъект
Настройки для схемы размещения
Standard
.- standard.cloudNATAddressesмассив строк
Список имен публичных статических IP-адресов для
Cloud NAT
.
- standard.cloudNATAddressesмассив строк
- 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массив строк
Список зон, в которых допустимо создавать узлы.