You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

222 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

_Resource_ функция **dynamix_k8s_wg** служит для управления worker groups (рабочики группами, wg) кластера.
### Работа с cloud_init
Cloud Init позволяет запустить ноды worker группы с предустановленными настройками. Подробнее про настройку cloud_init можно прочесть по [ссылке](https://cloudinit.readthedocs.io/en/latest/reference/examples.html).
**Пароли, указанные в cloud_init не сохраняются на платформе и не отображаются в API!**
Для использования cloud_init конфигурации, следует:
1. Создать файл с расширением `.tftpl` в рабочей директории.
2. Описать в созданном файле конфигурацию cloud_init в формате YAML:
#### initconfig.tftpl
```
---
users:
- groups: users, wheel
name: user
plain_text_passwd: examplePassword
primary_group: user
ssh_authorized_keys:
- ssh-rsa EXAMPLE%id_rsa.pub
sudo: ALL=(ALL) NOPASSWD:ALL
runcmd:
- echo 12345 > /home/user/test
```
3. Указать путь до файла `initconfig.tftpl` в качестве значения параметра `cloud_init` в ресурсе `dynamix_k8s_wg`:
```terraform
resource "dynamix_k8s_wg" "wg1" {
# ...
cloud_init = file("initconfig.tftpl")
# ...
}
```
4. Выполнить `terraform apply`
## Импортирование ресурса
Так как ресурс k8s_wg является подресурсом k8s, то для его импорта необходимо указать ID кластера, а так же само имя ресурса.
Общая схема:
```terraform
terraform import dynamix_k8s_wg.<var> <wg_id>#<k8s_id>
```
Пример:
```
terraform import dynamix_k8s_wg.wg 777#888
```
## Ограничение на наименование ресурса
Ресурс не должен содержать в названии символ `#`
## Работа в параллельном режиме
Рекомендуется создавать одновременно не более одного экземпляра ресурса.
В случае необходимости создания нескольких ресурсов одновременно, необходимо запускать `terraform apply/plan` в режиме `-parallelism=1`.
## Аргументы
_Resource_ функция **dynamix_k8s_wg** для создания worker group принимает следующие аргументы:
| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| k8s_id | int | :heavy_check_mark: | ID экземпляра k8s |
| name | string | :heavy_check_mark: | Наименование worker group |
| num | int | :x: | Количество worker node для создания<br/>по - умолчанию - 1 |
| cpu | int | :x: | Количество cpu для 1 worker node<br/>по - умолчанию - 1 |
| chipset | string | :x: | Тип эмулируемой системы для добавляемых vm worker группы |
| ram | int | :x: | Количество RAM для одной worker node в Мбайтах, <br/>по-умолчанию - 1024 |
| disk | int | :x: | Размер загрузочного диска для worker node, в Гбайтах<br/>по - умолчанию - 0<br/>если установлен параметр 0, то размер диска будет равен размеру образа |
| labels | []string | :x: | Список lables |
| annotations | []string | :x: | Список annotations |
| taints | []string | :x: | Список taints |
| worker_sep_id | int | :x: | ID SEP'а для создания загрузочных дисков для группы worker node по умолчанию, если не указан, используется sep_id образа |
| worker_sep_pool | string | :x: | Pool для использования, если установлен worker_sep_id, если не указан, выбирается системой |
| cloud_init | file | :x: | Параметры для утилиты _cloud_init_, которая используется на платформе DYNAMIX для первичного конфигурирования нод worker группы |
## Возвращаемые значения
В случае успешного выполнения _resource_ функция **dynamix_k8s_wg** возвращает в указанную при вызове переменную следующие значения:
| Параметр | Тип | Описание |
| --- | --- | --- |
| annotations | []string | Аннотации группы воркеров |
| chipset | string | Тип эмулируемой системы для добавляемых vm worker группы |
| cloud_init | file | Параметры для утилиты _cloud_init_, которая используется на платформе DYNAMIX для первичного конфигурирования нод worker группы |
| cpu | int | Количество cpu для 1 worker node<br/>по - умолчанию - 1 |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-detailed_info) | Детальная информация о группе воркеров |
| disk | int | Размер загрузочного диска для worker node, в Гб |
| guid | int | ID платформы |
| id | string | ID ресурса |
| k8s_id | int | ID экземпляра k8s |
| labels | []string | Лейблы группы воркеров |
| name | string | Наименование worker group |
| num | int | Количество worker node для создания |
| ram | int | Количество RAM для одной worker node в Мбайтах, <br/>по-умолчанию - 1024 |
| taints | []string | Ограничения для группы воркеров |
| wg_id | int | ID группы воркеров |
| worker_sep_id | int | ID SEP'а для создания загрузочных дисков для группы worker node |
| worker_sep_pool | string | Pool для использования |
### Описание структуры detailed_info
| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта, входящего в группу воркеров |
| name | string | Имя компьюта |
| status | string | Статус компьюта |
| tech_status | string | Технический статус |
| interfaces | []Struct{} [см. ниже](#описание-структуры-interfaces) | Информация о интерфейсах компьюта |
| natable_vins_ip | string | IP виртуальной сети |
| natable_vins_network | string | Сеть vins |
### Описание структуры interfaces
| Параметр | Тип | Описание |
| --- | --- | --- |
| def_gw | string | Шлюз по умолчанию |
| ip_address | string | IP адрес компьюта |
## Пример использования
Пример вызова _resource_ функции **dynamix_k8s_wg**:
```terraform
resource "dynamix_k8s_wg" "wg" {
#id экземпляра k8s
#обязательный параметр
#тип - целое число
#используется при создании
k8s_id = 1234
#имя worker group
#обязательный параметр
#тип - строка
#используется при создании
name = "workers-2"
#количество worker node для создания
#опциональный параметр
#тип - целое число
#по умолчанию - 1
#используется при создании и обновлении
#num = 2
#тип эмулируемой системы
#опциональный параметр
#тип - строка
#используется при создании
#chipset = "i440fx"
#количество cpu для 1 worker node
#опциональный параметр
#тип - целое число
#по умолчанию - 1
#используется при создании
#cpu = 1
#количество RAM для одной worker node в МБ
#опциональный параметр
#тип - целое число
#по умолчанию - 1024
#используется при создании
#ram = 1024
#размер загрузочного диска для worker node, в ГБ
#опциональный параметр
#по умолчанию - 0
#если установлен параметр 0, то размер диска будет равен размеру образа
#тип - целое число
#используется при создании
#disk = 10
#список строк с labels для worker группы, в формате: ["label1=value1", "label2=value2"]
#опциональный параметр
#тип - массив строк
#используется при создании
#labels = ["label1=value1", "label2=value2"]
#список строк с annotations для worker группы, в формате: ["key1=value1", "key2=value2"]
#опциональный параметр
#тип - массив строк
#используется при создании
#annotations = ["key1=value1", "key2=value2"]
#список строк с taints для worker группы, в формате: ["key1=value1:NoSchedule", "key2=value2:NoExecute"]
#опциональный параметр
#тип - массив строк
#используется при создании
#taints = ["key1=value1", "key2=value2"]
#id СХД для создания загрузочных дисков для Worker-групп по умолчанию. Использует sepId образа, если не указан.
#опциональный параметр
#тип - целое число
#используется при создании
#worker_sep_id = 1
#пул для хранения Workers. Если не заполнить, будет выбран системой
#опциональный параметр
#тип - целое число
#используется при создании
#worker_sep_pool = "worker_pool"
#перечень аргументов для cloud-init для виртуальных машин worker групп
#опциональный параметр
#тип - файл в формате YAML
#используется при создании и обновлении
#cloud_init = file("initconfig.tftpl")
}
```
После успешного завершения такого вызова **dynamix_k8s_wg** в переменной `dynamix_k8s_wg.wg` будут сохранены возвращаемые значения.В частности, для получения идентификатора k8s_wg следует использовать конструкцию `dynamix_k8s_wg.wg.id`