Compare languages | Cloud provider - OpenStack: Layouts

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-узлом.

resources

resources

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. Optional, local disk is used if not specified. rootDiskSize: 50 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, network will be used as default gateway. 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 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 Обязательный параметр, сеть будет использована как шлюз по умолчанию. 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 в кластере.

resources

resources

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, network will be used as default gateway. 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 Обязательный параметр, сеть будет использована как шлюз по умолчанию. 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 создается в публичной сети, он все равно доступен только с узлов кластера.

resources

resources

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, network will be used as default gateway. 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 Обязательный параметр, сеть будет использована как шлюз по умолчанию. 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 в кластере.

resources

resources

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, network will be used as default gateway. 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 Обязательный параметр. Сеть будет использована как шлюз по умолчанию. mainNetwork: kube additionalNetworks: # Необязательный параметр.
  • office
  • shared Необязательный параметр. Если существуют сети с отключенной защитой портов, необходимо указать их имена. networksWithSecurityDisabled:
  • office Необязательный параметр. Список сетевых пулов, в которых можно заказать плавающие IP-адреса. floatingIPPools:
  • public
  • shared Необязательный параметр, дополнительные группы безопасности. additionalSecurityGroups:
  • sec_group_1
  • sec_group_2 sshPublicKey: “" provider: ...