Стадия жизненного цикла модуля: General Availability
Поддерживаются две схемы размещения. Ниже подробнее о каждой их них.
WithoutNAT
Рекомендованная схема размещения.
Каждому узлу присваивается публичный IP (ElasticIP). NAT не используется.
Если задан параметр disableDefaultSecurityGroup: false, при создании кластера модуль создаёт группы безопасности по умолчанию.
Будут созданы следующие группы и правила:
<CLUSTER_PREFIX>-node— назначается узлам кластера:- разрешение любого исходящего трафика в
0.0.0.0/0; - разрешение любого входящего трафика от группы
<CLUSTER_PREFIX>-loadbalancer; - разрешение любого входящего трафика от узлов той же группы
<CLUSTER_PREFIX>-node; - разрешение входящего трафика по протоколу ICMP из CIDR, указанных в
publicNetworkAllowList(по умолчанию0.0.0.0/0).
- разрешение любого исходящего трафика в
<CLUSTER_PREFIX>-loadbalancer— используется балансировщиками нагрузки:- разрешение любого входящего трафика из CIDR в
publicNetworkAllowList; - разрешение любого исходящего трафика к группе
<CLUSTER_PREFIX>-node.
- разрешение любого входящего трафика из CIDR в
<CLUSTER_PREFIX>-ssh-accessible— создаётся, если заданsshAllowList; разрешает входящий трафик по протоколу TCP и порту22из указанных CIDR (по умолчанию0.0.0.0/0). Назначается master-узлам или bastion-хосту в схемеWithNAT.
При disableDefaultSecurityGroup: true необходимо самостоятельно создать все необходимые группы безопасности и указать их в additionalSecurityGroups. Для балансировщиков нагрузки группы задаются аннотацией service.beta.kubernetes.io/aws-load-balancer-security-groups.
Собственные группы безопасности (созданные в облаке заранее) подключаются через additionalSecurityGroups:
- для master-узлов — в параметре
masterNodeGroup.instanceClass.additionalSecurityGroupsресурса AWSClusterConfiguration; - для статических узлов — в параметре
nodeGroups[].instanceClass.additionalSecurityGroupsресурса AWSClusterConfiguration; - для эфемерных узлов — в параметре
spec.additionalSecurityGroupsресурса AWSInstanceClass.
Пример конфигурации схемы размещения:
apiVersion: deckhouse.io/v1
kind: AWSClusterConfiguration
layout: WithoutNAT
vpcNetworkCIDR: "10.241.0.0/16"
nodeNetworkCIDR: "10.241.32.0/20"
sshPublicKey: <SSH_PUBLIC_KEY>
provider:
providerAccessKeyId: '<AWS_ACCESS_KEY>'
providerSecretAccessKey: '<AWS_SECRET_ACCESS_KEY>'
region: eu-central-1
masterNodeGroup:
# Количество master-узлов.
# Если указано больше одного master-узла, то etcd-кластер соберется автоматически.
replicas: 1
instanceClass:
# Тип используемого инстанса.
instanceType: m5.xlarge
# ID образа виртуальной машины в Amazon.
# Каталог AMI в консоли AWS: EC2 -> AMI Catalog.
ami: ami-0aad10862ade98f27
# Размер диска для виртуальной машины master-узла.
diskSizeGb: 30
# Используемый тип диска для виртуальной машины master-узла.
diskType: gp3
nodeGroups:
- name: mydb
nodeTemplate:
labels:
node-role.kubernetes.io/mydb: ""
replicas: 2
instanceClass:
instanceType: t2.medium
ami: ami-0aad10862ade98f27
additionalTags:
backup: srv1
tags:
team: torpedo
WithNAT
Важно! В данной схеме размещения необходим bastion-хост для доступа к узлам (его можно создать вместе с кластером, указав параметры в секции
withNAT.bastionInstance).Важно! В этой схеме размещения NAT Gateway всегда создается в зоне
a. Если узлы кластера будут заказаны в других зонах, при проблемах в зонеaони также будут недоступны. Другими словами, при выборе схемы размещенияWithNatдоступность всего кластера будет зависеть от работоспособности зоныa.
Виртуальные машины выходят в интернет через NAT Gateway с общим и единственным IP-адресом.
Если задан параметр disableDefaultSecurityGroup: false, при создании кластера модуль создаёт группы безопасности по умолчанию.
Будут созданы следующие группы и правила:
<CLUSTER_PREFIX>-node— назначается узлам кластера:- разрешение любого исходящего трафика в
0.0.0.0/0; - разрешение любого входящего трафика от группы
<CLUSTER_PREFIX>-loadbalancer; - разрешение любого входящего трафика от узлов той же группы
<CLUSTER_PREFIX>-node; - разрешение входящего трафика по протоколу ICMP из CIDR, указанных в
publicNetworkAllowList(по умолчанию0.0.0.0/0).
- разрешение любого исходящего трафика в
<CLUSTER_PREFIX>-loadbalancer— используется балансировщиками нагрузки:- разрешение любого входящего трафика из CIDR в
publicNetworkAllowList; - разрешение любого исходящего трафика к группе
<CLUSTER_PREFIX>-node.
- разрешение любого входящего трафика из CIDR в
<CLUSTER_PREFIX>-ssh-accessible— создаётся, если заданsshAllowList; разрешает входящий трафик по протоколу TCP и порту22из указанных CIDR (по умолчанию0.0.0.0/0). Назначается master-узлам или bastion-хосту в схемеWithNAT.
При disableDefaultSecurityGroup: true необходимо самостоятельно создать все необходимые группы безопасности и указать их в additionalSecurityGroups. Для балансировщиков нагрузки группы задаются аннотацией service.beta.kubernetes.io/aws-load-balancer-security-groups.
Собственные группы безопасности (созданные в облаке заранее) подключаются через additionalSecurityGroups:
- для master-узлов — в параметре
masterNodeGroup.instanceClass.additionalSecurityGroupsресурса AWSClusterConfiguration; - для статических узлов — в параметре
nodeGroups[].instanceClass.additionalSecurityGroupsресурса AWSClusterConfiguration; - для эфемерных узлов — в параметре
spec.additionalSecurityGroupsресурса AWSInstanceClass.
Пример конфигурации схемы размещения:
apiVersion: deckhouse.io/v1
kind: AWSClusterConfiguration
layout: WithNAT
provider:
providerAccessKeyId: '<AWS_ACCESS_KEY>'
providerSecretAccessKey: '<AWS_SECRET_ACCESS_KEY>'
region: eu-central-1
withNAT:
bastionInstance:
zone: eu-central-1a
instanceClass:
instanceType: m5.large
ami: ami-0aad10862ade98f27
diskType: gp3
masterNodeGroup:
# Количество master-узлов.
# Если указано больше одного master-узла, etcd-кластер соберется автоматически.
replicas: 1
instanceClass:
# Тип используемого инстанса.
instanceType: m5.xlarge
# ID образа виртуальной машины в Amazon.
# Каталог AMI в консоли AWS: EC2 -> AMI Catalog.
ami: ami-0aad10862ade98f27
# Размер диска для виртуальной машины master-узла.
diskSizeGb: 30
# Используемый тип диска для виртуальной машины master-узла.
diskType: gp3
nodeGroups:
- name: mydb
nodeTemplate:
labels:
node-role.kubernetes.io/mydb: ""
replicas: 2
instanceClass:
instanceType: t2.medium
ami: ami-0aad10862ade98f27
additionalTags:
backup: me
vpcNetworkCIDR: "10.241.0.0/16"
nodeNetworkCIDR: "10.241.32.0/20"
sshPublicKey: "<SSH_PUBLIC_KEY>"
tags:
team: torpedo