name: vc_nsxt service_id: 22 service_display_name: Сетевой шлюз периметра (Edge) service_short_name: vc_nsxt service_man: '# Инструкция по развертыванию Сетевой шлюз периметра (Edge) через платформу

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

Сервис **Сетевой шлюз периметра (Edge)** предназначен для создания периметрового сетевого шлюза в рамках одного виртуального датацентра (vDC) или группы виртуальных датацентров (groupvDC).
При создании автоматически разворачивается routed-сеть с адресным пространством `10.10.102.0/24`.
Сервис обеспечивает сетевую изоляцию, маршрутизацию, а также может включать функциональность балансировщика нагрузки AVI (ALB) для последующей интеграции, включая поддержку кластеров Штурвал.

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

**create** — Создание нового Edge с привязкой к vDC или groupvDC и развёртыванием routed-сети.
**delete** — Удаление ранее созданного Edge. Недоступно при наличии зависимых услуг (vApp, VM, Кластер Штурвал).
**modify** — Изменение параметров и сетевых настроек существующего Edge.

---

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

Ниже приведены параметры операции **create**.

### Тип родительской услуги
Определяет контекст размещения Edge.
Допустимые значения: `vdc`, `groupvdc`.
Использование:
- При выборе `vdc` обязателен параметр **UUID VDC**.
- При выборе `groupvdc` обязателен параметр **UUID Группы VDC**.

### UUID VDC
Идентификатор виртуального датацентра.
Необходимо предварительно создать vDC через услугу «Виртуальный датацентр (vDC)».
Указывается только при выборе родительского типа `vdc`.

### UUID Группы VDC
Идентификатор группы виртуальных датацентров.
Создаётся через услугу «Группа виртуальных датацентров (groupvDC)».
Используется при выборе родительского типа `groupvdc`.

### Включить ALB
Флаг активации AVI Load Balancer в Cloud Director.
Пример значения: `true`/`false`.
Нужен для развёртывания кластера Штурвал и возможности создания Virtual Services.

### Наименование segroup
Имя сервиса групп (segroup) на уровне ресурсной платформы.
Обязательно при включённом ALB.
Определяет группу, в которой будут выделяться пулы AVI для Virtual Services.

### virtualServicesCount
Количество резервируемых виртуальных сервисов (Virtual Services) на AVI.
Типичное значение: 1–10 в зависимости от нагрузки.

---

## 3. Рекомендованные характеристики

### Тестовое окружение (Test)

- Тип родительской услуги: `vdc`
- virtualServicesCount: 1–2
- ALB: выключен по умолчанию (включать только при необходимости тестирования Штурвала)
- segroup: задаётся только при включённом ALB
- VDC гарантии CPU/RAM: минимальные (поскольку изменить их после создания нельзя)

### Промышленное окружение (Production)

- Тип родительской услуги: `groupvdc` при работе с распределёнными нагрузками или `vdc` для локализованных проектов
- virtualServicesCount: 3–10, исходя из предполагаемого количества публикаций
- ALB: включён, если требуется высокая доступность сервисов или используется кластер Штурвал
- segroup: рекомендуется использовать выделенную группу под проект
- VDC гарантии CPU/RAM: повышенные, с учётом того, что изменить их после создания невозможно без пересоздания vDC

---

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

### Имя Edge
Уникальное название созданного сетевого шлюза, используется для ссылок и дальнейших операций.

### Имя routed-сети
Автоматически созданная routed-сеть с подсетью `10.10.102.0/24`, используется для подключения ресурсов.

### Параметры Edge
Набор параметров, указанных пользователем при создании: тип услуги, ALB, segroup, virtualServicesCount и др.
Используются в операциях modify и для анализа состояния сервиса.

---

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

- В рамках сервиса **один раз при создании задаётся гарантированная доля CPU/RAM vDC**. Изменить её невозможно — требуется пересоздание vDC.
- Удаление Edge недоступно при наличии зависимых ресурсов (vApp, VM, кластер Штурвал).
- При использовании ALB необходимо корректно указывать segroup, чтобы обеспечить корректное выделение пулов AVI.
- При выборе режима `groupvdc` следует учитывать распределение нагрузки между несколькими vDC.
- SNAT для всех ресурсов внутри Edge можно активировать через операцию modify (параметры выделения VIP и ipSpace).

' lifecycle: suspend_on_destroy_default: false 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: 10 kind: instance action: create params: - id: 8 code: vdcUid data_type: string required: false ref_svc_id: 21 descr: UUID Услуги `Виртуальный датацентр (vDC)` man: 'Необходимо, если выбран тип подключаемой VDC: `vdc`' sort: 10 - id: 340 code: needEnableAVI data_type: boolean required: true default: "false" value_list: - "false" - "true" descr: Включение Load Balancer man: Параметры `Наименование segroup`, `Кол-во VS на AVI` необходимо также указать sort: 30 is_modifiable: true - id: 341 code: virtualServicesCount data_type: integer > 0 required: false default: "1" maxvalue: 4 minvalue: 1 descr: Кол-во виртуальных сервисов, которые **резервируются** на AVI man: Во избежании коллапса пока выделяется до 4
Необходимо указывать, если включён параметр `Включить ALB` sort: 50 is_modifiable: true - id: 621 code: vdcType data_type: string required: true default: vdc value_list: - vdc - vdcGroup descr: Тип родительской услуги man: При выборе vdc обеспечивает сетевую доступность только в рамках этого vdc
При выборе groupvdc обеспечивает сетевую доступность между всеми vdc, которые включены в groupvdc sort: 0 - id: 622 code: vdcGroupUid data_type: string required: false ref_svc_id: 29 descr: UUID Услуги `Группа виртуальных датацентров (groupvDC)` man: 'Необходимо, если выбран тип подключаемой VDC: `groupvdc`' sort: 20 - id: 825 code: qosProfile required: false descr: Параметр пока не работает
Должен возвращать поле из ресурсной платформы типа vc из .vcd.hardware.gatewayQoSProfiles

Как по идее должен работать.
Нужно заполнить или CFS vdcUid, или vdcGroupUid
Идеально конечно проверять `if (params.vdcType == "vdc" && params.vdcUid != "")` или `if (params.vdcType == "vdcGroup" && params.vdcGroupUid != "")`

Далее надо пойти по стейту vdc -> org -> resPlatform, взять gatewayQoSProfiles
Или пойти по стейту vdcgroup -> vdc -> org -> resPlatform, взять gatewayQoSProfiles

Регулярку могу написать (Виталя) man: if (vdcUid != '") {
наборфункций1
}

elif (vdcGroupUid != "") {
наборфункций2
}

else {
return "Необходимо выбрать vdc или vdcgroup"
} sort: 60 depends_on: vdcUid,vdcGroupUid is_modifiable: true - name: delete id: 25 kind: instance action: delete man: Невозможно удалить если routed-сеть в Edge связана с:
- vApp
- VM
- Kubernetes-кластер Штурвал

Запустить операцию возможно, но будет ошибка params: [] - name: modify id: 111 kind: instance action: modify man: Для создания SNAT Правила убедитесь, что в организации есть свободные IP
Редактировать кол-во свободных IP можно в услуге `Организация в Cloud Director` -> `modify` params: - id: 368 code: needEnableAVI data_type: boolean required: false value_list: - "false" - "true" descr: Включение Load Balancer man: Параметры `Наименование segroup`, `Кол-во VS на AVI` необходимо также указать sort: 10 - id: 369 code: virtualServicesCount data_type: integer > 0 required: false maxvalue: 4 minvalue: 1 descr: Кол-во виртуальных сервисов, которые выделяются на AVI man: Во избежании коллапса пока выделяется до 4
Необходимо указывать, если включён параметр `Включить ALB` sort: 30 - id: 372 code: ipSpaceName data_type: string required: false descr: Имя ip Space для внешнего IP man: Необходимо указывать, если включён параметр `Выделить VIP для SNAT` sort: 50 - id: 856 code: qosProfile data_type: string required: false sort: 40 - name: reconcile id: 252 kind: action action: reconcile params: []