26 KiB
26 KiB
Модуль decort_k8s
Обзор модуля decort_k8s
Модуль decort_k8s предназначен для выполнения следующих действий над кластерами Kubernetes:
- создать
- получить информацию
- выключить/включить/остановить/запустить
- изменить группы Worker-узлов
- изменить имя кластера
- удалить (в корзину или безвозвратно)
- восстановить из корзины
- изменить зону
- изменить описание
Параметры модуля decort_k8s
Ниже приведен список параметров для модуля decort_k8s (за исключением общих параметров):
| Параметр | Тип, допустимые значения | Описание |
|---|---|---|
| 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) Значения: Q35i440fx |
Эмулируемый чипсет master-узлов. Не поддерживается изменение в существующем кластере. Значение по умолчанию, если объект не найден или безвозвратно удалён: Q35. |
| master_count | (int) Значения: 1357Default: 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) Значения: flannelcalicoweavenetDefault: flannel |
CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр k8ci_id) |
| oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера. |
| permanent | (bool) Default: false |
Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
| rg_id | (int) | Идентификатор ресурсной группы. |
| rg_name | (str) | Имя ресурсной группы. |
| state | (str) Значения: presentabsentdisabledenabledstartedstoppedDefault: 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