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

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: 3
20  zones:
21  - ru-central1-a
22  - ru-central1-b
23  - ru-central1-d
24  instanceClass:
25    cores: 4
26    memory: 8192
27    imageID: <IMAGE_ID>
28    externalIPAddresses:
29    - "<ZONE_A_EXTERNAL_IP_MASTER_1>"
30    - "Auto"
31    - "Auto"
32    externalSubnetIDs:
33    - <ZONE_A_SUBNET_ID>
34    - <ZONE_B_SUBNET_ID>
35    - <ZONE_D_SUBNET_ID>
36    additionalLabels:
37      takes: priority
38nodeGroups:
39- name: worker
40  replicas: 2
41  zones:
42  - ru-central1-a
43  - ru-central1-b
44  instanceClass:
45    cores: 4
46    memory: 8192
47    imageID: <IMAGE_ID>
48    coreFraction: 50
49    externalIPAddresses:
50    - "Auto"
51    - "Auto"
52    externalSubnetIDs:
53    - <ZONE_A_SUBNET_ID>
54    - <ZONE_B_SUBNET_ID>
55    additionalLabels:
56      role: example
57labels:
58  billing: prod
59dhcpOptions:
60  domainName: test.local
61  domainNameServers:
62  - <DNS_SERVER_1>
63  - <DNS_SERVER_2>

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: 3
17  instanceClass:
18    cores: 4
19    memory: 8192
20    imageID: <IMAGE_ID>
21    externalIPAddresses:
22    - "Auto"
23    - "Auto"
24    - "Auto"
25    externalSubnetIDs:
26    - <ZONE_A_SUBNET_ID>
27    - <ZONE_B_SUBNET_ID>
28    - <ZONE_D_SUBNET_ID>
29    zones:
30    - ru-central1-a
31    - ru-central1-b
32    - ru-central1-d
33nodeGroups:
34- name: worker
35  replicas: 2
36  instanceClass:
37    cores: 4
38    memory: 8192
39    imageID: <IMAGE_ID>
40    coreFraction: 50
41    externalIPAddresses:
42    - "<ZONE_A_EXTERNAL_IP_WORKER_1>"
43    - "Auto"
44    externalSubnetIDs:
45    - <ZONE_A_SUBNET_ID>
46    - <ZONE_B_SUBNET_ID>
47    zones:
48    - ru-central1-a
49    - ru-central1-b
50sshPublicKey: "<SSH_PUBLIC_KEY>"
51nodeNetworkCIDR: 192.168.12.13/24
52existingNetworkID: <EXISTING_NETWORK_ID>
53dhcpOptions:
54  domainName: test.local
55  domainNameServers:
56  - <DNS_SERVER_1>
57  - <DNS_SERVER_2>

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    - "Auto"
27    externalSubnetID: <EXTERNAL_SUBNET_ID>
28    zones:
29    - ru-central1-a
30nodeGroups:
31- name: worker
32  replicas: 1
33  instanceClass:
34    cores: 4
35    memory: 8192
36    imageID: <IMAGE_ID>
37    coreFraction: 50
38    externalIPAddresses:
39    - "Auto"
40    externalSubnetID: <EXTERNAL_SUBNET_ID>
41    zones:
42    - ru-central1-a
43sshPublicKey: "<SSH_PUBLIC_KEY>"
44nodeNetworkCIDR: 192.168.12.13/24
45existingNetworkID: <EXISTING_NETWORK_ID>
46dhcpOptions:
47  domainName: test.local
48  domainNameServers:
49  - <DNS_SERVER_1>
50  - <DNS_SERVER_2>