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://:@:27017/"
```

Где:

* `` — имя пользователя
* `` — пароль
* `` — internalConnect или externalConnect
* `` — имя базы данных

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

Сейчас соединение с базой работает без шифрования, и доступ к кластеру осуществляется только по логину и паролю.' lifecycle: suspendOnDestroyDefault: true adoptExistingOnCreateDefault: false operations: - svcOperationId: 37 operation: create kind: instance action: create - svcOperationId: 198 operation: create_user kind: subresource action: create - svcOperationId: 190 operation: delete kind: instance action: delete - svcOperationId: 199 operation: delete_user kind: subresource action: delete - svcOperationId: 201 operation: modify kind: instance action: modify - svcOperationId: 200 operation: modify_user kind: subresource action: modify - svcOperationId: 409 operation: reconcile kind: action action: reconcile - svcOperationId: 196 operation: resume kind: instance action: resume - svcOperationId: 194 operation: suspend kind: instance action: suspend stateOut: users: {} cfsParams: - svcOperationCfsParamId: 1089 svcOperationCfsParam: startupConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: false dataDescriptor: resourceRealm: dataType: string defaultValue: k8s-4-ext-nubes-ru isRequired: true isModifiable: false valueList: - k8s-4-ext-nubes-ru - svcOperationCfsParamId: 1090 svcOperationCfsParam: clusterConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: replicas: dataType: integer > 0 defaultValue: '1' isRequired: true isModifiable: false valueList: - '1' - '3' - '5' - '7' disk: dataType: integer > 0 defaultValue: '5' isRequired: true isModifiable: false cpu: dataType: integer > 0 defaultValue: '1000' isRequired: true isModifiable: false memory: dataType: integer > 0 defaultValue: '1024' isRequired: true isModifiable: false - svcOperationCfsParamId: 1091 svcOperationCfsParam: accessConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: masterIpSpace: dataType: string defaultValue: '' isRequired: true isModifiable: false masterAccessList: dataType: json defaultValue: '[]' isRequired: true isModifiable: false - svcOperationCfsParamId: 635 svcOperationCfsParam: username dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 636 svcOperationCfsParam: dbName dataType: string isRequired: true defaultValue: '' isModifiable: false - svcOperationCfsParamId: 643 svcOperationCfsParam: role dataType: string isRequired: true defaultValue: '' isModifiable: false valueList: - dbOwner - read - readWrite - svcOperationCfsParamId: 644 svcOperationCfsParam: username dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 1092 svcOperationCfsParam: clusterConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: cpu: dataType: integer > 0 defaultValue: '' isRequired: true isModifiable: false memory: dataType: integer > 0 defaultValue: '' isRequired: true isModifiable: false replicas: dataType: integer > 0 defaultValue: '' isRequired: true isModifiable: false valueList: - '1' - '3' - '5' - '7' disk: dataType: integer > 0 defaultValue: '' isRequired: true isModifiable: false - svcOperationCfsParamId: 1093 svcOperationCfsParam: accessConfiguration dataType: map-fixed isRequired: true defaultValue: '' isModifiable: true dataDescriptor: masterIpSpace: dataType: string defaultValue: '' isRequired: true isModifiable: false masterAccessList: dataType: json defaultValue: '' isRequired: true isModifiable: false - svcOperationCfsParamId: 640 svcOperationCfsParam: username dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 641 svcOperationCfsParam: dbName dataType: string isRequired: true defaultValue: '' isModifiable: true - svcOperationCfsParamId: 642 svcOperationCfsParam: role dataType: string isRequired: true defaultValue: '' isModifiable: true valueList: - dbOwner - read - readWrite cfsParamsByOp: 37: - 1089 - 1090 - 1091 198: - 635 - 636 - 643 190: [] 199: - 644 201: - 1092 - 1093 200: - 640 - 641 - 642 409: [] 196: [] 194: [] stateParams: startupConfiguration: '{"resourceRealm": "k8s-4-ext-nubes-ru"}' clusterConfiguration: '{"replicas": 1, "disk": 5, "cpu": 1000, "memory": 1024}' accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]"}'