Поддерживаются три схемы размещения. Ниже подробнее о каждой их них.
Standard
В данной схеме размещения узлы не будут иметь публичных IP-адресов, а будут выходить в интернет через NAT-шлюз (NAT Gateway) 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), поэтому все узлы кластера будут смотреть наружу.
Пример конфигурации схемы размещения:
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-адрес будут созданы автоматически.
Пример конфигурации схемы размещения:
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>