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.

112 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Модуль 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)<br>Default: `Created by decort ansible module` | Описание кластера. |
| extnet_id | (int)<br>Default: `0` | Идентификатор внешней сети. Если задан `0`, то внешняя сеть выбирается автоматически. Если задан параметр `vins_id`, то значение данного параметра будет проигнорировано. Если задан `extnet_only: false`, то внешняя сеть будет подключена к создаваемой внутренней сети, а если `extnet_only: true`, то либо напрямую к каждому узлу кластера (если `with_lb: false`), либо напрямую к балансировщику нагрузки (если `with_lb: true`). |
| extnet_only | (bool)<br>Default: `false` | Не использовать внутреннюю сеть, подключать напрямую к внешней. |
| getConfig | (bool)<br>Default: `false` | Получить данные конфигурации для доступа к кластеру Kubernetes. |
| ha_lb | (bool)<br>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)<br>Значения:<br>`Q35`<br>`i440fx` | Эмулируемый чипсет master-узлов. Не применим при изменении существующего кластера. <br>Значение по умолчанию при создании: `i440fx`. |
| master_count | (int)<br>Default: `1` | Количество Master-узлов. |
| master_cpu | (int)<br>Default: `2` | Количество виртуальных процессоров на Master-узле. |
| master_disk | (int)<br>Default: `10` | Объём загрузочного диска на Master-узле. |
| master_pool | (str) | Пул СХД, заданной параметром `master_sepid`. |
| master_ram | (int)<br>Default: `2048` | Объём оперативной памяти на Master-узле. |
| master_sepid | (int) | Идентификатор СХД для Master-узла. Если не задан, то используется СХД образа Master-узла. |
| name | (string) | Имя кластера Kubernetes. |
| network_plugin | (str)<br>Значения:<br>`flannel`<br>`calico`<br>`weavenet`<br>Default: `flannel` | CNI plugin (модуль для управления сетевыми интерфейсами контейнера). Возможные значения могут быть ограничены в используемой конфигурации кластера Kubernetes (параметр `k8ci_id`) |
| oidc_cert | (raw) | Сертификат X.509 для OIDC-провайдера.
| permanent | (bool)<br>Default: `false` | Если выполняется удаление, то выполнить безвозвратное удаление (минуя корзину). |
| rg_id | (int) | Идентификатор ресурсной группы. |
| rg_name | (str) | Имя ресурсной группы. |
| started | (bool)<br>Default: `true` | Запустить кластер.<br>Используется только для существующего кластера. |
| state | (string)<br>Значения:<br>`present`<br>`absent`<br>`enabled`<br>`disabled`<br>`check`<br>Default: `present` | Целевое состояние кластера. |
| vins_id | (int) | Идентификатор внутренней сети. Если не задан, то будет создана новая внутренняя сеть. Если задан, то заданная внутренняя сеть должна иметь подключение к внешней сети. Если задано `extnet_only: true`, то параметр игнорируется.
| with_lb | (bool)<br>Default: `true` | Создание кластера Kubernetes с размещением Master-узлов за балансировщиком нагрузки. В ином случае каждый узел получит отдельный адрес из внешней сети.
| workers | (list) | Список словарей, описывающих группы Worker-узлов.<br>Ключи словаря:<br>&bull; `annotations` (list) (необязательный) - список строк с annotations в формате: `key1=value1`; значение по умолчанию при создании: `[]`<br>&bull; `chipset` (str) (необязательный) - эмулируемый чипсет. Допустимые значения: `Q35`, `i440fx`; значение по умолчанию при создании: `i440fx`<br>&bull; `ci_user_data` (dict) (необязательный) - конфигурация для cloud-init; значение по умолчанию при создании: `{}`<br>&bull; `cpu` (int) (необязательный) - количество виртуальных процессоров на узле; значение по умолчанию при создании: `1`<br>&bull; `disk` (int) (необязательный) - объём загрузочного диска на узле; если не задан при создании, размер диска будет равен размеру используемого образа<br>&bull; `labels` (list) (необязательный) - список строк с labels в формате: `label1=value1`; значение по умолчанию при создании: `[]`. Метка `workersGroupName` является служебной в платформе и игнорируется при сравнении переданных меток с существующими<br>&bull; `name` (string) (обязательный) - имя группы Worker-узлов<br>&bull; `num` (int) (необязательный) - количество узлов; значение по умолчанию при создании: `1`<br>&bull; `pool` (str) (необязательный) - пул СХД, заданной ключом `sep_id`; если не задан при создании, то пул будет выбран платформой<br>&bull; `ram` (int) (необязательный) - объём оперативной памяти на узле; значение по умолчанию при создании: `1024`<br>&bull; `sep_id` (int) (необязательный) - идентификатор СХД; если не задан при создании, то используется СХД образа узла<br>&bull; `taints` (list) (необязательный) - список строк с taints в формате: `key1=value1:NoSchedule`; значение по умолчанию при создании: `[]`. |
## Возвращаемые значения модуля decort_k8s
Модуль **decort_k8s** возвращает информацию о кластере в виде словаря `facts` со следующими ключами:
| Ключ | Тип данных | Описание |
| ------ | ------ | ------ |
| account_id | int | Идентификатор аккаунта. |
| config | str | Kuber config кластера.
| id | int | Идентификатор кластера. |
| k8s_Masters | dict | Словарь с информацией о группе Master-узлов.<br>Ключи словаря:<br>&bull; `cpu` (int) - количество виртуальных процессоров<br>&bull; `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>&bull; `disk` (int) - объём загрузочного диска<br>&bull; `id` (int) - идентификатор группы<br>&bull; `name` (str) - имя группы<br>&bull; `num` (int) - количество узлов<br>&bull; `ram` (int) - объём оперативной памяти
| k8s_Workers | dict | Список словарей с информацией о группах Worker-узлов.<br>Ключи словаря:<br>&bull; `cpu` (int) - количество виртуальных процессоров<br>&bull; `detailedInfo` (list) - список словарей с информацией об узлах; ключи словаря: `id` (int) - идентификатор ВМ, `name` (str) - имя ВМ, `status` (str) - статус ВМ, `techStatus` (str) - технический статус ВМ<br>&bull; `disk` (int) - объём загрузочного диска<br>&bull; `id` (int) - идентификатор группы<br>&bull; `labels` (list) - список строк с labels<br>&bull; `name` (str) - имя группы<br>&bull; `num` (int) - количество узлов<br>&bull; `ram` (int) - объём оперативной памяти<br>&bull; `taints` (list) - список строк с taints
| name | string | Имя кластера. |
| rg_id | int | Идентификатор ресурсной группы. |
| state | string | Статус кластера. |
| techStatus | string | Технический статус кластера. |
| vins_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
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
```