name: mongodb service_id: 92 service_display_name: MongoDB service_short_name: mongodb service_man: '# Инструкция по развертыванию MongoDB через платформу

## 1. Общая информация

MongoDB — документоориентированная распределённая база данных, обеспечивающая высокую доступность, горизонтальное масштабирование и гибкую модель хранения.

### Доступные операции с кластером

* **create** — создание базы
* **delete** — удаление базы данных
* **suspend** — остановка базы данных
* **resume** — запуск базы данных
* **modify** — изменение базы данных

### Доступные операции с пользователями

* **create_user** — создание пользователя
* **modify_user** — модификация пользователя
* **delete_user** — удаление пользователя

---

## 2. Параметры развертывания базы данных

Эти параметры необходимо указать при создании базы данных.

### Платформа для развертывания

Среда, в которой будет развернут кластер. Выбирается из предложенного списка.

### Количество узлов

Количество реплик в кластере MongoDB.
Оптимально выбирать нечётное значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.

> **Примечание:** уменьшение количества узлов после создания кластера не рекомендуется.

### Квота памяти пода (MB)

Объём памяти для одного пода в мегабайтах.
Пример: `2048`

### Квота CPU пода (mCPU)

CPU-квота для пода в миликорах (1000 mCPU = 1 vCPU).
Пример: `1000`

### Размер диска для базы данных (GB)

Объём диска для хранения данных в гигабайтах.
Пример: `20`

### Имя ipSpace для публикации внешнего IP

Имя ipSpace, через который будет выделен внешний IP для доступа к master-узлу.
Укажите `no-needed`, если внешний адрес не требуется.
Пример: `internet-no-antiddos-v1`

### Список разрешённых IP-адресов

Список IP-адресов или подсетей, с которых разрешён доступ к кластеру.
Если оставить пустым — доступ открыт для всех источников.
Пример: `["10.0.0.0/24", "192.168.1.10/32"]`

---

## 3. Параметры модификации базы данных

Все параметры, которые вы указываете при модификации, являются необязательными — система автоматически подставит ранее сохранённые значения, и при необходимости вы можете изменить их на нужные.

### Количество узлов

Количество реплик в кластере MongoDB.
Оптимально выбирать нечётное значение, так как это обеспечивает корректный процесс выбора ведущего узла и сохраняет работоспособность базы данных даже при отказе одной из нод.

> **Примечание:** уменьшение количества узлов после создания кластера не рекомендуется.

### Квота памяти пода (MB)

Объём памяти для одного пода в мегабайтах.
Пример: `2048`

### Квота CPU пода (mCPU)

CPU-квота для пода в миликорах (1000 mCPU = 1 vCPU).
Пример: `1000`

### Размер диска для базы данных (GB)

Объём диска для хранения данных указывается в гигабайтах. Его можно увеличить при необходимости, однако уменьшить уже выделенный размер невозможно.
Пример: `20`

### Имя ipSpace для публикации внешнего IP

Имя ipSpace, через который будет выделен внешний IP для доступа к master-узлу.
Укажите `no-needed`, если внешний адрес не требуется.
Пример: `internet-no-antiddos-v1`

### Список разрешённых IP-адресов

Список IP-адресов или подсетей, с которых разрешён доступ к кластеру.
Если оставить пустым — доступ открыт для всех источников.
Пример: `["10.0.0.0/24", "192.168.1.10/32"]`

---

## 3. Параметры создания пользователя

### Имя пользователя

Указывается имя пользователя (любой регистр).
Пример: `readApp`

### Имя базы данных

Название базы, в которой будет создан пользователь.
Если база отсутствует, она будет создана автоматически.
Пример: `Apps_9392`

### Имя роли

* **read** — доступ только на чтение
* **readWrite** — чтение и изменение данных
* **dbOwner** — полный контроль над базой данных

---

## 4. Параметры модификации пользователя

### Имя пользователя

Необходимо выбрать существующего пользователя.
Если список пуст, требуется предварительно создать пользователя.

### Имя базы данных

База данных, к которой относится пользователь.
Если база отсутствует, она будет создана автоматически.
Пример: `Apps_9392`

### Имя роли

* **read**
* **readWrite**
* **dbOwner**

---

## 5. Параметры удаления пользователя

### Имя пользователя

Выберите пользователя из списка для удаления.

---

## 6. Выходные параметры

После успешного развертывания базы данных платформа возвращает ключевые параметры.

### internalConnect

Внутренний эндпоинт для подключения к кластеру из сервисов, работающих в той же сети.
Используется для внутренних интеграций и системных сервисов.

### externalConnect

Внешний FQDN для подключения к кластеру извне.
Порт подключения — **27017**.

---

## 7. Пример подключения

Перед подключением необходимо установить **mongosh**.

Команда подключения к базе данных:

```
mongosh "mongodb://<username>:<password>@<endpoint_db>:27017/<dbName>"
```

Где:

* `<username>` — имя пользователя
* `<password>` — пароль
* `<endpoint_db>` — internalConnect или externalConnect
* `<dbName>` — имя базы данных

## 8. Дополнительная информация

Сейчас соединение с базой работает без шифрования, и доступ к кластеру осуществляется только по логину и паролю.' 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: - iot-naeel - k8s-3-sandbox-nubes-ru - k8s-4-sandbox-nubes-ru - naeel-test-3 descr: Кластер Kubernetes, на котором будет развернут экземпляр is_modifiable: false - id: 1090 code: clusterConfiguration data_type: map-fixed required: true sort: 20 is_modifiable: true sub_params: - id: 595 code: cpu data_type: integer > 0 required: true default: "1000" is_modifiable: false - id: 596 code: memory data_type: integer > 0 required: true default: "1024" is_modifiable: false - id: 597 code: replicas data_type: integer > 0 required: true default: "1" value_list: - "1" - "3" - "5" - "7" is_modifiable: false - id: 598 code: disk data_type: integer > 0 required: true default: "5" man: Указывается в Gb 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: Необходимо настраивать, когда зарезервирован внешний адрес
Если передан пустой массив, доступ выделяется всем is_modifiable: false - id: 599 code: masterIpSpace data_type: string required: true default: "" descr: Из какого Ip-Space резервировать внешний IP
Список предоставляется из Организации, в котором развёрнута ресурсная платформа 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: 601 code: cpu data_type: integer > 0 required: true default: "" is_modifiable: false - id: 602 code: memory data_type: integer > 0 required: true default: "" is_modifiable: false - id: 603 code: replicas data_type: integer > 0 required: true default: "" value_list: - "1" - "3" - "5" - "7" is_modifiable: false - id: 604 code: disk data_type: integer > 0 required: true default: "" man: Указывается в Gb 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
Список предоставляется из Организации, в котором развёрнута ресурсная платформа is_modifiable: false - id: 606 code: masterAccessList data_type: json required: true default: "" man: Необходимо настраивать, когда зарезервирован внешний адрес
Если передан пустой массив, доступ выделяется всем 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: []