Поддерживаются три схемы размещения. Ниже подробнее о каждой их них.

Standard

В данной схеме размещения узлы не будут иметь публичных IP-адресов, а будут выходить в интернет через NAT-шлюз (NAT Gateway) Yandex Cloud.

Схема размещения Standard в Yandex Cloud

Пример конфигурации схемы размещения:

1apiVersion: deckhouse.io/v1
2kind: YandexClusterConfiguration
3layout: Standard
4sshPublicKey: "<SSH_PUBLIC_KEY>"
5nodeNetworkCIDR: 192.168.12.13/24
6existingNetworkID: <EXISTING_NETWORK_ID>
7provider:
8  cloudID: <CLOUD_ID>
9  folderID: <FOLDER_ID>
10  serviceAccountJSON: |
11    {
12    "id": "id",
13    "service_account_id": "service_account_id",
14    "key_algorithm": "RSA_2048",
15    "public_key": "-----BEGIN PUBLIC KEY-----\nMIIwID....AQAB\n-----END PUBLIC KEY-----\n",
16    "private_key": "-----BEGIN PRIVATE KEY-----\nMIIE....1ZPJeBLt+\n-----END PRIVATE KEY-----\n"
17    }
18masterNodeGroup:
19  replicas: 1
20  zones:
21  - ru-central1-a
22  - ru-central1-b
23  instanceClass:
24    cores: 4
25    memory: 8192
26    imageID: testtest
27    externalIPAddresses:
28    - "198.51.100.5"
29    - "Auto"
30    externalSubnetID: <EXTERNAL_SUBNET_ID>
31    additionalLabels:
32      takes: priority
33nodeGroups:
34- name: worker
35  replicas: 1
36  zones:
37  - ru-central1-a
38  instanceClass:
39    cores: 4
40    memory: 8192
41    imageID: testtest
42    coreFraction: 50
43    externalIPAddresses:
44    - "198.51.100.5"
45    - "Auto"
46    externalSubnetID: <EXTERNAL_SUBNET_ID>
47    additionalLabels:
48      toy: example
49labels:
50  billing: prod
51dhcpOptions:
52  domainName: test.local
53  domainNameServers:
54  - 213.177.96.1
55  - 231.177.97.1

WithoutNAT

В данной схеме размещения NAT (любого вида) не используется, а каждому узлу выдается публичный IP-адрес.

Внимание! В модуле cloud-provider-yandex пока нет поддержки групп безопасности (security group), поэтому все узлы кластера будут смотреть наружу.

Схема размещения WithoutNAT в Yandex Cloud

Пример конфигурации схемы размещения:

1apiVersion: deckhouse.io/v1
2kind: YandexClusterConfiguration
3layout: WithoutNAT
4provider:
5  cloudID: <CLOUD_ID>
6  folderID: <FOLDER_ID>
7  serviceAccountJSON: |
8    {
9    "id": "id",
10    "service_account_id": "service_account_id",
11    "key_algorithm": "RSA_2048",
12    "public_key": "-----BEGIN PUBLIC KEY-----\nMIIwID....AQAB\n-----END PUBLIC KEY-----\n",
13    "private_key": "-----BEGIN PRIVATE KEY-----\nMIIE....1ZPJeBLt+\n-----END PRIVATE KEY-----\n"
14    }    
15masterNodeGroup:
16  replicas: 1
17  instanceClass:
18    cores: 4
19    memory: 8192
20    imageID: <IMAGE_ID>
21    externalIPAddresses:
22    - "198.51.100.5"
23    - "Auto"
24    externalSubnetID: <EXTERNAL_SUBNET_ID>
25    zones:
26    - ru-central1-a
27    - ru-central1-b
28nodeGroups:
29- name: worker
30  replicas: 1
31  instanceClass:
32    cores: 4
33    memory: 8192
34    imageID: testtest
35    coreFraction: 50
36    externalIPAddresses:
37    - "198.51.100.5"
38    - "Auto"
39    externalSubnetID: <EXTERNAL_SUBNET_ID>
40    zones:
41    - ru-central1-a
42sshPublicKey: "<SSH_PUBLIC_KEY>"
43nodeNetworkCIDR: 192.168.12.13/24
44existingNetworkID: <EXISTING_NETWORK_ID>
45dhcpOptions:
46  domainName: test.local
47  domainNameServers:
48  - 8.8.8.8
49  - 8.8.4.4

WithNATInstance

В данной схеме размещения создается NAT-инстанс, а в таблицу маршрутизации добавляется правило на 0.0.0.0/0 с NAT-инстанса nexthop’ом.

Если задан withNATInstance.externalSubnetID — NAT-инстанс будет создан в зоне этого subnet.

Если withNATInstance.externalSubnetID не задан, а withNATInstance.internalSubnetID задан — NAT-инстанс будет создан в зоне этого subnet.

Если ни withNATInstance.externalSubnetID, ни withNATInstance.internalSubnetID не заданы — NAT-инстанс создастся в зоне ru-central1-a.

Если IP-адрес NAT-инстанса не имеет значения, можно передать пустой объект withNATInstance: {}, тогда необходимые сети и динамический IP-адрес будут созданы автоматически.

Схема размещения WithNATInstance в Yandex Cloud

Пример конфигурации схемы размещения:

1apiVersion: deckhouse.io/v1
2kind: YandexClusterConfiguration
3layout: WithNATInstance
4withNATInstance:
5  natInstanceExternalAddress: <NAT_INSTANCE_EXTERNAL_ADDRESS>
6  internalSubnetID: <INTERNAL_SUBNET_ID>
7  externalSubnetID: <EXTERNAL_SUBNET_ID>
8provider:
9  cloudID: <CLOUD_ID>
10  folderID: <FOLDER_ID>
11  serviceAccountJSON: |
12    {
13    "id": "id",
14    "service_account_id": "service_account_id",
15    "key_algorithm": "RSA_2048",
16    "public_key": "-----BEGIN PUBLIC KEY-----\nMIIwID....AQAB\n-----END PUBLIC KEY-----\n",
17    "private_key": "-----BEGIN PRIVATE KEY-----\nMIIE....1ZPJeBLt+\n-----END PRIVATE KEY-----\n"
18    }    
19masterNodeGroup:
20  replicas: 1
21  instanceClass:
22    cores: 4
23    memory: 8192
24    imageID: <IMAGE_ID>
25    externalIPAddresses:
26    - "1.1.1.1"
27    - "Auto"
28    externalSubnetID: <EXTERNAL_SUBNET_ID>
29    zones:
30    - ru-central1-a
31    - ru-central1-b
32nodeGroups:
33- name: worker
34  replicas: 1
35  instanceClass:
36    cores: 4
37    memory: 8192
38    imageID: <IMAGE_ID>
39    coreFraction: 50
40    externalIPAddresses:
41    - "1.1.1.1"
42    - "Auto"
43    externalSubnetID: <EXTERNAL_SUBNET_ID>
44    zones:
45    - ru-central1-a
46sshPublicKey: "<SSH_PUBLIC_KEY>"
47nodeNetworkCIDR: 192.168.12.13/24
48existingNetworkID: <EXISTING_NETWORK_ID>
49dhcpOptions:
50  domainName: test.local
51  domainNameServers:
52  - 8.8.8.8
53  - 8.8.4.4