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

4 weeks ago
_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`