Four layouts are supported. Below is more information about each of them.
| Поддерживаются четыре схемы размещения. Ниже подробнее о каждой их них.
|
Standard
| Standard
|
In this scheme, an internal cluster network is created with a gateway to the public network; the nodes do not have public IP addresses. Note that the floating IP is assigned to the master node.
| Создается внутренняя сеть кластера со шлюзом в публичную сеть, узлы не имеют публичных IP-адресов. Для master-узла заказывается плавающий IP-адрес.
|
Caution!
If the provider does not support SecurityGroups, all applications running on nodes with Floating IPs assigned will be available at a public IP. For example, kube-apiserver on master nodes will be available on port 6443. To avoid this, we recommend using the SimpleWithInternalNetwork placement strategy or Standard strategy with bastion host.
|
Внимание!
Если провайдер не поддерживает SecurityGroups, все приложения, запущенные на узлах с Floating IP, будут доступны по белому IP-адресу.
Например, kube-apiserver на master-узлах будет доступен на порту 6443. Чтобы избежать этого, рекомендуется использовать схему размещения SimpleWithInternalNetwork, либо Standard с bastion-узлом.
|
|
|
Example of the layout configuration:
| Пример конфигурации схемы размещения:
|
yaml
apiVersion: deckhouse.io/v1
kind: OpenStackClusterConfiguration
layout: Standard
standard:
internalNetworkCIDR: 192.168.199.0/24 # Required.
internalNetworkDNSServers: # Required.
- 8.8.8.8
- 4.2.2.2
internalNetworkSecurity: true|false # Optional, default true.
externalNetworkName: shared # Required.
bastion:
zone: ru2-b # Optional.
volumeType: fast-ru-2b # Optional.
instanceClass:
flavorName: m1.large # Required.
imageName: ubuntu-20-04-cloud-amd64 # Required.
rootDiskSize: 50 # Optional, default 50 gigabytes.
additionalTags:
severity: critical # Optional.
environment: production # Optional.
masterNodeGroup:
replicas: 3
instanceClass:
flavorName: m1.large # Required.
imageName: ubuntu-18-04-cloud-amd64 # Required.
Optional, local disk is used if not specified.
rootDiskSize: 50
Optional, additional security groups.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
additionalTags:
severity: critical
environment: production
Required, volume type map for etcd and kubernetes certs
(always use fastest disk supplied by provider).
volumeTypeMap:
If rootDiskSize specified than this volume type will
be also used for master root volume.
ru-1a: fast-ru-1a
ru-1b: fast-ru-1b
ru-1c: fast-ru-1c
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.small # Required.
imageName: ubuntu-18-04-cloud-amd64 # Required
Optional, local disk is used if not specified.
rootDiskSize: 20
Optional, default false, determines if config drive is
required during vm bootstrap process. It’s needed if there
is no dhcp in network that is used as default gateway.
configDrive: false
Required, the gateway of the network will be used as the default gateway.
Matches the cloud.prefix in the ClusterConfiguration resource.
mainNetwork: kube
additionalNetworks: # Optional.
- office
- shared
Optional, if there are networks with disabled port
security their names must be specified.
networksWithSecurityDisabled:
- office
Optional, list of network pools where to order floating IPs.
floatingIPPools:
- public
- shared
Optional, additional security groups.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
zones:
- ru-1a
- ru-1b
sshPublicKey: “"
tags:
project: cms
owner: default
provider:
...
| yaml
apiVersion: deckhouse.io/v1
kind: OpenStackClusterConfiguration
layout: Standard
standard:
internalNetworkCIDR: 192.168.199.0/24 # Обязательный параметр.
internalNetworkDNSServers: # Обязательный параметр.
- 8.8.8.8
- 4.2.2.2
internalNetworkSecurity: true|false # Необязательный параметр, по умолчанию true.
externalNetworkName: shared # Обязательный параметр.
bastion:
zone: ru2-b # Необязательный параметр.
volumeType: fast-ru-2b # Необязательный параметр.
instanceClass:
flavorName: m1.large # Обязательный параметр.
imageName: ubuntu-20-04-cloud-amd64 # Обязательный параметр.
rootDiskSize: 50 # Обязательный параметр, по умолчанию 50 гигабайт.
additionalTags:
severity: critical # Необязательный параметр.
environment: production # Необязательный параметр.
masterNodeGroup:
replicas: 3
instanceClass:
flavorName: m1.large # Обязательный параметр.
imageName: ubuntu-18-04-cloud-amd64 # Обязательный параметр.
Необязательный параметр. Если не указан — используется локальный диск.
rootDiskSize: 50
Необязательный параметр, дополнительные группы безопасности.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
additionalTags:
severity: critical
environment: production
Обязательный параметр. Карта типов томов для сертификатов etcd и Kubernetes
(всегда используйте самый быстрый диск, предоставленный поставщиком).
volumeTypeMap:
Если указан rootDiskSize, этот тип тома также будет
использоваться для главного корневого тома.
ru-1a: fast-ru-1a
ru-1b: fast-ru-1b
ru-1c: fast-ru-1c
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.small # Обязательный параметр.
imageName: ubuntu-18-04-cloud-amd64 # Обязательный параметр.
Необязательный параметр. Если не указан — используется локальный диск.
rootDiskSize: 20
Необязательный параметр, по умолчанию false. Определяет, требуется ли
конфигурационный диск во время процесса начальной загрузки виртуальной
машины. Это необходимо, если в сети нет DHCP, который используется в
качестве шлюза по умолчанию.
configDrive: false
Обязательный параметр, шлюз этой сети будет использован как шлюз по умолчанию.
Совпадает с сloud.prefix в ресурсе ClusterConfiguration.
mainNetwork: kube
additionalNetworks: # Необязательный параметр.
- office
- shared
Необязательный параметр, если существуют сети с отключенной защитой
портов, необходимо указать их имена.
networksWithSecurityDisabled:
- office
Необязательный параметр, список сетевых пулов, в которых можно заказать
плавающие IP-адреса.
floatingIPPools:
- public
- shared
Необязательный параметр, дополнительные группы безопасности.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
zones:
- ru-1a
- ru-1b
sshPublicKey: “"
tags:
project: cms
owner: default
provider:
...
|
StandardWithNoRouter
| StandardWithNoRouter
|
An internal cluster network is created that does not have access to the public network. All nodes (including master ones) have two interfaces: the first one to the public network, the second one to the internal network. This layout should be used if you want all nodes in the cluster to be directly accessible.
| Создается внутренняя сеть кластера без доступа в публичную сеть. Все узлы, включая master-узел, создаются с двумя интерфейсами:
один — в публичную сеть, другой — во внутреннюю сеть. Данная схема размещения должна использоваться, если необходимо, чтобы
все узлы кластера были доступны напрямую.
|
Caution!
This strategy does not support a LoadBalancer since a Floating IP is not available for the router-less network. Thus, you cannot provision a load balancer with the Floating IP. An internal load balancer with the virtual IP in the public network is only accessible to cluster nodes.
Caution!
In this strategy, it is necessary to explicitly specify the name of the internal network in additionalNetworks when creating an OpenStackInstanceClass in the cluster.
|
Внимание!
В данной конфигурации не поддерживается LoadBalancer. Это связано с тем, что в OpenStack нельзя заказать Floating IP для
сети без роутера, соответственно, нельзя заказать балансировщик с Floating IP. Если заказывать internal loadbalancer, у которого
virtual IP создается в публичной сети, он все равно доступен только с узлов кластера.
Внимание!
В данной конфигурации необходимо явно указывать название внутренней сети в additionalNetworks при создании OpenStackInstanceClass в кластере.
|
|
|
Example of the layout configuration:
| Пример конфигурации схемы размещения:
|
yaml
apiVersion: deckhouse.io/v1
kind: OpenStackClusterConfiguration
layout: StandardWithNoRouter
standardWithNoRouter:
internalNetworkCIDR: 192.168.199.0/24 # Required.
externalNetworkName: ext-net # Required.
Optional, whether dhcp is enabled in specified external
network (default true).
externalNetworkDHCP: false
internalNetworkSecurity: true|false # Optional, default true.
masterNodeGroup:
replicas: 3
instanceClass:
flavorName: m1.large # Required.
imageName: ubuntu-18-04-cloud-amd64 # Required.
Optional, local disk is used if not specified.
rootDiskSize: 50
Optional, additional security groups.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
Required, volume type map for etcd and kubernetes certs
(always use fastest disk supplied by provider).
volumeTypeMap:
If rootDiskSize specified than this volume type will
be also used for master root volume.
nova: ceph-ssd
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.small # Required.
imageName: ubuntu-18-04-cloud-amd64 # Required.
Optional, local disk is used if not specified.
rootDiskSize: 20
Optional, default false, determines if config drive
is required during vm bootstrap process. It’s needed
if there is no dhcp in network that is used as default
gateway.
configDrive: false
Required, the gateway of the network will be used as the default gateway.
Matches the cloud.prefix in the ClusterConfiguration resource.
mainNetwork: kube
additionalNetworks: # Optional.
- office
- shared
Optional, if there are networks with disabled port
security their names must be specified.
networksWithSecurityDisabled:
- office
Optional, list of network pools where to order floating IPs.
floatingIPPools:
- public
- shared
Optional, additional security groups.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
Required if rootDiskSize is specified. Volume type map for node’s root volume
volumeTypeMap:
nova: ceph-ssd
sshPublicKey: “"
provider:
...
| yaml
apiVersion: deckhouse.io/v1
kind: OpenStackClusterConfiguration
layout: StandardWithNoRouter
standardWithNoRouter:
internalNetworkCIDR: 192.168.199.0/24 # Обязательный параметр.
externalNetworkName: ext-net # Обязательный параметр.
Необязательный параметр, указывает, включен ли DHCP в указанной внешней сети
(по умолчанию true).
externalNetworkDHCP: false
Необязательный параметр, по умолчанию true.
internalNetworkSecurity: true|false
masterNodeGroup:
replicas: 3
instanceClass:
flavorName: m1.large # Обязательный параметр.
imageName: ubuntu-18-04-cloud-amd64 # Обязательный параметр.
Необязательный параметр. Если не указан — используется локальный диск.
rootDiskSize: 50
Необязательный параметр, дополнительные группы безопасности.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
Обязательный параметр. Карта типов томов для сертификатов etcd и Kubernetes
(всегда используйте самый быстрый диск, предоставляемый поставщиком).
volumeTypeMap:
Если указан rootDiskSize, этот тип тома также будет
использоваться для главного корневого тома.
nova: ceph-ssd
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.small # Обязательный параметр.
imageName: ubuntu-18-04-cloud-amd64 # Обязательный параметр.
Необязательный параметр. Если не указан — используется локальный диск.
rootDiskSize: 20
Необязательный параметр, по умолчанию false. Определяет, требуется ли
конфигурационный диск во время процесса начальной загрузки виртуальной
машины. Это необходимо, если в сети нет DHCP, который используется в
качестве шлюза по умолчанию.
configDrive: false
Обязательный параметр, шлюз этой сети будет использован как шлюз по умолчанию.
Совпадает с сloud.prefix в ресурсе ClusterConfiguration.
mainNetwork: kube
additionalNetworks: # Необязательный параметр.
- office
- shared
Необязательный параметр. Если существуют сети с отключенной защитой
портов, необходимо указать их имена.
networksWithSecurityDisabled:
- office
Необязательный параметр. Список сетевых пулов, в которых можно заказать
плавающие IP-адреса.
floatingIPPools:
- public
- shared
Необязательный параметр, дополнительные группы безопасности.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
Требуется, если указан параметр rootDiskSize. Карта типов томов для главного корневого тома узла.
volumeTypeMap:
nova: ceph-ssd
sshPublicKey: “"
provider:
...
|
Simple
| Simple
|
The master node and cluster nodes are connected to the existing network. This placement strategy might come in handy if you need to merge a Kubernetes cluster with existing VMs.
| Master-узел и узлы кластера подключаются к существующей сети. Данная схема размещения может понадобиться, если необходимо
объединить кластер Kubernetes с уже имеющимися виртуальными машинами.
|
Caution!
This strategy does not support a LoadBalancer since a Floating IP is not available for the router-less network. Thus, you cannot provision a load balancer with the Floating IP. An internal load balancer with the virtual IP in the public network is only accessible to cluster nodes.
|
Внимание!
В данной конфигурации не поддерживается LoadBalancer. Это связано с тем, что в OpenStack нельзя заказать Floating IP для
сети без роутера, соответственно, нельзя заказать балансировщик с Floating IP. Если заказывать internal loadbalancer, у которого
virtual IP создается в публичной сети, он все равно доступен только с узлов кластера.
|
|
|
Example of the layout configuration:
| Пример конфигурации схемы размещения:
|
yaml
apiVersion: deckhouse.io/v1
kind: OpenStackClusterConfiguration
layout: Simple
simple:
externalNetworkName: ext-net # Required.
externalNetworkDHCP: false # Optional, default true.
Optional, by default VXLAN, may also be DirectRouting
or DirectRoutingWithPortSecurityEnabled.
podNetworkMode: VXLAN
masterNodeGroup:
replicas: 3
instanceClass:
flavorName: m1.large # Required.
imageName: ubuntu-18-04-cloud-amd64 # Required.
Optional, local disk is used if not specified.
rootDiskSize: 50
Optional, additional security groups.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
Required, volume type map for etcd and kubernetes certs
(always use fastest disk supplied by provider).
volumeTypeMap:
If rootDiskSize specified than this volume type will
be also used for master root volume.
nova: ceph-ssd
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.small # Required.
imageName: ubuntu-18-04-cloud-amd64 # Required.
Optional, local disk is used if not specified.
rootDiskSize: 20
Optional, default false, determines if config drive
is required during vm bootstrap process. It’s needed
if there is no dhcp in network that is used as default
gateway.
configDrive: false
Required, the gateway of the network will be used as the default gateway.
Matches the cloud.prefix in the ClusterConfiguration resource.
mainNetwork: kube
additionalNetworks: # Optional.
- office
- shared
Optional, if there are networks with disabled port
security their names must be specified.
networksWithSecurityDisabled:
- office
Optional, list of network pools where to order floating IPs.
floatingIPPools:
- public
- shared
Optional, additional security groups.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
sshPublicKey: “"
provider:
...
| yaml
apiVersion: deckhouse.io/v1
kind: OpenStackClusterConfiguration
layout: Simple
simple:
externalNetworkName: ext-net # Обязательный параметр.
Необязательный параметр, по умолчанию true.
externalNetworkDHCP: false
Необязательный параметр, по умолчанию VXLAN, также может быть DirectRouting
или DirectRoutingWithPortSecurityEnabled.
podNetworkMode: VXLAN
masterNodeGroup:
replicas: 3
instanceClass:
flavorName: m1.large # Обязательный параметр.
imageName: ubuntu-18-04-cloud-amd64 # Обязательный параметр.
Необязательный параметр. Если не указан — используется локальный диск.
rootDiskSize: 50
Необязательный параметр, дополнительные группы безопасности.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
Обязательный параметр. Карта типов томов для сертификатов etcd и Kubernetes
(всегда используйте самый быстрый диск, предоставляемый поставщиком).
volumeTypeMap:
Если указан rootDiskSize, этот тип тома также будет
использоваться для главного корневого тома.
nova: ceph-ssd
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.small # Обязательный параметр.
imageName: ubuntu-18-04-cloud-amd64 # Обязательный параметр.
Необязательный параметр. Если не указан — используется локальный диск.
rootDiskSize: 20
Необязательный параметр, по умолчанию false. Определяет, требуется ли
конфигурационный диск во время процесса начальной загрузки виртуальной
машины. Это необходимо, если в сети нет DHCP, который используется в
качестве шлюза по умолчанию.
configDrive: false
Обязательный параметр, шлюз этой сети будет использован как шлюз по умолчанию.
Совпадает с сloud.prefix в ресурсе ClusterConfiguration.
mainNetwork: kube
additionalNetworks: # Необязательный параметр.
- office
- shared
Необязательный параметр. Если существуют сети с отключенной защитой
портов, необходимо указать их имена.
networksWithSecurityDisabled:
- office
Необязательный параметр. Список сетевых пулов, в которых можно заказать
плавающие IP-адреса.
floatingIPPools:
- public
- shared
Необязательный параметр, дополнительные группы безопасности.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
sshPublicKey: “"
provider:
...
|
SimpleWithInternalNetwork
| SimpleWithInternalNetwork
|
The master node and cluster nodes are connected to the existing network. This placement strategy might come in handy if you need to merge a Kubernetes cluster with existing VMs.
| Master-узел и узлы кластера подключаются к существующей сети. Данная схема размещения может понадобиться, если необходимо
объединить кластер Kubernetes с уже имеющимися виртуальными машинами.
|
Caution!
This placement strategy does not involve the management of SecurityGroups (it is assumed they were created beforehand).
To configure security policies, you must explicitly specify both additionalSecurityGroups in the OpenStackClusterConfiguration for the masterNodeGroup and other nodeGroups, and additionalSecurityGroups when creating OpenStackInstanceClass in the cluster.
|
Внимание!
В данной схеме размещения не происходит управление SecurityGroups , а подразумевается, что они были ранее созданы.
Для настройки политик безопасности необходимо явно указывать additionalSecurityGroups в OpenStackClusterConfiguration для masterNodeGroup и других nodeGroups, а также additionalSecurityGroups при создании OpenStackInstanceClass в кластере.
|
|
|
Example of the layout configuration:
| Пример конфигурации схемы размещения:
|
yaml
apiVersion: deckhouse.io/v1
kind: OpenStackClusterConfiguration
layout: SimpleWithInternalNetwork
simpleWithInternalNetwork:
Required, all cluster nodes have to be in the same subnet.
internalSubnetName: pivot-standard
Optional, by default DirectRoutingWithPortSecurityEnabled,
may also be DirectRouting or VXLAN.
podNetworkMode: DirectRoutingWithPortSecurityEnabled
Optional, if set will be used for load balancer default
configuration and ordering master floating IP.
externalNetworkName: ext-net
Optional, default value is true.
masterWithExternalFloatingIP: false
masterNodeGroup:
replicas: 3
instanceClass:
flavorName: m1.large # Required.
imageName: ubuntu-18-04-cloud-amd64 # Required.
Optional, local disk is used if not specified.
rootDiskSize: 50
Optional, additional security groups.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
Required, volume type map for etcd and kubernetes certs
(always use fastest disk supplied by provider).
volumeTypeMap:
If rootDiskSize specified than this volume type will
be also used for master root volume.
nova: ceph-ssd
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.small # Required.
imageName: ubuntu-18-04-cloud-amd64 # Required.
Optional, local disk is used if not specified.
rootDiskSize: 20
Optional, default false, determines if config drive
is required during vm bootstrap process. It’s needed
if there is no dhcp in network that is used as default
gateway.
configDrive: false
Required, the gateway of the network will be used as the default gateway.
Matches the cloud.prefix in the ClusterConfiguration resource.
mainNetwork: kube
additionalNetworks: # Optional.
- office
- shared
Optional, if there are networks with disabled port
security their names must be specified.
networksWithSecurityDisabled:
- office
Optional, list of network pools where to order floating IPs.
floatingIPPools:
- public
- shared
Optional, additional security groups.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
sshPublicKey: “"
provider:
...
| yaml
apiVersion: deckhouse.io/v1
kind: OpenStackClusterConfiguration
layout: SimpleWithInternalNetwork
simpleWithInternalNetwork:
Обязательный параметр, все узлы кластера должны находиться в одной подсети.
internalSubnetName: pivot-standard
Необязательный параметр, по умолчанию DirectRoutingWithPortSecurityEnabled,
также может быть DirectRouting или VXLAN.
podNetworkMode: DirectRoutingWithPortSecurityEnabled
Необязательный параметр. Если задан, будет использоваться для конфигурации
балансировщика нагрузки по умолчанию и для главного плавающего IP-адреса.
externalNetworkName: ext-net
Необязательный параметр, по умолчанию true.
masterWithExternalFloatingIP: false
masterNodeGroup:
replicas: 3
instanceClass:
flavorName: m1.large # Обязательный параметр.
imageName: ubuntu-18-04-cloud-amd64 # Обязательный параметр.
Необязательный параметр. Если не указан — используется локальный диск.
rootDiskSize: 50
Необязательный параметр, дополнительные группы безопасности.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
Обязательный параметр. Карта типов томов для сертификатов etcd и Kubernetes
(всегда используйте самый быстрый диск, предоставляемый поставщиком).
volumeTypeMap:
Если указан rootDiskSize, этот тип тома также будет
использоваться для главного корневого тома.
nova: ceph-ssd
nodeGroups:
- name: front
replicas: 2
instanceClass:
flavorName: m1.small # Обязательный параметр.
imageName: ubuntu-18-04-cloud-amd64 # Обязательный параметр
Необязательный параметр. Если не указан — используется локальный диск.
rootDiskSize: 20
Необязательный параметр, по умолчанию false. Определяет, требуется ли
конфигурационный диск во время процесса начальной загрузки виртуальной
машины. Это необходимо, если в сети нет DHCP, который используется в
качестве шлюза по умолчанию.
configDrive: false
Обязательный параметр, шлюз этой сети будет использован как шлюз по умолчанию.
Совпадает с сloud.prefix в ресурсе ClusterConfiguration.
mainNetwork: kube
additionalNetworks: # Необязательный параметр.
- office
- shared
Необязательный параметр. Если существуют сети с отключенной защитой
портов, необходимо указать их имена.
networksWithSecurityDisabled:
- office
Необязательный параметр. Список сетевых пулов, в которых можно заказать
плавающие IP-адреса.
floatingIPPools:
- public
- shared
Необязательный параметр, дополнительные группы безопасности.
additionalSecurityGroups:
- sec_group_1
- sec_group_2
sshPublicKey: “"
provider:
...
|