AWSClusterConfiguration
Version: deckhouse.io/v1
Описывает конфигурацию облачного кластера в AWS.
Используется cloud-провайдером если control plane кластера размещен в облаке.
Выполните следующую команду, чтобы изменить конфигурацию в работающем кластере:
kubectl -n d8-system exec -ti deploy/deckhouse -- deckhouse-controller edit provider-cluster-configuration
Пример:
apiVersion: deckhouse.io/v1
kind: AWSClusterConfiguration
layout: WithoutNAT
sshPublicKey: "<SSH_PUBLIC_KEY>"
nodeNetworkCIDR: 172.16.0.0/22
vpcNetworkCIDR: 172.16.0.0/16
masterNodeGroup:
replicas: 1
instanceClass:
instanceType: m5.xlarge
ami: ami-08b6d44b4f6f7b279
diskType: gp3
nodeGroups:
- name: worker
nodeTemplate:
labels:
node-role.kubernetes.io/worker: ''
replicas: 2
instanceClass:
instanceType: t2.medium
ami: ami-0caef02b518350c8b
additionalTags:
backup: srv1
provider:
providerAccessKeyId: "<AWS_ACCESS_KEY>"
providerSecretAccessKey: "<AWS_SECRET_ACCESS_KEY>"
region: eu-central-1
tags:
team: rangers
- additionalRolePoliciesмассив строк
Список, содержащий дополнительные политики для IAM ролей.
- Дополнительные политики будут добавлены к базовым политикам для IAM ролей.
- Необязательный параметр. Если отсутствует, будут использоваться только базовые политики для IAM ролей.
Базовые политики для IAM ролей состоят из:
- "ec2:DescribeTags" - "ec2:DescribeInstances"
- Элемент массивастрока
Шаблон:
^(\w+):(\w+)$
- apiVersionстрока
Обязательный параметр
Допустимые значения:
deckhouse.io/v1
,deckhouse.io/v1alpha1
- existingVPCIDстрока
ID существующего VPC, в котором будет развёрнута схема.
- Обязательный параметр, если не указан
vpcNetworkCIDR
. - Важно! Если в данной VPC уже есть Internet Gateway, деплой базовой инфраструктуры упадёт с ошибкой. На данный момент использовать уже существующий Internet Gateway нельзя.
- Обязательный параметр, если не указан
- kindстрока
Обязательный параметр
Допустимые значения:
AWSClusterConfiguration
- layoutстрока
Обязательный параметр
Название схемы размещения.
Подробнее о возможных схемах размещения провайдера.
Схема размещения
Standard
считается устаревшей, не используйте ее.Допустимые значения:
WithoutNAT
,WithNAT
,Standard
- masterNodeGroupобъект
Обязательный параметр
Спецификация для описания NodeGroup master-узлов.
Внимание! После изменения параметров секции
masterNodeGroup
необходимо выполнить командуdhctl converge
, чтобы изменения вступили в силу.- объект
Дополнительные теги, которые будут присвоены созданным инстансам в дополнение к указанным в конфигурации cloud-провайдера.
Пример:
project: cms-production severity: critical
- masterNodeGroup.instanceClassобъект
Обязательный параметр
Частичное содержимое полей AWSInstanceClass.
- masterNodeGroup.instanceClass.additionalSecurityGroupsмассив строк
Дополнительные secutiry groups, которые будут присвоены созданным инстансам.
- masterNodeGroup.instanceClass.amiстрока
Обязательный параметр
Образ (AMI ID), который будет использоваться в заказанных инстансах.
Как найти нужный AMI (в каждом регионе AMI разные):
aws ec2 --region <REGION> describe-images \ --filters 'Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-2020*' | \ jq '.Images[].ImageId'
Пример:
ami: ami-040a1551f9c9d11ad
- masterNodeGroup.instanceClass.diskSizeGbцелочисленный
Размер root-диска. Значение указывается в
ГиБ
.Пример:
diskSizeGb: 20
- masterNodeGroup.instanceClass.diskTypeстрока
Тип созданного диска.
Допустимые значения:
gp3
,gp2
,io2
,io1
,st1
,sc1
Пример:
diskType: gp2
- masterNodeGroup.instanceClass.etcdDiskобъект
По умолчанию:
{"sizeGb":20,"type":"gp3"}
- masterNodeGroup.instanceClass.etcdDisk.sizeGbцелочисленный
Размер диска для etcd. Значение указывается в
ГиБ
. - masterNodeGroup.instanceClass.etcdDisk.typeстрока
Тип диска для etcd.
- masterNodeGroup.instanceClass.etcdDisk.sizeGbцелочисленный
- masterNodeGroup.instanceClass.instanceTypeстрока
Обязательный параметр
Тип заказываемых инстансов.
Внимание! Следует убедиться, что указанный тип есть во всех зонах, перечисленных в параметре
zones
.Пример:
instanceType: t3.large
- masterNodeGroup.instanceClass.additionalSecurityGroupsмассив строк
- masterNodeGroup.replicasцелочисленный
Обязательный параметр
Сколько master-узлов создавать. Важно иметь нечётное количество мастеров для обеспечения кворума.
Допустимые значения:
1 <= X
- masterNodeGroup.zonesмассив строк
Необязательный параметр.
Список зон, в которых допустимо создавать master-узлы.
- объект
- nodeGroupsмассив объектов
Массив дополнительных NodeGroup для создания статичных узлов (например, для выделенных frontend-узлов или шлюзов).
- объект
Дополнительные к основным (
AWSClusterConfiguration.tags
) теги, которые будут присвоены созданным инстансам.Пример:
project: cms-production severity: critical
- nodeGroups.instanceClassобъект
Обязательный параметр
Частичное содержимое полей AWSInstanceClass.
- nodeGroups.instanceClass.additionalSecurityGroupsмассив строк
Дополнительные secutiry groups, которые будут присвоены созданным инстансам.
- nodeGroups.instanceClass.amiстрока
Обязательный параметр
Образ (AMI ID), который будет использоваться в заказанных инстансах.
Как найти нужный AMI (в каждом регионе AMI разные):
aws ec2 --region <REGION> describe-images \ --filters 'Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-2020*' | \ jq '.Images[].ImageId'
Пример:
ami: ami-040a1551f9c9d11ad
- nodeGroups.instanceClass.diskSizeGbцелочисленный
Размер root-диска. Значение указывается в
ГиБ
.Пример:
diskSizeGb: 20
- nodeGroups.instanceClass.diskTypeстрока
Тип созданного диска.
Допустимые значения:
gp3
,gp2
,io2
,io1
,st1
,sc1
Пример:
diskType: gp2
- nodeGroups.instanceClass.instanceTypeстрока
Обязательный параметр
Тип заказываемых инстансов.
Внимание! Следует убедиться, что указанный тип есть во всех зонах, перечисленных в параметре
zones
.Пример:
instanceType: t3.large
- nodeGroups.instanceClass.additionalSecurityGroupsмассив строк
- nodeGroups.nameстрока
Обязательный параметр
Имя NodeGroup. Используется для генерации имен узлов.
- nodeGroups.nodeTemplate
Настройки Node-объектов в Kubernetes, которые будут добавлены после регистрации узла.
- nodeGroups.nodeTemplate.annotationsобъект
Аналогично стандартному полю
metadata.annotations
.Пример:
annotations: ai.fleet.com/discombobulate: "true"
- nodeGroups.nodeTemplate.labelsобъект
Список лейблов, которые будут прикреплены ко всем ресурсам кластера (если они это поддерживают).
Аналогично стандартному полю
metadata.labels
.Если поменять лейблы в рабочем кластере, то после применения изменений необходимо пересоздать все машины.
Пример:
labels: environment: production app: warp-drive-ai
- nodeGroups.nodeTemplate.taintsмассив объектов
Аналогично полю
.spec.taints
из объекта Node.Внимание! Доступны только поля
effect
,key
,values
.Пример:
taints: - effect: NoExecute key: ship-class value: frigate
- 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массив строк
Необязательный параметр.
Список зон, в которых допустимо создавать узлы.
- объект
- nodeNetworkCIDRстрока
Подсеть, в которой будут работать узлы кластера.
- Диапазон должен быть частью или должен соответствовать диапазону адресов VPC.
- Диапазон будет равномерно разбит на подсети по одной на Availability Zone в вашем регионе.
- Необязательный, но рекомендованный параметр. По умолчанию — соответствует целому диапазону адресов VPC.
Если при создании кластера создаётся новая VPC и не указан
vpcNetworkCIDR
, то VPC будет создана с диапазоном, указанным вnodeNetworkCIDR
. Таким образом, вся VPC будет выделена под сети кластера и, соответственно, не будет возможности добавить другие ресурсы в эту VPC.Диапазон
nodeNetworkCIDR
распределяется по подсетям в зависимости от количества зон доступности в выбранном регионе. Например, если указанаnodeNetworkCIDR: "10.241.1.0/20"
и в регионе 3 зоны доступности, то подсети будут созданы с маской/22
.Шаблон:
^(([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]))$
- peeredVPCsмассив строк
Список AWS VPC ID для организации пиринга с сетью кластера.
Учетная запись должна иметь доступ ко всем VPC в списке. Также вы можете настроить соединение вручную, если доступа нет.
- providerобъект
Обязательный параметр
Параметры подключения к API AWS.
- sshAllowListмассив строк
Список CIDR, разрешенных для подключения к узлам по ssh.
По умолчанию,
0.0.0.0/0
. - sshPublicKeyстрока
Обязательный параметр
Публичный ключ для доступа на узлы.
- standardПараметр устарелобъект
Схема размещения
Standard
считается устаревшей, не используйте ее. - объект
Необязательный параметр.
Словарь тегов, которые будут созданы на всех ресурсах, имеющих такую возможность.
Если поменять теги в рабочем кластере, то после применения изменений необходимо пересоздать все машины.
- vpcNetworkCIDRстрока
Подсеть, которая будет указана в созданном VPC.
Обязательный параметр, если не указан параметр для развёртывания в уже созданном VPC
existingVPCID
.Шаблон:
^(([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]))$
- withNATобъект
- withNAT.bastionInstanceобъект
- withNAT.bastionInstance.instanceClassобъект
Обязательный параметр
Частичное содержимое полей AWSInstanceClass.
- withNAT.bastionInstance.instanceClass.additionalSecurityGroupsмассив строк
Дополнительные security groups, которые будут присвоены созданному инстансу.
- withNAT.bastionInstance.instanceClass.amiстрока
Обязательный параметр
Образ (AMI ID), который будет использоваться для создания заказываемого инстанса.
Как найти нужный AMI (в каждом регионе AMI разные):
aws ec2 --region <REGION> describe-images \ --filters 'Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-2020*' | \ jq '.Images[].ImageId'
Пример:
ami: ami-040a1551f9c9d11ad
- withNAT.bastionInstance.instanceClass.diskSizeGbцелочисленный
Размер root-диска. Значение указывается в
ГиБ
.Пример:
diskSizeGb: 20
- withNAT.bastionInstance.instanceClass.diskTypeстрока
Тип созданного root-диска.
Допустимые значения:
gp3
,gp2
,io2
,io1
,st1
,sc1
Пример:
diskType: gp2
- withNAT.bastionInstance.instanceClass.instanceTypeстрока
Обязательный параметр
Тип заказываемого инстанса.
Пример:
instanceType: t3.large
- withNAT.bastionInstance.instanceClass.additionalSecurityGroupsмассив строк
- withNAT.bastionInstance.zoneстрока
Зона, в которой создавать bastion.
По умолчанию будет использоваться первая доступная зона в регионе или первая из списка глобального параметра
zones
.
- withNAT.bastionInstance.instanceClassобъект
- withNAT.bastionInstanceобъект
- withoutNATобъект
- zonesмассив строк
Глобальное ограничение набора зон, с которыми работает cloud provider.