Initial commit: add project structure and .gitignore

This commit is contained in:
2026-07-23 08:35:28 +04:00
commit b0ebd16893
78 changed files with 17820 additions and 0 deletions
+239
View File
@@ -0,0 +1,239 @@
name: mongodb
service_id: 92
service_display_name: MongoDB
service_short_name: mongodb
service_man: '# Инструкция по развертыванию MongoDB через платформу<br/><br/>## 1. Общая информация<br/><br/>MongoDB — документоориентированная распределённая база данных, обеспечивающая высокую доступность, горизонтальное масштабирование и гибкую модель хранения.<br/><br/>### Доступные операции с кластером<br/><br/>* **create** — создание базы<br/>* **delete** — удаление базы данных<br/>* **suspend** — остановка базы данных<br/>* **resume** — запуск базы данных<br/>* **modify** — изменение базы данных<br/><br/>### Доступные операции с пользователями<br/><br/>* **create_user** — создание пользователя<br/>* **modify_user** — модификация пользователя<br/>* **delete_user** — удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры развертывания базы данных<br/><br/>Эти параметры необходимо указать при создании базы данных.<br/><br/>### Платформа для развертывания<br/><br/>Среда, в которой будет развернут кластер. Выбирается из предложенного списка.<br/><br/>### Количество узлов<br/><br/>Количество реплик в кластере MongoDB.<br/>Оптимально выбирать нечётное значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.<br/><br/>&gt; **Примечание:** уменьшение количества узлов после создания кластера не рекомендуется.<br/><br/>### Квота памяти пода (MB)<br/><br/>Объём памяти для одного пода в мегабайтах.<br/>Пример: `2048`<br/><br/>### Квота CPU пода (mCPU)<br/><br/>CPU-квота для пода в миликорах (1000 mCPU = 1 vCPU).<br/>Пример: `1000`<br/><br/>### Размер диска для базы данных (GB)<br/><br/>Объём диска для хранения данных в гигабайтах.<br/>Пример: `20`<br/><br/>### Имя ipSpace для публикации внешнего IP<br/><br/>Имя ipSpace, через который будет выделен внешний IP для доступа к master-узлу.<br/>Укажите `no-needed`, если внешний адрес не требуется.<br/>Пример: `internet-no-antiddos-v1`<br/><br/>### Список разрешённых IP-адресов<br/><br/>Список IP-адресов или подсетей, с которых разрешён доступ к кластеру.<br/>Если оставить пустым — доступ открыт для всех источников.<br/>Пример: `[&quot;10.0.0.0/24&quot;, &quot;192.168.1.10/32&quot;]`<br/><br/>---<br/><br/>## 3. Параметры модификации базы данных<br/><br/>Все параметры, которые вы указываете при модификации, являются необязательными — система автоматически подставит ранее сохранённые значения, и при необходимости вы можете изменить их на нужные.<br/><br/>### Количество узлов<br/><br/>Количество реплик в кластере MongoDB.<br/>Оптимально выбирать нечётное значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.<br/><br/>&gt; **Примечание:** уменьшение количества узлов после создания кластера не рекомендуется.<br/><br/>### Квота памяти пода (MB)<br/><br/>Объём памяти для одного пода в мегабайтах.<br/>Пример: `2048`<br/><br/>### Квота CPU пода (mCPU)<br/><br/>CPU-квота для пода в миликорах (1000 mCPU = 1 vCPU).<br/>Пример: `1000`<br/><br/>### Размер диска для базы данных (GB)<br/><br/>Объём диска для хранения данных указывается в гигабайтах. Его можно увеличить при необходимости, однако уменьшить уже выделенный размер невозможно.<br/>Пример: `20`<br/><br/>### Имя ipSpace для публикации внешнего IP<br/><br/>Имя ipSpace, через который будет выделен внешний IP для доступа к master-узлу.<br/>Укажите `no-needed`, если внешний адрес не требуется.<br/>Пример: `internet-no-antiddos-v1`<br/><br/>### Список разрешённых IP-адресов<br/><br/>Список IP-адресов или подсетей, с которых разрешён доступ к кластеру.<br/>Если оставить пустым — доступ открыт для всех источников.<br/>Пример: `[&quot;10.0.0.0/24&quot;, &quot;192.168.1.10/32&quot;]`<br/><br/>---<br/><br/>## 3. Параметры создания пользователя<br/><br/>### Имя пользователя<br/><br/>Указывается имя пользователя (любой регистр).<br/>Пример: `readApp`<br/><br/>### Имя базы данных<br/><br/>Название базы, в которой будет создан пользователь.<br/>Если база отсутствует, она будет создана автоматически.<br/>Пример: `Apps_9392`<br/><br/>### Имя роли<br/><br/>* **read** — доступ только на чтение<br/>* **readWrite** — чтение и изменение данных<br/>* **dbOwner** — полный контроль над базой данных<br/><br/>---<br/><br/>## 4. Параметры модификации пользователя<br/><br/>### Имя пользователя<br/><br/>Необходимо выбрать существующего пользователя.<br/>Если список пуст, требуется предварительно создать пользователя.<br/><br/>### Имя базы данных<br/><br/>База данных, к которой относится пользователь.<br/>Если база отсутствует, она будет создана автоматически.<br/>Пример: `Apps_9392`<br/><br/>### Имя роли<br/><br/>* **read**<br/>* **readWrite**<br/>* **dbOwner**<br/><br/>---<br/><br/>## 5. Параметры удаления пользователя<br/><br/>### Имя пользователя<br/><br/>Выберите пользователя из списка для удаления.<br/><br/>---<br/><br/>## 6. Выходные параметры<br/><br/>После успешного развертывания базы данных платформа возвращает ключевые параметры.<br/><br/>### internalConnect<br/><br/>Внутренний эндпоинт для подключения к кластеру из сервисов, работающих в той же сети.<br/>Используется для внутренних интеграций и системных сервисов.<br/><br/>### externalConnect<br/><br/>Внешний FQDN для подключения к кластеру извне.<br/>Порт подключения — **27017**.<br/><br/>---<br/><br/>## 7. Пример подключения<br/><br/>Перед подключением необходимо установить **mongosh**.<br/><br/>Команда подключения к базе данных:<br/><br/>```<br/>mongosh &quot;mongodb://&lt;username&gt;:&lt;password&gt;@&lt;endpoint_db&gt;:27017/&lt;dbName&gt;&quot;<br/>```<br/><br/>Где:<br/><br/>* `&lt;username&gt;` — имя пользователя<br/>* `&lt;password&gt;` — пароль<br/>* `&lt;endpoint_db&gt;` — internalConnect или externalConnect<br/>* `&lt;dbName&gt;` — имя базы данных<br/><br/>## 8. Дополнительная информация<br/><br/>Сейчас соединение с базой работает без шифрования, и доступ к кластеру осуществляется только по логину и паролю.'
lifecycle:
suspend_on_destroy_default: true
adopt_existing_on_create_default: false
outputs:
params:
- code: state_params
type: map
- code: state_out
type: map
- code: state_params_flat
type: map
- code: state_out_flat
type: map
- code: vault_secrets
type: map
sensitive: true
- code: vault_url
type: string
- code: vault_user_path
type: string
- code: vault_fields
type: list
operations:
- name: create
id: 37
kind: instance
action: create
params:
- id: 1089
code: startupConfiguration
data_type: map-fixed
required: true
sort: 10
sub_params:
- id: 594
code: resourceRealm
data_type: string
required: true
default: ""
value_list:
- k8s-3-sandbox-nubes-ru
- k8s-4-sandbox-nubes-ru
descr: Кластер Kubernetes, на котором будет развернут экземпляр
is_modifiable: false
- id: 1090
code: clusterConfiguration
data_type: map-fixed
required: true
sort: 20
is_modifiable: true
sub_params:
- id: 597
code: replicas
data_type: integer &gt; 0
required: true
default: "1"
value_list:
- "1"
- "3"
- "5"
- "7"
is_modifiable: false
- id: 598
code: disk
data_type: integer &gt; 0
required: true
default: "5"
man: Указывается в Gb
is_modifiable: false
- id: 595
code: cpu
data_type: integer &gt; 0
required: true
default: "1000"
is_modifiable: false
- id: 596
code: memory
data_type: integer &gt; 0
required: true
default: "1024"
is_modifiable: false
- id: 1091
code: accessConfiguration
data_type: map-fixed
required: true
is_modifiable: true
sub_params:
- id: 600
code: masterAccessList
data_type: json
required: true
default: '[]'
man: Необходимо настраивать, когда зарезервирован внешний адрес<br/>Если передан пустой массив, доступ выделяется всем
is_modifiable: false
- id: 599
code: masterIpSpace
data_type: string
required: true
default: ""
descr: Из какого Ip-Space резервировать внешний IP<br/>Список предоставляется из Организации, в котором развёрнута ресурсная платформа
is_modifiable: false
- name: create_user
id: 198
kind: subresource
action: create
subresource: user
params:
- id: 635
code: username
data_type: string
required: true
- id: 636
code: dbName
data_type: string
required: true
- id: 643
code: role
data_type: string
required: true
value_list:
- dbOwner
- read
- readWrite
- name: delete
id: 190
kind: instance
action: delete
params: []
- name: delete_user
id: 199
kind: subresource
action: delete
subresource: user
params:
- id: 644
code: username
data_type: string
required: true
- name: modify
id: 201
kind: instance
action: modify
params:
- id: 1092
code: clusterConfiguration
data_type: map-fixed
required: true
sub_params:
- id: 604
code: disk
data_type: integer &gt; 0
required: true
default: ""
man: Указывается в Gb
is_modifiable: false
- id: 601
code: cpu
data_type: integer &gt; 0
required: true
default: ""
is_modifiable: false
- id: 602
code: memory
data_type: integer &gt; 0
required: true
default: ""
is_modifiable: false
- id: 603
code: replicas
data_type: integer &gt; 0
required: true
default: ""
value_list:
- "1"
- "3"
- "5"
- "7"
is_modifiable: false
- id: 1093
code: accessConfiguration
data_type: map-fixed
required: true
sub_params:
- id: 605
code: masterIpSpace
data_type: string
required: true
default: ""
descr: Из какого Ip-Space резервировать внешний IP<br/>Список предоставляется из Организации, в котором развёрнута ресурсная платформа
is_modifiable: false
- id: 606
code: masterAccessList
data_type: json
required: true
default: ""
man: Необходимо настраивать, когда зарезервирован внешний адрес<br/>Если передан пустой массив, доступ выделяется всем
is_modifiable: false
- name: modify_user
id: 200
kind: subresource
action: modify
subresource: user
params:
- id: 640
code: username
data_type: string
required: true
- id: 641
code: dbName
data_type: string
required: true
- id: 642
code: role
data_type: string
required: true
value_list:
- dbOwner
- read
- readWrite
- name: reconcile
id: 409
kind: action
action: reconcile
params: []
- name: resume
id: 196
kind: instance
action: resume
params: []
- name: suspend
id: 194
kind: instance
action: suspend
params: []