Функция доступна в провайдере версии 4.5.1 и выше.

_Resource_ функция **decort_cb_k8s_cp** служит для управления кластером.

## Аргументы

_Resource_ функция **decort_cb_k8s_cp** для создания кластера принимает следующие аргументы:

| Аргумент | Тип | Обязательный | Описание |
| --- | --- | --- | --- |
| name | string | :heavy_check_mark: | Наименование кластера, <br/>при изменении - изменяет наименование кластера |
| rg_id | int | :heavy_check_mark: | ID ресурсной группы |
| k8sci_id | int | :heavy_check_mark: | ID catalogue item |
| network_plugin | string | :heavy_check_mark: | Сетевой плагин |
| num | int | :x: | кол-во компьютов в ресурсе |
| cpu | int | :x: | Кол-во cpu на нодах |
| ram | int | :x: | Кол-во ram на нодах |
| disk | int | :x: | Размер диска мастер-узла |
| sep_id | int | :x: | storage endpoint provider ID |
| sep_pool | string | :x: | SEP пул мастер-узла  (если установлен sepId) |
| with_lb | bool | :x: | Создать кластер с/без балансировщика нагрузки |
| extnet_only | bool | :x: | Использовать только extnet для работы кластера |
| join_config | string | :x: | Используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации. |
| kube_proxy_config | string | :x: | Используется для настройки поведения и параметров присоединения node к кластеру. Он включает в себя такие параметры, как режим прокси-сервера, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy. |
| kubelet_config | string | :x: | Используется для настройки поведения и параметров Kubelet, который является агентом primary node, запускаемым на каждом node кластера. Он включает в себя такие параметры, как IP-адрес node, распределение ресурсов, политики удаления модулей и другие конфигурации, специфичные для Kubelet. |
| cluster_config | string | :x: | используется для определения глобальных настроек и конфигураций для всего кластера. Она включает в себя такие параметры, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации в масштабах кластера. вставьте допустимую строку JSON со всеми уровнями вложенности. |
| init_config | string | :x: | Используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации. |
| additional_sans | []string | :x: | Дополнительные SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes. Возможность взаимодействовать с кластером по FQDN. Параметр получает список строк – IP-адреса и/или DNS (по формату RFC 1123 c поддержкой wildcard). |
| ha_mode | bool | :x: | Флаг, показывающий, включен ли режим haproxy |
| oidc_cert | string | :x: | ssl-сертификат в формате x509 pem |
| chipset | string | Тип эмулируемой системы |
| extnet_id | int | :x: | ID внешней сети для соединения workers.<br/>Если не задано,<br/>то сеть будет выбрана платформой. |
| vins_id | int | :x: | ID виртуальной сети |
| desc | string | :x: | Текстовое описание кластера |
| start | bool | :x: | Старт/Стоп кластера |
| enabled | bool | :x: | Включить/отключить кластер |
| permanently | bool | :x: | Безвозвратное удаление кластера. Используется при удалении. |
| lb_sysctl_params | []map[string]interface{} | :x: | Пользовательские значения sysctl для балансировщика нагрузки, для применения настроек, необходимо перезагрузить балансировщик |
| restore | bool | :x: | Восстановить кластер из корзины |

## Возвращаемые значения

В случае успешного выполнения _resource_ функция **decort_cb_k8s_cp** возвращает в указанную при вызове переменную следующие значения:

| Параметр | Тип | Описание |
| --- | --- | --- |
| detailed_info | []Struct{} [см. ниже](#описание-структуры-списка-detailed_info) | Детальная информация о группе |
| master_id | int | ID группы master |
| master_name | string | Наименование мастер-узла |
| lb_ip | string | IP адрес балансировщика нагрузки (load balancer) по-умолчанию. |
| default_wg_id | int | ID рабочей группы (worker group) для этого экземпляра кластера. |
| kubeconfig | string | Kubeconfig для доступа к кластеру. |
| k8s_id | int | ID кластера |
| acl | []Struct [см. ниже](#описание-структуры-acl) | Cписок Acces Control |
| account_id | int | ID аккаунта - владельца кластера |
| account_name | string | Имя аккаунта - владельца кластера |
| bservice_id | int | ID bservice |
| created_by | string | Аккаунт, создавший кластер |
| created_time | int | Время создания кластера |
| deleted_by | string | Кем удален кластер |
| deleted_time | int | Время удаления кластера |
| gid | int | GRID ID |
| guid | int | ID ресурса |
| k8s_ci_name | string | Имя образа кластера |
| lb_id | int | ID балансировщика нагрзуки |
| milestones | int | Вехи |
| rg_name | string | Название ресурсной группы |
| ssh_key | string | Публичный SSH ключ |
| status | string | Статус кластера |
| tech_status | string | Технический статус кластера |
| updated_by | string | Кем был обновлен кластер |
| updated_time | int | Время последнего обновления кластера |
| highly_available_lb | bool | Отказоустойчивая работа балансировщика нагрузки |
| address_vip | []Struct{} [см. ниже](#описание-структуры-address_vip) | VIP адреса |
| extnet_only | bool | Доступны ли только внешние сети |
| with_lb | bool | Был ли кластер создан с балансировщиком нагрузкиg |

### Описание структуры address_vip
| Параметр | Тип | Описание |
| --- | --- | --- |
| backend_ip | string | IP адрес бэкенда|
| frontend_ip | string | IP адрес фронтенда |


### Описание структуры списка detailed_info

| Параметр | Тип | Описание |
| --- | --- | --- |
| compute_id | int | ID компьюта в составе группы |
| name | string | Имя компьюта в составе группы |
| status | string | Статус компьюта в составе группы |
| tech_status | string | Технический статус компьюта в составе группы |
| interfaces | []Struct{} [см. ниже](#описание-структуры-списка-interfaces) | Список интерфейсов группы |

### Описание структуры списка interfaces

| Параметр | Тип | Описание |
| --- | --- | --- |
| def_gw | string | Шлюз по умолчанию |
| ip_address | string | IP интерфейса |

### Описание структуры acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| account_acl | []Struct [см. ниже](#описание-структуры-List-acl) | Информация о списке пользователей аккаунтов |
| k8s_acl | []Struct [см. ниже](#описание-структуры-List-acl) | Информация о списке пользователей компьютов |
| rg_acl | []Struct [см. ниже](#описание-структуры-List-acl) | Информация о списке пользователей ресурной группы |

### Описание структуры List acl
| Параметр | Тип | Описание |
| --- | --- | --- |
| explicit | bool | Явно ли указан доступ |
| guid | string | guid Ресурса |
| right | string | Права на ресурс |
| status | string | Статус ресурса |
| type | string | Тип ресурса |
| user_group_id | string | ID user group |

## Пример использования

Пример вызова _resource_ функции **decort_cb_k8s_cp**:

```terraform
resource "decort_cb_k8s_cp" "cluster" {
  #название кластера
  #обязательный параметр
  #тип - строка
  name = "k8s-cp"

  #k8sCI ID
  #обязательный параметр
  #тип - целое число
  k8sci_id = 55

  #плагин сети
  #обязательный параметр
  #возможные значения - "flannel", "weavenet", "calico"
  #тип - строка
  network_plugin = "flannel"

  #id ресурсной группы
  #обязательный параметр
  #тип - целое число
  rg_id = 1387

  #кол-во ядер мастер-узла
  #опциональный параметр
  #тип - целое число
  cpu = 2

  #объем RAM мастер-узла
  #опциональный параметр
  #тип - целое число
  ram = 2048

  #кол-во ВМ мастер-узла (1, 3 или 5)
  #опциональный параметр
  #тип - целое число
  num = 1

  #размер диска мастер-узла
  #опциональный параметр
  #тип - целое число
  disk = 10

  #описание кластера
  #опциональный параметр
  #тип - строка
  desc = "<DESCRIPTION>"

  #id extnet
  #опциональный параметр
  #тип - целое число
  extnet_id = 0

  #id vins
  #опциональный параметр
  #тип - целое число
  vins_id = 1234

  #sep ip
  #опциональный параметр
  #тип - целое число
  sep_id = 0

  #название пула
  #опциональный параметр
  #тип - строка
  sep_pool = "pool"

  #старт/стоп кластера
  #опциональный параметр
  #тип - булев
  start = true

  #включить/отключить кластер
  #опциональный параметр
  #тип - булев
  enabled = true

  #удалить кластер безвозвратно
  #опциональный параметр
  #тип - булев
  permanently = true

  #восстановить кластер из корзины
  #опциональный параметр
  #тип - булев
  restore = true

  #создать кластер с/без балансировщика нагрузки
  #опциональный параметр
  #тип - булев
  with_lb = true

  #позволяет создать схему отказоустройчивой LB
  #опциональный параметр
  #тип - булев
  ha_mode = true

  #дополнительные SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes;
  #возможность взаимодействовать с кластером по FQDN
  #параметр получает список строк – IP-адреса и/или DNS (по формату RFC 1123 c поддержкой wildcard)
  #опциональный параметр
  #тип - массив строк
  additional_sans = ["192.168.201.0","192.168.201.1"]

  #используется для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере
  #это позволяет вам настраивать такие вещи, как регистрация node, настройка network и другие задачи инициализации
  #опциональный параметр
  #тип - строка
  init_config = "{JSON string}"

  #используется для определения глобальных настроек и конфигураций для всего кластера
  #он включает в себя такие параметры, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации в масштабах кластера
  #опциональный параметр
  #тип - строка
  cluster_config = "{JSON string}"

  #используется для настройки поведения и параметров Kubelet, который является агентом primary node, запускаемым на каждом node кластера
  #он включает в себя такие параметры, как IP-адрес node, распределение ресурсов, политики удаления модулей и другие конфигурации, специфичные для Kubelet
  #опциональный параметр
  #тип - строка
  kubelet_config = "{JSON string}"

  #используется для настройки поведения и параметров присоединения node к кластеру
  #он включает в себя такие параметры, как режим прокси-сервера, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy
  #опциональный параметр
  #тип - строка
  kube_proxy_config = "{JSON string}"

  #используется для настройки поведения и параметров присоединения node к кластеру
  #он включает в себя такие параметры, как cluster's control plane endpoint, токен и ключ сертификата
  #опциональный параметр
  #тип - строка
  join_config = "{JSON string}"

  #при создании кластере использовать подключение только к сети ExtNet
  #опциональный параметр
  #тип - булев
  extnet_only = true

  #добавить ssl-сертификат в формате x509 pem
  #опциональный параметр
  #тип - файл с форматом в виде .crt
  oidc_cert = file("ca.crt")

  #тип эмулируемой системы
  #опциональный параметр
  #тип - строка
  chipset = "i440fx"

  #пользовательские значения sysctl для LB
  #опциональный параметр
  #тип - массив мап
  lb_sysctl_params = [{text = "1", text = "some"}]
}
```

Данный пример подразумевает, что ранее по тексту tf-файла выполнена корректная инициализация провайдера (подробнее об инициализации Terraform провайдера DECORT см. соответствующий [раздел](https://repository.basistech.ru/BASIS/terraform-provider-decort/src/branch/main/wiki/4.7.2/04.02-Инициализация-Terraform-провайдера-DECORT.md)).

После успешного завершения такого вызова **decort_cb_k8s_cp** в переменной `decort_cb_k8s_cp.cluster` будут сохранены возвращаемые значения.
