# Модуль decort_k8s ## Обзор модуля decort_k8s Модуль **decort_k8s** предназначен для выполнения следующих действий над кластерами Kubernetes: - создать - получить информацию - выключить/включить/остановить/запустить - изменить группы Worker-узлов - изменить имя кластера - удалить (в корзину или безвозвратно) - восстановить из корзины - изменить зону - изменить описание ## Параметры модуля decort_k8s Ниже приведен список параметров для модуля **decort_k8s** (за исключением [общих параметров](./введение.md#общие-параметры-модулей)): | Параметр | Тип, допустимые значения | Описание | | ------ | ------ | ------ | | account_id | (int) | Идентификатор аккаунта. | | account_name | (string) | Имя аккаунта. | | additionalSANs | (list) | Список дополнительных SAN (Subject Alternative Names) для использования в процессе автоматического выписывания сертификата Кластера Kubernetes. Можно использовать IP-адреса и доменные имена. | cluster_conf | (dict) | Словарь с глобальными настройками и конфигурацией для всего кластера. Включает в себя такие настройки, как имя кластера, настройки DNS, методы аутентификации и другие конфигурации всего кластера. | | description | (string) | Целевое описание. | | extnet_id | (int)
Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). | | extnet_only | (bool)
Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. | | getConfig | (bool)
Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. | | ha_lb | (bool)
Default: `false` | Использовать схему высокой доступности для создаваемого балансировщика нагрузки (если `with_lb: true`). | | id | (int) | Идентификатор кластера Kubernetes. | | init_conf | (dict) | Словарь для определения настроек и действий, которые должны быть выполнены перед запуском любого другого компонента в кластере. Позволяет настраивать такие процессы, как регистрация узла, настройка сети и другие задачи инициализации. | join_conf | (dict) | Словарь для настройки поведения и параметров присоединения узла к кластеру. Включает в себя такие параметры, как control-plane-endpoint кластера, токен и certificate-key. | | k8ci_id | (int) | Идентификатор конфигурации кластера Kubernetes. | | kubeproxy_conf | (dict) | Словарь для настройки поведения и настроек Kube-proxy, отвечающего за сетевое проксирование и балансировку нагрузки внутри кластера. Включает в себя такие параметры, как режим прокси, диапазоны IP-адресов кластера и другие конфигурации, специфичные для Kube-proxy. | | kublet_conf | (dict) | Словарь для настройки поведения и настроек Kubelet, который является агентом основного узла, работающим на каждом узле кластера. Включает в себя такие параметры, как IP-адрес узла, распределение ресурсов, политики вытеснения модулей и другие конфигурации, специфичные для Kubelet. | | master_chipset | (string)
Значения:
`Q35`
`i440fx` | Эмулируемый чипсет master-узлов. Не поддерживается изменение в существующем кластере.
Значение по умолчанию, если объект не найден или безвозвратно удалён: `Q35`. | | master_count | (int)
Значения:
`1`
`3`
`5`
`7`
Default: `1` | Количество Master-узлов. | | master_cpu | (int)
Default: `2` | Количество виртуальных процессоров на Master-узле. | | master_disk | (int)
Default: `10` | Объём загрузочного диска на Master-узле. | | master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. | | master_ram | (int)
Default: `2048` | Объём оперативной памяти на Master-узле. | | master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. | | name | (string) | Имя кластера Kubernetes. Если для существующего кластера указаны и `name`, и `id`, то параметр `name` используется для переименования. | | network_plugin | (str)
Значения:
`flannel`
`calico`
`weavenet`
Default: `flannel` | CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр `k8ci_id`) | | oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера. | permanent | (bool)
Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). | | rg_id | (int) | Идентификатор ресурсной группы. | | rg_name | (str) | Имя ресурсной группы. | | state | (str)
Значения:
`present`
`absent`
`disabled`
`enabled`
`started`
`stopped`
Default: `present` | Целевое состояние кластера.
`present` - существует и не удален. Если удален в корзину, то будет восстановлен из корзины.
`absent` - удалён в корзину или безвозвратно удалён, в зависимости от значения параметра `permanent`.
`disabled` - выключен. Если включён, то будет выключен. Если удален в корзину, то будет восстановлен из корзины и выключен.
`enabled` - включён. Если выключен, то будет включён. Если удален в корзину, то будет восстановлен из корзины и включён.
`started` - запущен. Если остановлен, то будет запущен. Если удален в корзину, то будет восстановлен из корзины и запущен.
`stopped` - остановлен. Если запущен, то будет остановлен. Если удален в корзину, то будет восстановлен из корзины и остановлен. | | lb_sysctl | (dict) | Словарь, описывающий параметры конфигурации sysctl балансировщика нагрузки. Может быть задан только если кластер имеет балансировщик нагрузки. | | storage_policy_id | (int) | Идентификатор политики хранения. Обязателен при создании. Не поддерживается изменение в существующем кластере. | | vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется. | with_lb | (bool)
Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. | | workers | (list) | Список словарей, описывающих группы Worker-узлов.
Ключи словаря:
• `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`; значение по умолчанию, если объект не найден: `[]`
• `chipset` (str) (необязательный) - эмулируемый чипсет. Допустимые значения: `Q35`, `i440fx`; значение по умолчанию, если объект не найден : `Q35`
• `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init; значение по умолчанию, если объект не найден: `{}`
• `cpu` (int) (необязательный) - количество виртуальных процессоров на узле; значение по умолчанию, если объект не найден: `1`
• `disk` (int) (необязательный) - объём загрузочного диска на узле; если не задан при создании, размер диска будет равен размеру используемого образа
• `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`; значение по умолчанию, если объект не найден: `[]`. Метка `workersGroupName` является служебной в платформе и игнорируется при сравнении переданных меток с существующими
• `name` (string) (обязательный) - имя группы Worker-узлов
• `num` (int) (необязательный) - количество узлов; значение по умолчанию, если объект не найден: `1`
• `pool` (str) (необязательный) - пул СХД, заданной ключом `sep_id`; если не задан при создании, то пул будет выбран платформой
• `ram` (int) (необязательный) - объём оперативной памяти на узле; значение по умолчанию, если объект не найден: `1024`
• `sep_id` (int) (необязательный) - идентификатор СХД; если не задан при создании, то используется СХД образа узла
• `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule`; значение по умолчанию, если объект не найден: `[]`. | | zone_id | (int) | Идентификатор зоны. | ## Возвращаемые значения модуля decort_k8s Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
Ключ Тип
данных
Описание
account_id int Идентификатор аккаунта.
account_name str Имя аккаунта.
acl dict[str, list] Словарь со списками доступа.
account list[dict[str, any]] Список словарей, описывающих доступы пользователей для аккаунта.
access_type str Тип доступа.
can_be_deleted bool | null Может ли быть удалён.
explicit bool Видимость ресурсной группы.
guid str | null Идентификатор.
status str Статус.
type str Тип.
user_email str | null Адрес электронной почты.
user_emails list[str] | null Список адресов электронной почты.
user_name str Имя пользователя.
k8s list[dict[str, any]] Список словарей, описывающих доступы пользователей для кластера.
Структура элементов аналогична элементам списка account .
rg list[dict[str, any]] Список словарей, описывающих доступы пользователей для ресурсной группы.
Структура элементов аналогична элементам списка account .
bservice_id int Идентификатор бизнес-сервиса.
config str | null Сonfig кластера.
created_by str Имя пользователя, создавшего кластер.
created_datetime str | null Дата и время создания.
created_timestamp int Unix-время создания.
deleted_by str | null Имя пользователя, удалившего кластер.
deleted_datetime str | null Дата и время удаления.
deleted_timestamp int | null Unix-время удаления.
description str Описание.
extnet_only bool Признак подключения узлов напрямую к внешней сети без использования внутренней сети.
id int Идентификатор кластера.
k8ci_id int Идентификатор конфигурации кластера Kubernetes.
k8ci_name str Имя конфигурации кластера Kubernetes.
lb_ha_ips dict[str, str] IP-адреса балансировщика нагрузки в режиме высокой доступности.
backend str Виртуальный IP-адрес во внутренней сети, используемый в режиме высокой доступности.
frontend str Виртуальный IP-адрес во внешней сети, используемый в режиме высокой доступности.
lb_ha_mode bool Включён ли режим высокой доступности.
lb_id int Идентификатор балансировщика нагрузки.
name str Имя кластера.
network_plugin str CNI-плагин кластера.
node_groups dict[str, any] Группы узлов кластера.
master dict[str, any] Группа Master-узлов.
annotations list[str] | null Список annotations.
id int Идентификатор группы.
labels list[str] | null Список labels.
name str Имя группы.
node_boot_disk_size_gb int Объём загрузочного диска узла.
node_count int Количество узлов.
node_cpu_count int Количество виртуальных процессоров на узле.
node_ram_size_mb int Объём оперативной памяти на узле.
taints list[str] | null Список taints.
vms list[dict[str, any]] Список узлов группы.
ext_ip str | null Внешний IP-адрес узла.
id int Идентификатор ВМ.
name str Имя ВМ.
status str Статус ВМ.
tech_status str Технический статус ВМ.
worker list[dict[str, any]] Список групп Worker-узлов.
Структура словарей аналогична словарю master .
rg_id int Идентификатор ресурсной группы.
rg_name str Имя ресурсной группы.
status str Статус кластера.
tech_status str Технический статус кластера.
updated_by str Имя пользователя, обновившего кластер.
updated_datetime str | null Дата и время обновления.
updated_timestamp int Unix-время обновления.
vins_id int Идентификатор внутренней сети.
with_lb bool Признак наличия балансировщика нагрузки.
zone_id int Идентификатор зоны.
## Пример использования модуля decort_k8s Пример создания кластера Kubernetes с именем `cluster-test` с получением Kuber config. ``` - name: Create a k8s cluster named cluster-test decort_k8s: authenticator: jwt controller_url: "https://ds1.digitalenergy.online" getConfig: true jwt: "{{ token.jwt }}" k8ci_id: 18 name: cluster-test rg_id: 125 storage_policy_id: "{{ storage_policy_id }}" workers: - cpu: 10 disk: 10 name: wg1 num: 1 ram: 1024 chipset: i440fx ci_user_data: {} taints: - key=value:NoSchedule annotations: - key=value labels: - label=value - cpu: 10 disk: 10 name: wg2 num: 2 ram: 1024 chipset: Q35 ci_user_data: {} taints: - key=value:NoSchedule annotations: - key=value labels: - label=value register: k8s_cluster ```