Функция доступна в провайдере версии 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                                                                                                                                                                                                                                                               |
| 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:                | Безвозвратное удаление кластера. Используется при удалении.                                                                                                                                                                                                                                     |
|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 | Время последнего обновления кластера                                   |

### Описание структуры списка 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" {
  # Название кластера
  # Обязательный параметр
  # string
  name = "k8s-cp"

  # K8sCI ID
  # Обязательный параметр
  # int
  k8sci_id = 55

  # Плагин сети (flannel, weavenet или calico)
  # Обязательный параметр
  # string
  network_plugin = "flannel"

  # ID ресурсной группы
  # Обязательный параметр
  # int
  rg_id = 1387

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

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

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

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

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

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

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

  # Storage Endpoint ID
  # Опциональный параметр
  # id
  sep_id = 0

  # SEP Pool
  # Опциональный параметр
  # string
  sep_pool = "pool"

  # Старт/Стоп кластера
  # Опциональный параметр
  # bool
  start = true

  # Включить/отключить кластер
  # Опциональный параметр
  # bool
  enabled = true

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

  # Восстановить кластер из корзины
  # Опциональный параметр
  # bool
  restore = true

  # Создать кластер с/без балансировщика нагрузки
  # Опциональный параметр
  # bool
  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
  # необязательный параметр
  # тип - файл
  oidc_cert = file("ca.crt")
}

# once the above directive completes, k8s cluster will be accessible
# as decort_cb_k8s_cp.cluster
```

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

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