refactor: restructure project — separate tools, config, generated, provider

TOOLS/        — generators + scripts + config + ARCHITECTURE.md
  ├── yaml-generator/    (code)
  ├── resource-generator/ (code)
  ├── docs-generator/    (code)
  ├── scripts/           (← devops/*.sh)
  ├── config/            (← devops/profiles/ + devops/config/)
  │   ├── test/          profile.env, services_list.txt, operation_timeouts.json
  │   ├── prod/
  │   └── dev/
  └── ARCHITECTURE.md    (← devops/ARCHITECTURE.md)

generated/    — pipeline output only (gitignored)
  ├── test/resources_yaml/, go/, docs/, provider_build/
  ├── prod/
  └── dev/

provider/     — code only, no generated files
  resources_yaml/        — DELETED (generated)
  internal/resources_gen/ — DELETED (generated)

devops/       — removed (replaced by TOOLS/scripts + TOOLS/config + generated/)

Generators now fail if NUBES_*_DIR not set (no defaults to provider/).
Provider requires pipeline to populate resources_gen/ before build.
This commit is contained in:
“Naeel”
2026-07-06 09:06:09 +04:00
parent c34db5e5e3
commit dd56bcda83
1285 changed files with 84004 additions and 1910 deletions
@@ -0,0 +1,54 @@
name: openwhisk
service_id: 100
service_display_name: Serverless Openwhisk (openwhisk_tenant)
service_short_name: openwhisk
service_man: Добавление и удаления пользователя для работы с Openwhisk
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: 41
kind: instance
action: create
params:
- id: 64
code: username
data_type: string
required: true
descr: Имя пользователя Openwhisk
- id: 863
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Ресурсная платформа
- name: delete
id: 42
kind: instance
action: delete
params:
- id: 65
code: username
data_type: string
required: true
descr: Имя пользователя Openwhisk
@@ -0,0 +1,94 @@
name: dnszone
service_id: 110
service_display_name: DNS зона
service_short_name: dnszone
service_man: '## ![image](https://img.icons8.com/?size=50&id=41400&format=png) Необходимо делегировать зону у регистратора на Авторитетные DNS (Сервера зон)<br/><br/>ns3.ngcloud.ru<br/>``` bash<br/>185.247.187.83<br/>2a10:aa80:0:5::3<br/>```<br/><br/>ns4.ngcloud.ru<br/>``` bash<br/>81.22.46.43<br/>2a10:aa80:0:6::3<br/>```'
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: 43
kind: instance
action: create
params:
- id: 66
code: zoneEmail
data_type: string
required: true
descr: Контактный e-mail
- id: 67
code: zoneName
data_type: string
required: true
regex: ^([a-z0-9-]+\.)+[a-z0-9-]+$
descr: Имя зоны
man: Имя зоны
- id: 68
code: zoneKind
data_type: string
required: true
default: NATIVE
value_list:
- NATIVE
- SLAVE
descr: Тип зоны
- id: 69
code: zoneMastersForSlave
data_type: string
required: false
descr: Использовать если выбран тип SLAVE. IP адреса в формате через пробел для настройки Master-серверов
- id: 70
code: zoneTimeToRefresh
data_type: string
required: true
default: "86400"
descr: Время ожидания ответа вторичного DNS перед запросом SOA-записи с первичных серверов
- id: 71
code: zoneTimeToRetry
data_type: string
required: true
default: "7200"
descr: Время в течение которого сервер повторно попробует синхронизировать информацию с первичных DNS-серверов
- id: 72
code: zoneTimeToExpire
data_type: string
required: true
default: "3600000"
descr: Время в течение которого вторичный DNS будет пытаться завершить синхронизацию зоны с первичным
- id: 73
code: zoneTimeToLive
data_type: string
required: true
default: "86400"
descr: Время, в течение которого информация будет кешироваться другими DNS-серверами
- id: 284
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
- name: delete
id: 44
kind: instance
action: delete
params: []
@@ -0,0 +1,100 @@
name: dnsrecord
service_id: 111
service_display_name: DNS запись
service_short_name: dnsrecord
service_man: Необходима DNS зона, в которой будет создана DNS запись.<br/>Выберите <br/>* Зону в которой будет создана запись<br/>* Тип записи<br/>* Имя записи<br/>* Значение записи
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: 45
kind: instance
action: create
params:
- id: 75
code: zoneUid
data_type: uuid
required: true
ref_svc_id: 110
descr: UUID экземпляра услуги DNS-зоны
man: UUID экземпляра услуги DNS-зоны
sort: 10
- id: 76
code: recordType
data_type: string
required: true
value_list:
- A
- AAAA
- CNAME
- MX
- PTR
- SOA
- SRV
- TXT
- LUA
- NS
- SSHFP
descr: Тип DNS-записи
man: Тип DNS-записи
sort: 20
- id: 77
code: recordName
data_type: string
required: true
unique_scope: parent
descr: Имя записи. Имя зоны в конце проставляется автоматически
man: Имя записи. Имя зоны в конце проставляется автоматически
sort: 30
- id: 78
code: recordInput
data_type: string
required: true
descr: Значение. Необходима валидация, в зависимости от типа записи. Должно быть заменено на UUID-внешнийIP
man: Значение. Необходима валидация, в зависимости от типа записи. Должно быть заменено на UUID-внешнийIP
sort: 40
is_modifiable: true
- id: 450
code: recordTTL
data_type: integer &gt; 0
required: true
default: "3600"
maxvalue: 604800
minvalue: 30
descr: Time-to-Leave записи. Раз в какое время запись будет обновлена
sort: 50
- name: delete
id: 46
kind: instance
action: delete
params: []
- name: modify
id: 90
kind: instance
action: modify
params:
- id: 256
code: recordInput
data_type: string
required: true
descr: Запись. Необходима валидация, в зависимости от типа записи. Должно быть заменено на UUID-внешнийIP
@@ -0,0 +1,57 @@
name: tenant
service_id: 112
service_display_name: Тенант в Grafana
service_short_name: tenant
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: 84
kind: instance
action: create
params:
- id: 239
code: grafanaOrgName
data_type: string
required: true
regex: ^WZ[\d]+$
descr: WZ-Код клиента
sort: 10
- id: 240
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
sort: 20
- name: delete
id: 86
kind: instance
action: delete
params: []
- name: modify
id: 87
kind: instance
action: modify
man: Просто удаляет все текущие датасоурсы и ставит их заново<br/>Полезно, когда нужно &quot;ресетнуть&quot; / &quot;добавить&quot;
params: []
@@ -0,0 +1,155 @@
name: vc_complex
service_id: 113
service_display_name: Быстрый старт
service_short_name: vcComplex
service_man: '# Создает окружение для ВМ.<br/><br/>## Создает сервисы:<br/>**Организация**<br/>**Виртуальный датацентр**<br/>**Каталог**<br/>**Сетевой шлюз периметра**<br/><br/>'
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: 107
kind: instance
action: create
params:
- id: 332
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование ресурсной платформы
sort: 1
- id: 334
code: vappName
data_type: string
required: true
regex: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
descr: Имя vApp
sort: 10
- id: 358
code: vdcProviderGateway
data_type: string
required: true
default: sandbox-v1cl1-pvdc
descr: Взять из свойств ресурсной платформы.<br/>Путь .vcd.providerVdc - взять KEY<br/><br/>providerGateway Cloud Director. Влияет ресурсы будут предоставлены. Является полем (List&lt;String&gt;) в свойствах рес. платформы ЛК, но сам параметр передаётся только как один String
sort: 200
- id: 359
code: virtualServicesCount
required: true
default: "1"
maxvalue: 4
minvalue: 1
descr: Кол-во виртуальных сервисов, которые выделяются на AVI. Во избежании коллапса пока выделяется до 4
sort: 110
- id: 360
code: ipSpaceName
data_type: string
required: false
default: internet-ipv4-v1
descr: Имя ip Space для внешнего IP. Целесообразнее брать самый дешёвый, так как это vip для исходящего трафика. Необходимо задавать если включен needExternalAddressSNAT
sort: 130
- id: 399
code: storageConfig
data_type: json
required: true
default: '[{"name": "", "size": 1024}]'
descr: Описывается как массив объектов, где описывается имя политики и её размер
sort: 210
- id: 400
code: vdcNetworkPool
data_type: string
required: true
default: nsxt-sandbox-geneve-np
sort: 120
- id: 401
code: cpuGuaranteed
data_type: integer &gt; 0
required: true
default: "20"
value_list:
- "20"
- "50"
- "80"
sort: 20
- id: 402
code: memGuaranteed
data_type: integer &gt; 0
required: true
default: "20"
value_list:
- "20"
- "50"
- "80"
sort: 30
- id: 403
code: segroupName
data_type: string
required: false
default: SEGROUP-SANDBOX-CL1-SHARED-01
descr: Наименование segroup, в котором будут выделяться пулы на AVI
sort: 100
- id: 404
code: needExternalAddressSNAT
data_type: boolean
required: true
default: "true"
value_list:
- "false"
- "true"
descr: Выделяет внешний IP на Edge. Используется для SNAT всего трафика
sort: 40
- id: 405
code: needEnableAVI
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Включает AVI в Cloud Director
sort: 50
- id: 566
code: cpuAllocated
data_type: string
required: true
default: "1"
minvalue: 1
descr: шт
sort: 21
- id: 567
code: memAllocated
data_type: integer &gt; 0
required: true
default: "10"
minvalue: 1
descr: gb
sort: 31
- id: 568
code: vIPCount
data_type: integer &gt; 0
required: true
default: "0"
maxvalue: 20
minvalue: 0
descr: ш
sort: 131
@@ -0,0 +1,28 @@
name: gitea_complex
service_id: 114
service_display_name: Комплексная услуга по созданию gitea
service_short_name: GiteaComplex
service_man: Комплексная услуга из [&quot;gittea&quot;, &quot;postgres&quot;]
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: []
@@ -0,0 +1,247 @@
name: mariadb
service_id: 115
service_display_name: Mariadb
service_short_name: mariadb
service_man: 'Mariadb кластер. Ресурсная платформа: k8s. Автоматизация: k8s operator.<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: 138
kind: instance
action: create
params:
- id: 422
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
sort: 10
- id: 424
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "500"
maxvalue: 4000
minvalue: 500
descr: Квота ядра пода (milicores)
sort: 30
is_modifiable: true
- id: 425
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "1024"
maxvalue: 8192
minvalue: 1024
descr: Квота памяти пода (MBytes)
sort: 30
is_modifiable: true
- id: 426
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
sort: 50
is_modifiable: true
- id: 427
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
sort: 60
is_modifiable: true
- id: 428
code: needExternalAddressMaster
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Выделяет внешний (белый) IP для доступа к master
sort: 70
is_modifiable: true
- id: 429
code: ipSpaceNameMaster
data_type: string
required: false
descr: Имя ipSpace для публикации VIP master. Не может быть пустым, если включен needExternalAddressMaster
sort: 80
is_modifiable: true
- id: 430
code: ext_BACKUP_SCHEDULE
data_type: string
required: false
default: 0 * * * *
regex: ^(\*|(\d+|\*\/\d+|\d+(,\d+)*))\s\*\s\*\s\*\s\*$
descr: Не обязательный. Время запуска бекапа
sort: 90
is_modifiable: true
- id: 431
code: appVersion
data_type: string
required: true
default: 9.4.0
value_list:
- 8.4.0
- 9.4.0
descr: Версия MySQL
sort: 100
- id: 432
code: autoScale
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Включает автоскейлинг PV. При включении параметра необходимо настроить autoScalePercentage и autoScaleTechWindow. Алерт при срабатывании вызывает modify у текущей услуги
sort: 310
is_modifiable: true
- id: 433
code: autoScalePercentage
data_type: integer &gt; 0
required: false
default: "10"
value_list:
- "10"
- "15"
- "20"
descr: Требует включения autoScale. Позволяет указать в процентах расширение от текущего макс объема
sort: 320
is_modifiable: true
- id: 434
code: autoScaleTechWindow
data_type: integer &gt;= 0
required: false
default: "0"
value_list:
- "0"
- "5"
- "12"
- "23"
descr: Требует включения autoScale. Окно обновления (пока не реализовано). Указывается час в виде Integer (0 / 5 / 12 / 23)
sort: 330
is_modifiable: true
- id: 435
code: autoScaleQuotaGb
data_type: integer &gt; 0
required: false
default: "1"
descr: Квота для autoScale
sort: 340
is_modifiable: true
- id: 459
code: s3Uid
data_type: uuid
required: true
ref_svc_id: 12
descr: Экземпляр (учетная запись) S3 для резервного копирования. Резервное копирование обязательно
sort: 20
- name: delete
id: 139
kind: instance
action: delete
params:
- id: 456
code: deleteS3Bucket
data_type: boolean
required: true
default: "true"
value_list:
- "false"
- "true"
descr: Также удалить технический S3 Bucket с бэкапами?
sort: 10
- name: modify
id: 142
kind: instance
action: modify
params:
- id: 436
code: resourceCPU
data_type: integer &gt; 0
required: false
- id: 437
code: resourceMemory
data_type: integer &gt; 0
required: false
- id: 438
code: resourceInstances
data_type: integer &gt; 0
required: false
- id: 439
code: resourceDisk
data_type: integer &gt; 0
required: false
- id: 440
code: needExternalAddressMaster
data_type: boolean
required: false
value_list:
- "false"
- "true"
- id: 441
code: ipSpaceNameMaster
required: false
- id: 442
code: ext_BACKUP_SCHEDULE
data_type: string
required: false
- id: 443
code: autoScale
data_type: boolean
required: false
value_list:
- "false"
- "true"
- id: 444
code: autoScalePercentage
data_type: integer &gt; 0
required: false
- id: 445
code: autoScaleTechWindow
data_type: integer &gt;= 0
required: false
- id: 446
code: autoScaleQuotaGb
data_type: integer &gt; 0
required: false
- name: resume
id: 141
kind: instance
action: resume
params: []
- name: suspend
id: 140
kind: instance
action: suspend
params: []
@@ -0,0 +1,291 @@
name: kafka
service_id: 116
service_display_name: ApacheKafka
service_short_name: kafka
service_man: "# Инструкция по развертыванию Apache Kafka через платформу<br/><br/>---<br/>## 1. Общая информация<br/>Брокер сообщений Apache Kafka — это отказоустойчивая распределённая платформа для обмена сообщениями и потоковой обработки данных в реальном времени.<br/>Позволяет надёжно передавать события между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние, так и защищённые TLS-подключения. Развёртывание полностью автоматизировано платформой.<br/><br/>## Доступные операции<br/>- **create** — Создание кластера<br/>- **delete** — Удаление кластера<br/>- **suspend** — Остановка кластера<br/>- **resume** — Запуск кластера<br/><br/>- **create_topic** — Создание топика<br/>- **modify_topic** — Модификация топика<br/>- **delete_topic** — Удаление топика<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/><br/>---<br/>## 2. Параметры развертывания кластера<br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса Kafka:<br/><br/>* **Платформа для развертывания:**<br/> Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `\tk8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/> Количество узлов (брокеров) в кластере Kafka<br/><br/>* **Квота (megabyte) памяти пода:**<br/> Квота памяти пода в мегабайтах. Пример: `2048`<br/><br/>* **Квота (millicore ) ядра пода:**<br/> Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`<br/><br/>* **Размер (gigabyte) диска для базы данных:**<br/> Размер диска для хранения данных в гигабайтах. Пример: `20`<br/><br/>* **Выделяет внешний IP для доступа к master:**<br/> Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false`<br/><br/>* **Имя ipSpace для публикации внешнего IP**<br/> Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`<br/><br/>---<br/>## 4. Выходные параметры<br/>После успешного развертывания ресурса Kafka платформа возвращает ряд параметров.<br/>Ключевым из них является:<br/><br/>**internalConnect**<br/>Это внутренний эндпоинт, который используется для подключения к кластеру Kafka из других сервисов, развернутых внутри той же сети.<br/>Эндпоинт предоставляет доступ к брокерам Kafka по внутренним портам, указанным в конфигурации слушателей.<br/><br/>**externalConnect**<br/>Это внешний эндпоинт (fqdn), который используется для подключения к кластеру Kafka. Для подключения используеться 9093 порт.<br/><br/>Для подключения используются следующие порты:<br/><br/>* 9092 — внутренний нешифрованный доступ (plain).<br/>* 9093 — внутренний и внешний доступ по TLS, с обязательной TLS-аутентификацией.<br/><br/>---<br/>## 5. Дополнительная информация<br/>Для создания топиков, пользователей и управления ими, а также для интеграции с кластерами Kafka используйте соответствующие сервисы и раздел &quot;Облачные сервисы&quot;.<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: 148
kind: instance
action: create
params:
- id: 461
code: resourceInstances
data_type: integer &gt; 0
required: true
value_list:
- "1"
- "2"
- "3"
- "4"
- "5"
minvalue: 1
descr: 'Пример: `2`'
sort: 20
is_modifiable: true
- id: 462
code: resourceMemory
data_type: integer &gt; 0
required: true
minvalue: 1000
descr: 'Пример: `2048`'
sort: 30
is_modifiable: true
- id: 463
code: resourceCPU
data_type: integer &gt; 0
required: true
minvalue: 1000
descr: 'Пример: `2000`'
sort: 40
is_modifiable: true
- id: 464
code: resourceDisk
data_type: integer &gt; 0
required: true
descr: 'Пример: `20`'
sort: 50
is_modifiable: true
- id: 465
code: needExternalAddressMaster
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: 'Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false`'
sort: 60
is_modifiable: true
- id: 466
code: ipSpaceNameMaster
data_type: string
required: false
descr: 'Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`'
sort: 70
is_modifiable: true
- id: 469
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Выбрать платформу из списка
sort: 5
- name: create_topic
id: 165
kind: subresource
action: create
subresource: topic
man: '# Инструкция по управлению топиками Apache Kafka через платформу<br/><br/>## 1. Общая информация<br/><br/>---<br/><br/>Топик — это основная сущность в Apache Kafka, предназначенная для приёма сообщений от продюсеров и передачи их консюмерам.<br/>Платформа позволяет создавать, удалять и изменять параметры топиков без прямого доступа к брокерам, обеспечивая удобное управление через интерфейс или API.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_topic** — Создание топика<br/>- **modify_topic** — Модификация топика<br/>- **delete_topic** — Удаление топика<br/><br/>---<br/><br/>## 2. Параметры создания топика<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового топика:<br/><br/>* **Имя топика**<br/> Название топика.<br/> Должно быть уникальным в пределах кластера.<br/> Пример: `orders-events`.<br/><br/>* **Партиции**<br/> Количество партиций топика.<br/> Рекомендуется выбирать с учётом уровня параллелизма потребителей и предполагаемой нагрузки.<br/> Пример: `6`. Здесь важно рассказать о том как происходит расчет оптимального количества<br/> Обратите внимание: уменьшить количество партиций после создания невозможно, поэтому лучше закладывать небольшой запас на будущий рост нагрузки.<br/><br/>* **Реплики**<br/> Количество реплик для каждой партиции.<br/> Обычно равно количеству доступных брокеров или меньше.<br/> Пример: `3`.<br/><br/><br/>---<br/><br/>## 4. Параметры модификации топика<br/><br/>Для уже существующих топиков можно изменять параметры. Все параметры являются опциональными:<br/><br/>* **Имя топика**<br/> Название топика.<br/> Пример: `orders-events`.<br/><br/>* **Партиции**<br/> Новое количество партиций.<br/> Пример: `12`.<br/><br/>* **Реплики**<br/> Новое количество реплик.<br/> Пример: `2`.<br/><br/>---<br/><br/>## 5. Рекомендации<br/><br/>* Планируйте количество партиций с запасом — уменьшение их числа невозможно.<br/>* Количество реплик должно соответствовать требуемому уровню отказоустойчивости, но не превышать количество брокеров.<br/>* Изменение параметров топика в рабочем окружении может временно влиять на производительность. Рекомендуется проводить крупные изменения в периоды минимальной нагрузки.<br/><br/>---'
params:
- id: 523
code: nameTopic
data_type: string
required: true
descr: 'Пример: `orders-events`'
sort: 10
- id: 524
code: partitions
data_type: integer &gt; 0
required: true
descr: Число партиций можно увеличить, но уменьшить их нельзя.
- id: 525
code: replicas
data_type: integer &gt; 0
required: true
descr: Количество реплик не может привышать количество реплик брокера
sort: 20
- name: create_user
id: 168
kind: subresource
action: create
subresource: user
man: '# Инструкция по управлению пользователями Apache Kafka.<br/><br/>---<br/><br/>## 1. Общая информация<br/><br/>Пользователи в Apache Kafka используются для аутентификации и авторизации при подключении к кластеру.<br/>Платформа позволяет создавать, удалять и изменять пользователей без прямого доступа к брокерам, а также настраивать права доступа к топикам и группам.<br/>Это обеспечивает централизованное и безопасное управление доступом к ресурсам Kafka.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры создания пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 3. Параметры модификации пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при модификации пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 4. Параметры удалении пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при удалении пользователя:<br/><br/>* **Имя пользователя**<br/> Имя удаляемого пользователя.<br/> Пример: `username-admin`<br/><br/>## 5. Выходные параметры<br/><br/>После успешного создания пользователя платформа возвращает параметры, необходимые для подключения:<br/><br/>* **ca.crt**<br/> Корневой сертификат (Certificate Authority), используемый для проверки подлинности сервера при TLS-подключении.<br/> Файл содержит публичный ключ удостоверяющего центра, которому доверяют брокеры и клиенты. Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **ca.p12**<br/> PKCS#12-хранилище с корневым сертификатом (Certificate Authority), используемое для проверки подлинности сервера при TLS-подключении.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **ca.password**<br/> Пароль для доступа к хранилищу `ca.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>* **user.crt**<br/> Клиентский сертификат, подтверждающий личность пользователя при подключении к Kafka.<br/> Используется совместно с приватным ключом `user.key` для аутентификации.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **user.key**<br/> Приватный ключ пользователя, применяемый для установления защищённого TLS-соединения и подтверждения подлинности.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.key<br/> ```<br/><br/>* **user.p12**<br/> PKCS#12-хранилище с клиентским сертификатом и приватным ключом, предназначенное для аутентификации пользователя в Kafka.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo &quot;&lt;содержание поля&gt;&quot; | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **user.password**<br/> Пароль для доступа к хранилищу `user.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>Эти параметры используются для настройки TLS-подключения.<br/><br/>---<br/><br/>## 6. Пример конфигурации клиента внутри кластера<br/><br/>Пример пода:<br/><br/>```yaml<br/>apiVersion: v1<br/>kind: Pod<br/>metadata:<br/> name: kafka-4<br/>spec:<br/> volumes:<br/> - name: work<br/> emptyDir: {}<br/> containers:<br/> - name: kcat<br/> image: quay.io/strimzi/kafka:latest-kafka-4.0.0<br/> command: [&quot;sleep&quot;, &quot;5600&quot;]<br/> volumeMounts:<br/> - name: work<br/> mountPath: /work<br/> restartPolicy: Never<br/>```<br/><br/>Создаём под и сохраняем сертификаты:<br/><br/>```bash<br/>kubectl cp user.p12 kafka-4:/work/<br/>kubectl cp ca.p12 kafka-4:/work/<br/>```<br/><br/>Создаём файлы конфигурации:<br/><br/>```bash<br/>cat &gt; /work/user-read.properties &lt;&lt;''EOF''<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>```bash<br/>cat &gt; /work/user-write.properties &lt;&lt;''EOF''<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user-write.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>Листинг доступных топиков:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-topics.sh \<br/> --bootstrap-server kafkak8s-bootstrap-external:9093 \<br/> --command-config /work/user-read.properties \<br/> --list<br/>```<br/><br/>Запись сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-producer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --producer.config /work/user-write.properties<br/>```<br/><br/>Чтение сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-consumer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --from-beginning \<br/> --group &lt;group&gt; \<br/> --consumer.config /work/user-read.properties \<br/> --max-messages 50<br/>```<br/><br/>---<br/><br/>## 7. Пример внешнего подключения с использованием **kcat**<br/><br/>**Листинг топиков**<br/><br/>```bash<br/>kcat -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -L \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Запись сообщения**<br/><br/>```bash<br/> echo &quot;hello from kcat&quot; | kcat -P \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-write.crt \<br/> -X ssl.key.location=./user-write.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Чтение сообщений**<br/><br/>```bash<br/>kcat -C \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -o beginning \<br/> -q \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>---<br/><br/><br/>## 9. Рекомендации<br/><br/>* Минимизируйте набор разрешённых операций для повышения безопасности.<br/>* Используйте отдельные учётные записи для продюсеров, консюмеров и системных сервисов.<br/>* Ограничивайте доступ по IP или подсетям с помощью параметра **Разрешённые хосты**.<br/>* После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам.<br/><br/>---'
params:
- id: 530
code: username
data_type: string
required: true
descr: 'Пример: `username-admin`'
- id: 531
code: nameTopic
data_type: string
required: true
descr: 'Пример: `orders-events`. Использовать маску нельзя(`orders*`), только полное название или `*`'
- id: 532
code: operations
data_type: string
required: true
descr: 'Пример: `Create, Describe, Read, Write`'
- id: 533
code: group
data_type: string
required: true
descr: 'Пример: `order-consumers` или `*`'
- id: 534
code: accessHosts
data_type: string
required: true
descr: 'Пример: `192.168.1.0/24` или `*`'
- name: delete
id: 149
kind: instance
action: delete
params: []
- name: delete_topic
id: 167
kind: subresource
action: delete
subresource: topic
params:
- id: 529
code: nameTopic
data_type: string
required: true
descr: Необходимо выбрать топик, который необходимо удалить
- name: delete_user
id: 170
kind: subresource
action: delete
subresource: user
man: '# Инструкция по управлению пользователями Apache Kafka.<br/><br/>---<br/><br/>## 1. Общая информация<br/><br/>Пользователи в Apache Kafka используются для аутентификации и авторизации при подключении к кластеру.<br/>Платформа позволяет создавать, удалять и изменять пользователей без прямого доступа к брокерам, а также настраивать права доступа к топикам и группам.<br/>Это обеспечивает централизованное и безопасное управление доступом к ресурсам Kafka.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры создания пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 3. Параметры модификации пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при модификации пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 4. Параметры удалении пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при удалении пользователя:<br/><br/>* **Имя пользователя**<br/> Имя удаляемого пользователя.<br/> Пример: `username-admin`<br/><br/>## 5. Выходные параметры<br/><br/>После успешного создания пользователя платформа возвращает параметры, необходимые для подключения:<br/><br/>* **ca.crt**<br/> Корневой сертификат (Certificate Authority), используемый для проверки подлинности сервера при TLS-подключении.<br/> Файл содержит публичный ключ удостоверяющего центра, которому доверяют брокеры и клиенты. Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **ca.p12**<br/> PKCS#12-хранилище с корневым сертификатом (Certificate Authority), используемое для проверки подлинности сервера при TLS-подключении.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **ca.password**<br/> Пароль для доступа к хранилищу `ca.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>* **user.crt**<br/> Клиентский сертификат, подтверждающий личность пользователя при подключении к Kafka.<br/> Используется совместно с приватным ключом `user.key` для аутентификации.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **user.key**<br/> Приватный ключ пользователя, применяемый для установления защищённого TLS-соединения и подтверждения подлинности.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.key<br/> ```<br/><br/>* **user.p12**<br/> PKCS#12-хранилище с клиентским сертификатом и приватным ключом, предназначенное для аутентификации пользователя в Kafka.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo &quot;&lt;содержание поля&gt;&quot; | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **user.password**<br/> Пароль для доступа к хранилищу `user.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>Эти параметры используются для настройки TLS-подключения.<br/><br/>---<br/><br/>## 6. Пример конфигурации клиента внутри кластера<br/><br/>Пример пода:<br/><br/>```yaml<br/>apiVersion: v1<br/>kind: Pod<br/>metadata:<br/> name: kafka-4<br/>spec:<br/> volumes:<br/> - name: work<br/> emptyDir: {}<br/> containers:<br/> - name: kcat<br/> image: quay.io/strimzi/kafka:latest-kafka-4.0.0<br/> command: [&quot;sleep&quot;, &quot;5600&quot;]<br/> volumeMounts:<br/> - name: work<br/> mountPath: /work<br/> restartPolicy: Never<br/>```<br/><br/>Создаём под и сохраняем сертификаты:<br/><br/>```bash<br/>kubectl cp user.p12 kafka-4:/work/<br/>kubectl cp ca.p12 kafka-4:/work/<br/>```<br/><br/>Создаём файлы конфигурации:<br/><br/>```bash<br/>cat &gt; /work/user-read.properties &lt;&lt;''EOF''<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>```bash<br/>cat &gt; /work/user-write.properties &lt;&lt;''EOF''<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user-write.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>Листинг доступных топиков:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-topics.sh \<br/> --bootstrap-server kafkak8s-bootstrap-external:9093 \<br/> --command-config /work/user-read.properties \<br/> --list<br/>```<br/><br/>Запись сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-producer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --producer.config /work/user-write.properties<br/>```<br/><br/>Чтение сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-consumer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --from-beginning \<br/> --group &lt;group&gt; \<br/> --consumer.config /work/user-read.properties \<br/> --max-messages 50<br/>```<br/><br/>---<br/><br/>## 7. Пример внешнего подключения с использованием **kcat**<br/><br/>**Листинг топиков**<br/><br/>```bash<br/>kcat -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -L \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Запись сообщения**<br/><br/>```bash<br/> echo &quot;hello from kcat&quot; | kcat -P \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-write.crt \<br/> -X ssl.key.location=./user-write.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Чтение сообщений**<br/><br/>```bash<br/>kcat -C \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -o beginning \<br/> -q \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>---<br/><br/><br/>## 9. Рекомендации<br/><br/>* Минимизируйте набор разрешённых операций для повышения безопасности.<br/>* Используйте отдельные учётные записи для продюсеров, консюмеров и системных сервисов.<br/>* Ограничивайте доступ по IP или подсетям с помощью параметра **Разрешённые хосты**.<br/>* После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам.<br/><br/>---'
params:
- id: 540
code: username
data_type: string
required: true
descr: 'Пример: `username-admin`'
- name: modify
id: 162
kind: instance
action: modify
params:
- id: 501
code: resourceInstances
data_type: integer &gt; 0
required: false
value_list:
- "1"
- "2"
- "3"
- "4"
- "5"
descr: 'Пример: `2`'
- id: 502
code: resourceMemory
data_type: integer &gt; 0
required: false
minvalue: 1000
descr: 'Пример: `2048`'
- id: 503
code: resourceCPU
required: false
minvalue: 1000
descr: 'Пример: `2000`'
- id: 504
code: resourceDisk
data_type: integer &gt; 0
required: false
descr: 'Пример: `20`'
- id: 505
code: needExternalAddressMaster
data_type: boolean
required: false
default: "false"
value_list:
- "false"
- "true"
descr: 'Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false`'
- id: 506
code: ipSpaceNameMaster
data_type: string
required: false
descr: 'Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`'
- name: modify_topic
id: 166
kind: subresource
action: modify
subresource: topic
man: '# Инструкция по управлению топиками Apache Kafka через платформу<br/><br/>## 1. Общая информация<br/><br/>---<br/><br/>Топик — это основная сущность в Apache Kafka, предназначенная для приёма сообщений от продюсеров и передачи их консюмерам.<br/>Платформа позволяет создавать, удалять и изменять параметры топиков без прямого доступа к брокерам, обеспечивая удобное управление через интерфейс или API.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_topic** — Создание топика<br/>- **modify_topic** — Модификация топика<br/>- **delete_topic** — Удаление топика<br/><br/>---<br/><br/>## 2. Параметры создания топика<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового топика:<br/><br/>* **Имя топика**<br/> Название топика.<br/> Должно быть уникальным в пределах кластера.<br/> Пример: `orders-events`.<br/><br/>* **Партиции**<br/> Количество партиций топика.<br/> Рекомендуется выбирать с учётом уровня параллелизма потребителей и предполагаемой нагрузки.<br/> Пример: `6`. Здесь важно рассказать о том как происходит расчет оптимального количества<br/> Обратите внимание: уменьшить количество партиций после создания невозможно, поэтому лучше закладывать небольшой запас на будущий рост нагрузки.<br/><br/>* **Реплики**<br/> Количество реплик для каждой партиции.<br/> Обычно равно количеству доступных брокеров или меньше.<br/> Пример: `3`.<br/><br/><br/>---<br/><br/>## 4. Параметры модификации топика<br/><br/>Для уже существующих топиков можно изменять параметры. Все параметры являются опциональными:<br/><br/>* **Имя топика**<br/> Название топика.<br/> Пример: `orders-events`.<br/><br/>* **Партиции**<br/> Новое количество партиций.<br/> Пример: `12`.<br/><br/>* **Реплики**<br/> Новое количество реплик.<br/> Пример: `2`.<br/><br/>---<br/><br/>## 5. Рекомендации<br/><br/>* Планируйте количество партиций с запасом — уменьшение их числа невозможно.<br/>* Количество реплик должно соответствовать требуемому уровню отказоустойчивости, но не превышать количество брокеров.<br/>* Изменение параметров топика в рабочем окружении может временно влиять на производительность. Рекомендуется проводить крупные изменения в периоды минимальной нагрузки.<br/><br/>---'
params:
- id: 526
code: nameTopic
data_type: string
required: true
descr: 'Пример: `orders-events`'
sort: 10
- id: 527
code: partitions
required: false
descr: Число партиций на кластер ≤ 100 × (число брокеров) × (фактор репликации). Пример `50`
sort: 30
- id: 528
code: replicas
required: false
descr: Количество партиций ≤ (число брокеров). Пример `2`
sort: 20
- name: modify_user
id: 169
kind: subresource
action: modify
subresource: user
man: '# Инструкция по управлению пользователями Apache Kafka.<br/><br/>---<br/><br/>## 1. Общая информация<br/><br/>Пользователи в Apache Kafka используются для аутентификации и авторизации при подключении к кластеру.<br/>Платформа позволяет создавать, удалять и изменять пользователей без прямого доступа к брокерам, а также настраивать права доступа к топикам и группам.<br/>Это обеспечивает централизованное и безопасное управление доступом к ресурсам Kafka.<br/><br/>---<br/><br/>## Доступные операции<br/><br/>- **create_user** — Создание пользователя<br/>- **modify_user** — Модификация пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>---<br/><br/>## 2. Параметры создания пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании нового пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 3. Параметры модификации пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при модификации пользователя:<br/><br/>* **Имя пользователя**<br/> Имя создаваемого пользователя. Используется для подключения к Kafka и настройки прав.<br/> Пример: `username-admin`<br/><br/>* **Топик**<br/> Название топика, к которому будут назначены права для данного пользователя.<br/> Пример: `orders-events`.<br/> Использовать маску нельзя (`orders*`), только полное название или `*`.<br/><br/>* **Операции**<br/> Список разрешённых операций на указанном топике.<br/> Пример: `Describe, Read, Write`<br/><br/>* **Группа**<br/> Имя группы, которой разрешён доступ. Используется при настройке консюмер-групп.<br/> Пример: `order-consumers`.<br/><br/>* **Разрешённые хосты**<br/> Список хостов или подсетей, с которых разрешено подключение пользователя.<br/> Пример: `192.168.1.0/24` или `*`.<br/><br/>---<br/><br/>## 4. Параметры удалении пользователя<br/><br/>Ниже перечислены параметры, которые необходимо указать при удалении пользователя:<br/><br/>* **Имя пользователя**<br/> Имя удаляемого пользователя.<br/> Пример: `username-admin`<br/><br/>## 5. Выходные параметры<br/><br/>После успешного создания пользователя платформа возвращает параметры, необходимые для подключения:<br/><br/>* **ca.crt**<br/> Корневой сертификат (Certificate Authority), используемый для проверки подлинности сервера при TLS-подключении.<br/> Файл содержит публичный ключ удостоверяющего центра, которому доверяют брокеры и клиенты. Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **ca.p12**<br/> PKCS#12-хранилище с корневым сертификатом (Certificate Authority), используемое для проверки подлинности сервера при TLS-подключении.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **ca.password**<br/> Пароль для доступа к хранилищу `ca.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>* **user.crt**<br/> Клиентский сертификат, подтверждающий личность пользователя при подключении к Kafka.<br/> Используется совместно с приватным ключом `user.key` для аутентификации.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.crt<br/> ```<br/><br/>* **user.key**<br/> Приватный ключ пользователя, применяемый для установления защищённого TLS-соединения и подтверждения подлинности.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo ''&lt;содержание поля&gt;'' | base64 -d &gt; &lt;название&gt;.key<br/> ```<br/><br/>* **user.p12**<br/> PKCS#12-хранилище с клиентским сертификатом и приватным ключом, предназначенное для аутентификации пользователя в Kafka.<br/> Выдаеться в формате base64 для получения файла сертификата использовать команду<br/> ```bash<br/> echo &quot;&lt;содержание поля&gt;&quot; | base64 -d &gt; &lt;название&gt;.p12<br/> ```<br/><br/>* **user.password**<br/> Пароль для доступа к хранилищу `user.p12`. Выдаеться в чистом виде. Раскодировать не нужно.<br/><br/>Эти параметры используются для настройки TLS-подключения.<br/><br/>---<br/><br/>## 6. Пример конфигурации клиента внутри кластера<br/><br/>Пример пода:<br/><br/>```yaml<br/>apiVersion: v1<br/>kind: Pod<br/>metadata:<br/> name: kafka-4<br/>spec:<br/> volumes:<br/> - name: work<br/> emptyDir: {}<br/> containers:<br/> - name: kcat<br/> image: quay.io/strimzi/kafka:latest-kafka-4.0.0<br/> command: [&quot;sleep&quot;, &quot;5600&quot;]<br/> volumeMounts:<br/> - name: work<br/> mountPath: /work<br/> restartPolicy: Never<br/>```<br/><br/>Создаём под и сохраняем сертификаты:<br/><br/>```bash<br/>kubectl cp user.p12 kafka-4:/work/<br/>kubectl cp ca.p12 kafka-4:/work/<br/>```<br/><br/>Создаём файлы конфигурации:<br/><br/>```bash<br/>cat &gt; /work/user-read.properties &lt;&lt;''EOF''<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>```bash<br/>cat &gt; /work/user-write.properties &lt;&lt;''EOF''<br/>security.protocol=SSL<br/>ssl.keystore.type=PKCS12<br/>ssl.keystore.location=/work/user-write.p12<br/>ssl.keystore.password=&lt;user.password&gt;<br/>ssl.truststore.type=PKCS12<br/>ssl.truststore.location=/work/ca.p12<br/>ssl.truststore.password=&lt;ca.password&gt;<br/>EOF<br/>```<br/><br/>Листинг доступных топиков:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-topics.sh \<br/> --bootstrap-server kafkak8s-bootstrap-external:9093 \<br/> --command-config /work/user-read.properties \<br/> --list<br/>```<br/><br/>Запись сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-producer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --producer.config /work/user-write.properties<br/>```<br/><br/>Чтение сообщений:<br/><br/>```bash<br/>/opt/kafka/bin/kafka-console-consumer.sh \<br/> --bootstrap-server &lt;адрес сервис брокера&gt;:9093 \<br/> --topic &lt;topic&gt; \<br/> --from-beginning \<br/> --group &lt;group&gt; \<br/> --consumer.config /work/user-read.properties \<br/> --max-messages 50<br/>```<br/><br/>---<br/><br/>## 7. Пример внешнего подключения с использованием **kcat**<br/><br/>**Листинг топиков**<br/><br/>```bash<br/>kcat -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -L \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Запись сообщения**<br/><br/>```bash<br/> echo &quot;hello from kcat&quot; | kcat -P \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-write.crt \<br/> -X ssl.key.location=./user-write.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>**Чтение сообщений**<br/><br/>```bash<br/>kcat -C \<br/> -b &lt;externalConnect.bootstrap.fqdn&gt;:9093 \<br/> -t write-test \<br/> -o beginning \<br/> -q \<br/> -X security.protocol=SSL \<br/> -X ssl.ca.location=./ca.crt \<br/> -X ssl.certificate.location=./user-read.crt \<br/> -X ssl.key.location=./user-read.key \<br/> -X ssl.endpoint.identification.algorithm=none<br/>```<br/><br/>---<br/><br/><br/>## 9. Рекомендации<br/><br/>* Минимизируйте набор разрешённых операций для повышения безопасности.<br/>* Используйте отдельные учётные записи для продюсеров, консюмеров и системных сервисов.<br/>* Ограничивайте доступ по IP или подсетям с помощью параметра **Разрешённые хосты**.<br/>* После изменения прав или групп пользователя рекомендуется проверить подключение и доступ к топикам.<br/><br/>---'
params:
- id: 535
code: nameTopic
data_type: string
required: false
descr: 'Пример: `orders-events`. Использовать маску нельзя(`orders*`), только полное название или `*`'
- id: 536
code: operations
data_type: string
required: false
descr: 'Пример: `Create, Describe, Read, Write`'
- id: 537
code: group
data_type: string
required: false
descr: 'Пример: `order-consumers` или `*`'
- id: 538
code: accessHosts
data_type: string
required: false
descr: 'Пример: `192.168.1.0/24` или `*`'
- id: 539
code: username
data_type: string
required: true
descr: 'Пример: `username-admin`'
sort: 10
- name: resume
id: 161
kind: instance
action: resume
params: []
- name: suspend
id: 160
kind: instance
action: suspend
params: []
@@ -0,0 +1,81 @@
name: nifi
service_id: 117
service_display_name: Nifi
service_short_name: nifi
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: 150
kind: instance
action: create
params:
- id: 471
code: kafkaUid
data_type: uuid
required: true
ref_svc_id: 116
descr: Выбрать кластер из списка
sort: 10
- id: 472
code: partitions
data_type: integer &gt; 0
required: true
descr: Число партиций на кластер ≤ 100 × (число брокеров) × (фактор репликации). Пример `50`
man: 'Обратите внимание: уменьшить количество партиций после создания невозможно, поэтому лучше закладывать небольшой запас на будущий рост нагрузки.'
sort: 30
is_modifiable: true
- id: 473
code: replicas
data_type: integer &gt; 0
required: true
descr: Количество партиций ≤ (число брокеров). Пример `2`
sort: 40
is_modifiable: true
- id: 474
code: nameTopic
data_type: string
required: true
descr: 'Пример: `orders-events`'
sort: 20
- name: delete
id: 151
kind: instance
action: delete
params: []
- name: modify
id: 154
kind: instance
action: modify
params:
- id: 477
code: partitions
data_type: integer &gt; 0
required: false
descr: Число партиций на кластер ≤ 100 × (число брокеров) × (фактор репликации). Пример `50`
man: 'Обратите внимание: уменьшить количество партиций после создания невозможно, поэтому лучше закладывать небольшой запас на будущий рост нагрузки.'
- id: 478
code: replicas
data_type: integer &gt; 0
required: false
descr: Количество партиций ≤ (число брокеров). Пример `2`
+104
View File
@@ -0,0 +1,104 @@
name: akhq
service_id: 119
service_display_name: Akhq
service_short_name: Akhq
service_man: '# Инструкция по развертыванию Apache Kafka через платформу<br/><br/>---<br/>## 1. Общая информация<br/>AKHQ — это веб-интерфейс для работы с кластерами Apache Kafka.<br/>Позволяет просматривать топики, consumer group''ы, сообщения, ACL, схему безопасности, состояние брокеров и метаданные.<br/>Поддерживает работу с несколькими кластерами Kafka одновременно, включая внутренние и внешние (TLS) подключения.<br/><br/>## Доступные операции<br/>- **create** — Создание ресурса AKHQ<br/>- **suspend** — Остановка ресурса<br/>- **resume** — Возобновление работы ресурса<br/>- **modify** — Модификация настроек<br/>- **delete** — Удаление ресурса<br/><br/>---<br/>## 2. Параметры развертывания кластера<br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса Kafka:<br/><br/>* **Кластер Kafka к которому нужно настроить подключение**<br/>Для использования AKHQ необходимо предварительно развернуть сервис Kafka. Пример: `kafka-external`.<br/><br/>* **Платформа для развертывания:**<br/>Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/>Количество узлов для работы Akhq. Пример `2`<br/><br/>* **Квота (megabyte) памяти пода:**<br/>Квота памяти пода в мегабайтах. Пример: `512`<br/><br/>* **Квота (millicore ) ядра пода:**<br/>Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`<br/><br/>* **Имя домена:**<br/>Dns Имя по которому будет происходить обращение к сервису. Указать необходимо уникальное имя до . ( то есть если необходимо получить dns ui) Пример: `kafka-external`<br/><br/>---<br/>## 4. Выходные параметры<br/>После успешного развертывания ресурса Kafka платформа возвращает ряд параметров.<br/>Ключевым из них является:<br/><br/>**connectionUrl**<br/>Это полное доменное имя (FQDN), по которому будет доступен интерфейс AKHQ. После развёртывания подождите несколько минут — UI станет доступен по HTTPS, как только все сервисы полностью запустятся.<br/><br/>**Учетные данные**<br/>Здесь представлены поля для ввода логина и пароля, с помощью которых вы сможете авторизоваться в сервисе.<br/><br/>---<br/>## 5. Дополнительная информация<br/>Учётные записи, созданные для работы с AKHQ, предоставляют доступ только для просмотра данных. Для управления Kafka, пожалуйста, используйте возможности личного кабинета.<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: 175
kind: instance
action: create
params:
- id: 550
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Выбрать платформу из списка
sort: 10
- id: 551
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "512"
minvalue: 512
descr: 'Пример: `1024`'
sort: 20
- id: 552
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "500"
minvalue: 500
descr: 'Пример: `1000`'
sort: 30
- id: 553
code: domain
data_type: string
required: true
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 40
- id: 554
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
minvalue: 1
sort: 11
- id: 555
code: kafkaUid
data_type: uuid
required: true
ref_svc_id: 116
descr: Выбрать кластер из списка
sort: 5
is_modifiable: true
- name: delete
id: 176
kind: instance
action: delete
params: []
- name: modify
id: 180
kind: instance
action: modify
params:
- id: 565
code: kafkaUid
data_type: uuid
required: true
ref_svc_id: 116
descr: Выбрать кластер из списка
- name: resume
id: 178
kind: instance
action: resume
params: []
- name: suspend
id: 177
kind: instance
action: suspend
params: []
@@ -0,0 +1,417 @@
name: clickhouse
service_id: 120
service_display_name: ClickHouse
service_short_name: clickhouse
service_man: '# Инструкция по управлению кластерами и пользователями ClickHouse<br/><br/>---<br/><br/>## Общая информация<br/><br/>ClickHouse — это колоночная система управления базами данных, предназначенная для обработки аналитических запросов в реальном времени. Платформа позволяет создавать, удалять, приостанавливать и возобновлять кластеры ClickHouse, а также управлять базами данных и пользователями.<br/><br/>Кластер создаётся через оператор Altinity (`https://github.com/Altinity/clickhouse-operator`) в ресурсной платформе типа `k8s`<br/><br/>Кластеры могут создаваться шардированными с произвольным количеством реплик. Для обеспечения отказоустойчивости и координации обязательно включение параметра `Создать ClickHouse-Keeper`.<br/><br/>Кластера создаются с обязательным бекапом. Для этого необходимо предварительно создать услугу `S3 Object Storage`.<br/>---<br/><br/>## Доступные операции<br/><br/>* **create** — Создание кластера<br/>* **delete** — Удаление кластера<br/>* **suspend** — Приостановка работы кластера<br/>* **resume** — Возобновление работы кластера<br/>* **create_database** — Создание базы данных<br/>* **delete_database** — Удаление базы данных<br/>* **create_user** — Создание пользователя и настройка прав доступа к базе данных<br/>* **delete_user** — Удаление пользователя<br/><br/>## Процесс создания и первого подключения<br/><br/>1. Выполнить операцию `create` - будет создан кластер<br/>2. Выполнить операцию `create_database` - будет создана база данных<br/>3. Выполнить операцию `create_user` - будет создан пользователь (выбрать доступ подключения к БД, созданной в п.2)<br/><br/>## Примеры подключения<br/><br/>### Подключение через HTTP-интерфейс<br/><br/>```bash<br/># Проверка доступности кластера<br/>curl &quot;http://&lt;username&gt;:&lt;password&gt;@&lt;host&gt;:8123/&quot; -d &quot;SELECT 1&quot;<br/><br/># Выполнение запроса<br/>curl &quot;http://&lt;username&gt;:&lt;password&gt;@&lt;host&gt;:8123/&quot; -d &quot;SHOW DATABASES&quot;<br/>```<br/><br/>## Простые кейсы<br/>*Создать БД и обычной таблицы*<br/>```clickhouse<br/>CREATE TABLE database.table<br/>(<br/> id UInt64,<br/> value String<br/>)<br/>ENGINE = MergeTree()<br/>ORDER BY id;<br/><br/>INSERT INTO database.table SELECT number, toString(number) FROM numbers(10000000);<br/><br/>SELECT count() FROM database.table;<br/>```<br/>Базы и таблицы не реплицируются без специального ключа (`ON CLUSTER ''clickhousek8s''`)<br/>В случае создания в стиле, описанным выше, необходимо будет выполнять действия на всех шардах/репликах<br/><br/><br/>*Создание БД и шардированной таблицы*<br/>```clickhouse<br/>CREATE TABLE database.localUsers<br/>(<br/> id UInt64,<br/> value String<br/>)<br/>ENGINE = MergeTree()<br/>ORDER BY id;<br/><br/>CREATE TABLE database.shardedTable<br/>AS localUsers<br/>ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', id);<br/><br/>INSERT INTO shardedTable SELECT number, toString(number) FROM numbers(10000000);<br/><br/>SELECT count() FROM shardedTable;<br/>```<br/>Важный момент - в данном примере таблицы придётся также выполнять на всех нодах ClickHouse<br/><br/>*Создание реплицируемой и шардированной таблицы*<br/>```clickhouse<br/>CREATE TABLE IF NOT EXISTS database.localUsers ON cluster ''clickhousek8s''<br/>(<br/> user_id UInt64,<br/> name String,<br/> email String<br/>)<br/>ENGINE = ReplicatedMergeTree(<br/> ''/clickhouse/tables/{shard}/localUsers'',<br/> ''{replica}''<br/>)<br/>ORDER BY user_id;<br/><br/>CREATE TABLE IF NOT EXISTS database.users ON cluster ''clickhousek8s''<br/>AS database.localUsers<br/>ENGINE = Distributed(''clickhousek8s'', ''database'', ''localUsers'', rand());<br/><br/>INSERT INTO database.users VALUES (1, ''Alice'', ''alice@example.com'');<br/>INSERT INTO database.users VALUES (2, ''Bob'', ''bob@example.com'');<br/>INSERT INTO database.users VALUES (3, ''Charlie'', ''charlie@example.com'');<br/>INSERT INTO database.users VALUES (4, ''David'', ''david@example.com'');<br/>INSERT INTO database.users VALUES (5, ''Gosha'', ''gosha@example.com'');<br/>INSERT INTO database.users VALUES (6, ''Eve'', ''eve@example.com'');<br/>INSERT INTO database.users VALUES (7, ''Frank'', ''frank@example.com'');<br/>INSERT INTO database.users VALUES (8, ''Grace'', ''grace@example.com'');<br/>INSERT INTO database.users VALUES (9, ''Hannah'', ''hannah@example.com'');<br/>INSERT INTO database.users VALUES (10, ''Ivan'', ''ivan@example.com'');<br/><br/>SELECT * FROM database.localUsers;<br/>SELECT * FROM database.users;<br/><br/>SELECT COUNT(*) AS total_users FROM database.users;<br/>SELECT COUNT(*) AS total_users_local FROM database.localUsers;<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: 181
kind: instance
action: create
man: Операция создания кластера ClickHouse<br/><br/>Для подключения к кластеру также необходимо создать базу данных через операцию `create_database` и создание пользователя через операцию `create_user`
params:
- id: 572
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Кластер Kubernetes в котором будет развёрнуто приложение
man: Выбрать платформу из списка<br/><br/>**Если список не отображается**<br/>обратитесь к сервис менеджеру с вопросом предоставления ресурсной платформы
sort: 10
- id: 573
code: s3Uid
data_type: uuid
required: true
ref_svc_id: 12
descr: Экземпляр (учетная запись) S3 для резервного копирования. Резервное копирование обязательно
man: '**Если список не отображается** <br/>перейдите в раздел `S3 Object Storage` <br/>операция `create`'
sort: 20
- id: 574
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: 'Пример: `3`'
man: '**Для синхронизации данных между репликами** необходимо включить `Создать ClickHouse-Keeper`'
sort: 30
is_modifiable: true
- id: 575
code: resourceInstancesShards
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: 'Пример: `1`'
man: '**Шард** - это часть данных, разделенная на разные узлы (серверы) для горизонтального масштабирования и обработки больших объемов информации. <br/>**Реплика** - это точная копия данных внутри одного шарда'
sort: 40
is_modifiable: true
- id: 576
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "1000"
maxvalue: 8000
minvalue: 1000
descr: 'Пример: `1000`'
man: Указывается в Milicores<br/>`1000` Mili == `1` Ядро
sort: 50
is_modifiable: true
- id: 577
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "1536"
maxvalue: 8192
minvalue: 1536
descr: 'Пример: `2048`'
man: Указывается в Megabytes
sort: 60
is_modifiable: true
- id: 578
code: appVersion
data_type: string
required: true
default: "25.10"
value_list:
- "25.10"
descr: Версия `clickhouse-server`
sort: 70
is_modifiable: true
- id: 579
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "10"
maxvalue: 999
minvalue: 1
descr: 'Пример: `100`'
man: Указывается в Gigabytes
sort: 80
is_modifiable: true
- id: 580
code: needExternalAddressMaster
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Позволяет подключиться извне к ClickHouse
man: Для выделения IP также необходимо указать имя Ip-space.<br/>Его можно получить из свойств ресурсной платформы
sort: 90
is_modifiable: true
- id: 581
code: ipSpaceNameMaster
data_type: string
required: false
descr: 'Пример: `internet-no-antiddos-v1`'
man: Имя ipSpace для публикации внешнего адреса<br/><br/>Не может быть пустым, если включен `Выделение белого ip для master ноды`
sort: 100
is_modifiable: true
- id: 582
code: needCreateKeeper
data_type: boolean
required: true
default: "true"
value_list:
- "false"
- "true"
descr: Необходим для кластеризации ClickHouse
man: Аналог `Zookeeper`, представленный от ClickHouse
sort: 200
is_modifiable: true
- id: 583
code: resourceCPUKeeper
data_type: integer &gt; 0
required: true
default: "50"
maxvalue: 8000
minvalue: 50
descr: 'Пример: `100`'
man: Указывается в Milicores<br/>`1000` Mili == `1` Ядро
sort: 210
is_modifiable: true
- id: 584
code: resourceMemoryKeeper
data_type: integer &gt; 0
required: true
default: "152"
maxvalue: 8192
minvalue: 152
descr: 'Пример: `256`'
man: Указывается в Megabytes
sort: 220
is_modifiable: true
- id: 585
code: resourceInstancesKeeper
data_type: integer &gt; 0
required: true
default: "1"
value_list:
- "1"
- "3"
maxvalue: 3
minvalue: 1
descr: 'Пример: `1`'
man: Для **теста** - 1 нода. <br/>Для **продуктива** - 3 ноды
sort: 230
is_modifiable: true
- id: 586
code: ext_BACKUP_SCHEDULE
data_type: string
required: true
default: 0 0 * * *
regex: ^((((\d+,)+\d+|(\d+(\/|-|#)\d+)|(\d+L?)|(\*(\/\d+)?)|(L(-\d+)?)|(\?)|([A-Z]{3}(-[A-Z]{3})?)) ?){5,7})|(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\d+(ns|us|µs|ms|s|m|h))+)$
descr: Принимает формат `CRON`
sort: 500
is_modifiable: true
- id: 587
code: ext_BACKUP_NUM_TO_RETAIN
data_type: integer &gt; 0
required: true
default: "7"
maxvalue: 60
minvalue: 3
descr: 'Пример: `7`'
man: Кол-во **полных** резервных копий<br/>Кол-во инкрементов - неограничено<br/><br/>Полная резервная копия выполняется раз в неделю<br/>*Если изначально полной резервной копии нет* выполняется полный бекап<br/>В остальные дни по крону выполняются **инкременты**
sort: 510
is_modifiable: true
- name: create_database
id: 186
kind: subresource
action: create
subresource: database
man: База данных создаётся на всех репликах кластера ClickHouse
params:
- id: 600
code: databaseName
data_type: string
required: true
regex: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
descr: 'Пример: `db01`'
sort: 10
- name: create_user
id: 185
kind: subresource
action: create
subresource: user
params:
- id: 596
code: username
data_type: string
required: true
regex: ^(?![0-9_])[a-zA-Z_][a-zA-Z0-9_]{0,62}$
maxlength: 62
minlength: 2
descr: 'Пример: `myusername`'
sort: 10
- id: 598
code: databaseName
data_type: json
required: true
default: '["database"]'
descr: Необходимо указать массив существующих баз
man: Если базы не существует - при выполнении операции вернётся ошибка
sort: 30
- id: 599
code: accessHosts
data_type: string
required: true
default: ::/0
descr: 'Пример: `::/0`'
sort: 40
- name: delete
id: 184
kind: instance
action: delete
man: Удаление возможно только после остановки сервиса через операцию `suspend`<br/>После выполнения операции необходимо выждать определенное кол-во времени
params: []
- name: delete_database
id: 188
kind: subresource
action: delete
subresource: database
man: Необратимое действие!!!<br/>Трижды подумай, заблокируй телефон тимлида и не выполняй это действие
params:
- id: 602
code: databaseName
data_type: string
required: true
descr: ВСЕ ДАННЫЕ ВНУТРИ БД БУДУТ УДАЛЕНЫ
- name: delete_user
id: 187
kind: subresource
action: delete
subresource: user
params:
- id: 601
code: username
required: true
descr: Имя пользователя, созданное через операцию `create_user`
- name: modify
id: 189
kind: instance
action: modify
params:
- id: 603
code: resourceInstances
data_type: integer &gt; 0
required: true
maxvalue: 7
minvalue: 1
descr: 'Пример: `3`'
man: '**Для синхронизации данных между репликами** необходимо включить `Создать ClickHouse-Keeper`'
sort: 10
- id: 604
code: resourceInstancesShards
data_type: integer &gt; 0
required: true
maxvalue: 7
minvalue: 1
descr: 'Пример: `1`'
man: '**Шард** - это часть данных, разделенная на разные узлы (серверы) для горизонтального масштабирования и обработки больших объемов информации. <br/>**Реплика** - это точная копия данных внутри одного шарда'
sort: 20
- id: 605
code: resourceCPU
data_type: integer &gt; 0
required: true
maxvalue: 8000
minvalue: 1000
descr: 'Пример: `1000`'
man: Указывается в Milicores<br/>`1000` Mili == `1` Ядро
sort: 30
- id: 606
code: resourceMemory
data_type: integer &gt; 0
required: true
maxvalue: 8192
minvalue: 1536
descr: 'Пример: `2048`'
man: Указывается в Megabytes
sort: 40
- id: 607
code: appVersion
data_type: string
required: true
default: "25.10"
descr: Версия `clickhouse-server`
sort: 50
- id: 608
code: resourceDisk
data_type: integer &gt; 0
required: true
maxvalue: 999
minvalue: 1
descr: 'Пример: `100`'
man: Указывается в Gigabytes<br/>**Нельзя** выставлять меньше текущего значения
sort: 60
- id: 609
code: needExternalAddressMaster
data_type: boolean
required: true
value_list:
- "false"
- "true"
descr: Позволяет подключиться извне к ClickHouse
man: Для выделения IP также необходимо указать имя Ip-space.<br/>Его можно получить из свойств ресурсной платформы
sort: 70
- id: 610
code: ipSpaceNameMaster
data_type: string
required: true
descr: 'Пример: `internet-no-antiddos-v1`'
man: Имя ipSpace для публикации внешнего адреса<br/><br/>Не может быть пустым, если включен `Выделение белого ip для master ноды`
sort: 80
- id: 611
code: needCreateKeeper
data_type: boolean
required: true
value_list:
- "false"
- "true"
descr: Необходим для кластеризации ClickHouse
man: Аналог `Zookeeper`, представленный от ClickHouse
sort: 200
- id: 612
code: resourceCPUKeeper
data_type: integer &gt; 0
required: true
maxvalue: 8000
minvalue: 50
descr: 'Пример: `100`'
man: Указывается в Milicores<br/>`1000` Mili == `1` Ядро
sort: 210
- id: 613
code: resourceMemoryKeeper
data_type: integer &gt; 0
required: true
maxvalue: 8192
minvalue: 152
descr: 'Пример: `256`'
man: Указывается в Megabytes
sort: 220
- id: 614
code: resourceInstancesKeeper
data_type: integer &gt; 0
required: true
value_list:
- "1"
- "3"
maxvalue: 3
minvalue: 1
descr: 'Пример: `1`'
man: Для **теста** - 1 нода. <br/>Для **продуктива** - 3 ноды
sort: 230
- id: 615
code: ext_BACKUP_SCHEDULE
data_type: string
required: true
default: 0 0 * * *
regex: ^((((\d+,)+\d+|(\d+(\/|-|#)\d+)|(\d+L?)|(\*(\/\d+)?)|(L(-\d+)?)|(\?)|([A-Z]{3}(-[A-Z]{3})?)) ?){5,7})|(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\d+(ns|us|µs|ms|s|m|h))+)$
descr: Принимает формат `CRON`
sort: 500
- id: 616
code: ext_BACKUP_NUM_TO_RETAIN
data_type: integer &gt; 0
required: true
maxvalue: 60
minvalue: 3
descr: 'Пример: `7`'
man: Кол-во **полных** резервных копий<br/>Кол-во инкрементов - неограничено<br/><br/>Полная резервная копия выполняется раз в неделю<br/>*Если изначально полной резервной копии нет* выполняется полный бекап<br/>В остальные дни по крону выполняются **инкременты**
sort: 510
- name: resume
id: 183
kind: instance
action: resume
params: []
- name: suspend
id: 182
kind: instance
action: suspend
man: Операция приводит к удалению всех подов<br/>Persistent Volume остаются нетронутыми
params: []
+121
View File
@@ -0,0 +1,121 @@
name: s3
service_id: 12
service_display_name: S3 Object Storage
service_short_name: s3
service_man: Руководство доступно по ссылке:<br/>https://docs.s3.msk-1.ngcloud.ru/s3/s3.description.html
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: 1
kind: instance
action: create
params:
- id: 163
code: resourceRealm
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: кластер S3 для подключения
sort: 20
- id: 320
code: displayName
data_type: string
required: true
descr: Человеко-читаемое имя (транслит из Elma) - передаётся имя клиента
sort: 10
- name: create_sub_user
id: 6
kind: subresource
action: create
subresource: sub_user
params:
- id: 60
code: subUserName
data_type: string
required: true
- id: 61
code: subUserAccess
data_type: string
required: true
value_list:
- read
- write
- readwrite
- full
- name: delete
id: 5
kind: instance
action: delete
params: []
- name: delete_sub_user
id: 7
kind: subresource
action: delete
subresource: sub_user
params:
- id: 63
code: subUserName
data_type: string
required: true
descr: subUserName. По идее услуга уже создана - должен передаваться из ЛК
- name: modify
id: 4
kind: instance
action: modify
man: При первичном вызове операции услуга Trial прекращает действие
params:
- id: 50
code: maxSizeGbPerUser
data_type: integer
required: false
maxvalue: 50000
minvalue: -1
descr: maxSizeGb. Передаём руками
man: maxSizeGb. Передаём руками
- id: 51
code: maxObjectsPerBucket
data_type: integer &gt; 0
required: false
maxvalue: 1e+07
minvalue: 1
descr: Квота на бакет. Кол-во объектов. Передаём руками
man: Квота на бакет. Кол-во объектов. Передаём руками
- id: 52
code: maxBucketsPerUser
data_type: integer &gt; 0
required: false
maxvalue: 1000
minvalue: 1
descr: Квота на пользователя. Количество бакетов пользователя. Передаём руками
man: Квота на пользователя. Количество бакетов пользователя. Передаём руками
- name: resume
id: 3
kind: instance
action: resume
params: []
- name: suspend
id: 2
kind: instance
action: suspend
params: []
@@ -0,0 +1,90 @@
name: s3bucket
service_id: 13
service_display_name: S3 бакет
service_short_name: s3bucket
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: 51
kind: instance
action: create
params:
- id: 124
code: s3UserUid
data_type: uuid
required: true
ref_svc_id: 12
descr: UID Корневой услуги S3. На основе него будет создан бакет.
- id: 125
code: bucketName
data_type: string
required: true
descr: Имя бакета s3
- id: 126
code: maxSize
required: true
default: "-1"
descr: Максимальный размер бакета s3. Если поставить -1, будет безлимит. Размер указывается в Bytes
man: Максимальный размер бакета s3. Если поставить 0, будет безлимит. Размер указывается в Bytes
- id: 127
code: readAll
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Публичный доступ на чтение позволяет любому пользователю интернета скачивать объекты из бакета.
- id: 128
code: listAll
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Публичный доступ к листингу позволяет любому пользователю интернета получить список объектов в бакете.
- id: 129
code: corsAll
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Публичный доступ к чтению настроек позволяет любому пользователю интернета читать конфигурации CORS
- id: 130
code: placement
data_type: string
required: true
default: HOT
value_list:
- HOT
- COLD
descr: Класс хранилища, который используется по умолчанию при загрузке объектов. Чем холоднее, тем дешевле место, но дороже обращения
- name: delete
id: 52
kind: instance
action: delete
params: []
@@ -0,0 +1,98 @@
name: valo_tenant
service_id: 149
service_display_name: VALO Cloud
service_short_name: valoTenant
service_man: '# Инструкция по развертыванию Тенант Valo через платформу<br/><br/>## 1. Общая информация<br/>Тенант Valo — логический изолированный экземпляр сервиса VALO Cloud, предоставляющий защищённое облачное хранилище, синхронизацию данных и доступ к документам с различных устройств. При создании тенант автоматически разворачивается в тестовом режиме сроком на 2 месяца. Перевод в промышленную эксплуатацию выполняется отдельной операцией.<br/><br/>### Доступные операции<br/><br/>* **create** — создание нового тенанта в тестовом режиме сроком на 2 месяца.<br/>* **modify** — изменение настроек тенанта, включая перевод из ТЕСТ в ПРОД.<br/>* **suspend** — выключение (приостановка работы) тенанта.<br/>* **resume** — включение ранее приостановленного тенанта.<br/>* **delete** — удаление тенанта; доступно только после выполнения операции suspend.<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Параметры входных данных операции **create**:<br/><br/>### Платформа для развертывания<br/>Описание: платформа, на которой будет создан тенант.<br/>Пример значения: `valo.ngcloud.ru`.<br/><br/>### DNS-Префикс<br/>Описание: Будет добавлено в зону valo.ngcloud.ru<br/>Пример значения: `mysimpledomain`.<br/><br/>### Параметры хранилища<br/>Описание: Сколько места будет выделено под использование в тенанте. Данные хранятся в S3. Размер указывается в Gigabytes<br/>Пример значения: `10`.<br/><br/>### Настройки тенанта<br/>Описание: Ряд конфигурации Valo-тенанта, такие как настройки пользователя и доступного функционала<br/>Пример значения: `опционально в рамках настройки`.<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/><br/>### Тестовое окружение<br/>Достаточно развернуть тенант в ТЕСТ. Срок предоставляется в 2 месяца. По истечению срока тенант автоматически переводится в `suspend` на стороне ресурсной платформы<br/><br/>### Промышленное окружение<br/>Для разблокировки используйте операцию `modify`<br/><br/>---<br/><br/>## 4. Выходные параметры<br/><br/>Услуга предоставляет следующие выходные параметры (формируются в процессе операций):<br/><br/>### Статус тенанта<br/>Отражает текущее состояние и параметры.<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/>Тенант всегда создаётся в режиме ТЕСТ и не может быть сразу переведён в ПРОД без операции modify.<br/>Удаление тенанта возможно только после его выключения с помощью операции suspend.<br/>Срок тестового режима составляет 2 месяца с момента создания.<br/>Операции suspend и resume используются для временного управления доступностью сервиса без потери конфигурации.<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: 202
kind: instance
action: create
params:
- id: 655
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
sort: 10
- id: 656
code: domain
data_type: string
required: true
regex: ^[a-z0-9](?:[a-z0-9-]{3,61}[a-z0-9])?$
maxlength: 61
minlength: 3
descr: Будет добавлено в зону valo.ngcloud.ru
sort: 20
- id: 657
code: valoOptions
data_type: map-fixed
required: true
default: '{}'
sort: 40
is_modifiable: true
- id: 658
code: s3Storage
data_type: integer &gt; 0
required: true
default: "10"
maxvalue: 999
minvalue: 1
descr: Параметр указывается в `Gb`
man: Данные хранятся в отдельном экземпляре S3
sort: 30
is_modifiable: true
- name: delete
id: 206
kind: instance
action: delete
params: []
- name: modify
id: 203
kind: instance
action: modify
params:
- id: 659
code: valoOptions
data_type: map-fixed
required: true
sort: 10
- id: 660
code: s3Storage
data_type: integer &gt; 0
required: true
descr: Параметр указывается в `Gb`
man: Данные хранятся в отдельном экземпляре S3
sort: 20
- name: resume
id: 205
kind: instance
action: resume
params: []
- name: suspend
id: 204
kind: instance
action: suspend
params: []
@@ -0,0 +1,227 @@
name: k8s_sthutrval_cluster
service_id: 150
service_display_name: Kubernetes кластер Штурвал
service_short_name: k8sSthutrvalCluster
service_man: Перед разворачиванием убедиться, что в облаке есть 2 свободных невыделенных IP в пуле
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: 108
kind: instance
action: create
params:
- id: 344
code: nsxtUid
data_type: uuid
required: true
ref_svc_id: 22
descr: InstanceUid nsxt. Nsxt должен быть создан
sort: 10
- id: 345
code: clusterName
data_type: string
required: true
default: example1
regex: (?=^.{1,63}$)^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
unique_scope: provider
descr: Наименование кластера Kubernetes. Имя будет использоваться в fqdn (svc.$CLUSTER_NAME)
sort: 25
- id: 346
code: controlPlaneSizingPolicy
data_type: string
required: true
descr: Настройка Control Plane. CPU (шт) / MEM (gb).<br/>Наверное, должна подтягиваться из свойств ресурсной платформы
sort: 30
depends_on: vdcUid
- id: 347
code: controlPlaneSizingDisk
data_type: integer &gt; 0
required: true
default: "30"
maxvalue: 999
minvalue: 20
descr: Настройка Control Plane. Disk (Gb)
sort: 40
is_modifiable: true
- id: 348
code: controlPlaneCount
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 9
minvalue: 1
sort: 50
is_modifiable: true
- id: 349
code: workersSizingPolicy
data_type: string
required: true
descr: Настройка workers. CPU (шт) / MEM (gb)
sort: 60
depends_on: vdcUid
- id: 350
code: workersSizingDisk
data_type: integer &gt; 0
required: true
default: "40"
maxvalue: 999
minvalue: 20
descr: Настройка workers. Disk (Gb)
sort: 70
is_modifiable: true
- id: 351
code: workersCount
data_type: integer &gt; 0
required: true
default: "2"
maxvalue: 99
minvalue: 1
descr: Настройка workers. Кол-во нод
sort: 80
is_modifiable: true
- id: 352
code: appVersion
data_type: string
required: true
default: 2.12.1
value_list:
- 2.12.1
- 2.11.0
descr: Версия Штурвал (не является версией Kubernetes)
sort: 90
is_modifiable: true
- id: 353
code: needExternalAddressAPI
data_type: boolean
required: true
default: "true"
value_list:
- "true"
descr: Выделяет внешний IP для доступа к kubernetes API. Пока нельзя выставить false
sort: 100
- id: 354
code: accessIpListAPI
data_type: json
required: true
default: '[]'
descr: Access IP List для подключения к Kubernetes API. Указывается массив. Если передан пустой массив, доступ выделяется всем
sort: 110
is_modifiable: true
- id: 355
code: needExternalAddressIngress
data_type: boolean
required: true
default: "true"
value_list:
- "true"
descr: Выделяет внешний IP для доступа к Ingress
sort: 120
- id: 356
code: accessIpListIngress
data_type: json
required: true
default: '[]'
descr: Access IP List для подключения к Ingress. Указывается массив. Если передан пустой массив, доступ выделяется всем
sort: 130
is_modifiable: true
- id: 747
code: vdcUid
data_type: uuid
required: true
ref_svc_id: 21
sort: 20
- name: delete
id: 109
kind: instance
action: delete
params: []
- name: modify
id: 110
kind: instance
action: modify
params:
- id: 362
code: controlPlaneCount
data_type: integer &gt; 0
required: false
maxvalue: 9
minvalue: 1
descr: Кол-во нод Control Plane
sort: 10
- id: 363
code: workersCount
data_type: integer &gt; 0
required: false
maxvalue: 99
minvalue: 1
descr: Кол-во нод Workers
sort: 20
- id: 364
code: accessIpListAPI
data_type: json
required: false
descr: Access IP List для подключения к Kubernetes API. Указывается массив. Если передан пустой массив, доступ выделяется всем
sort: 30
- id: 365
code: accessIpListIngress
data_type: json
required: false
descr: Access IP List для подключения к Ingress. Указывается массив. Если передан пустой массив, доступ выделяется всем
sort: 40
- id: 563
code: appVersion
data_type: string
required: false
value_list:
- 2.11.0
- 2.12.1
descr: Версия Штурвал (не является версией Kubernetes)<br/>Понижать версию нельзя<br/>Обновиться на несколько минорных нельзя<br/>Невозможно перепрыгнуть не с последней минорной на мажорную<br/>Можно обновиться на несколько патчей
- id: 637
code: controlPlaneSizingDisk
data_type: integer &gt; 0
required: true
- id: 638
code: workersSizingDisk
data_type: integer &gt; 0
required: true
- name: reconcile
id: 253
kind: action
action: reconcile
params: []
- name: resume
id: 174
kind: instance
action: resume
params: []
- name: suspend
id: 173
kind: instance
action: suspend
params: []
- name: update_secrets
id: 179
kind: action
action: update_secrets
params: []
@@ -0,0 +1,85 @@
name: vc_org
service_id: 19
service_display_name: Организация в Cloud Director
service_short_name: vcOrg
service_man: '# Инструкция по развертыванию Организация в Cloud Director через платформу<br/><br/>## 1. Общая информация<br/><br/>Сервис **Организация в Cloud Director** предназначен для управления изолированными организационными единицами (тенантами) внутри инфраструктуры Cloud Director. Он обеспечивает создание, модификацию и администрирование организаций, предоставление им облачных ресурсов, а также контроль уровня доступа. Сервис используется для организации рабочих окружений потребителей, управления жизненным циклом организаций и их сетевой инфраструктурой.<br/><br/>### Доступные операции<br/><br/>**create** — Создание новой организации с заданными характеристиками и типом доступа.<br/>**delete** — Удаление организации после перехода в состояние suspend; приводит к удалению всех связанных сущностей.<br/>**modify** — Изменение параметров внутри организации (на текущий момент поддерживается изменение ipSpaces).<br/>**suspend** — Заморозка организации, ограничение возможности изменения и добавления сущностей.<br/>**resume** — Разморозка организации, восстановление функций управления.<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Параметры входных данных операции **create**:<br/><br/>### Платформа для развертывания<br/>Описание: платформа, на которой будет создана организация.<br/>Пример значения: `ngcloud.ru`.<br/><br/>### Тип организации<br/>Описание: тип создаваемой организации.<br/>Варианты:<br/>- `iaas` — организация с прямым доступом к облаку и авторизацией через Keycloak.<br/>- `saas` — организация под управлением Nubes, без прямого доступа к облаку.<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/><br/>### Тестовое окружение<br/>- Тип организации: `iaas` для обеспечения полного доступа к облачным ресурсам и самостоятельного управления.<br/><br/>### Промышленное окружение<br/>- Тип организации: `saas` (упрощённая модель использования).<br/><br/>---<br/><br/>## 4. Выходные параметры<br/><br/>Услуга предоставляет следующие выходные параметры (формируются в процессе операций):<br/><br/>### Url организации<br/>Для быстрого доступа в тенант<br/><br/>### Статус организации<br/>Отражает текущее состояние и параметры.<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/><br/>- Для конфигурации внешних IP внутри организации необходимо предварительно создать:<br/>-- хотя бы один **Виртуальный датацентр (VDC)** привязанный к этой организации;<br/>-- хотя бы один **Сетевой шлюз периметра (Edge Gateway)**, привязанный к vdc выше.<br/>- Удаление организации возможно только через 14 дней после перевода в состояние suspend.<br/>- Удаление организации приводит к удалению всех связанных сущностей: VDC, Edge Gateway, пулов IP, сетей, ВМок и иных объектов.<br/>- Операция suspend не останавливает виртуальные машины, но блокирует любые изменения инфраструктуры внутри организации.<br/>- Для iaas-организаций доступ осуществляется через Keycloak.'
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: 136
kind: instance
action: create
man: '`IaaS` - Доступ в Keycloak предоставляется пользователю, который создаёт услугу<br/>`SaaS` - Без доступа к Keycloak'
params:
- id: 418
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Облако в котором будет развёрнут тенант
man: Выбрать платформу из списка<br/><br/>**Если список не отображается**<br/>обратитесь к сервис менеджеру с вопросом предоставления ресурсной платформы
sort: 10
- id: 556
code: organizationType
data_type: string
required: true
default: iaas
value_list:
- iaas
- saas
man: Доступ к организации предоставляется только при выборе `iaas`
sort: 20
- name: delete
id: 137
kind: instance
action: delete
man: 'Удалить возможно только через 14 дней после выполнения операции `suspend`<br/>**ОСТОРЖНО: Удаление приводит к полному удалению всех сущностей внутри этого тенанта**<br/><br/>Если существуют инстансы VDC, Edge, vApp, Vm или Kubernetes-кластер Штурвал, которые были созданы, из ЛК удалены не будут. Необходимо обратиться к `технической поддержке` для удаления инстансов'
params: []
- name: modify
id: 207
kind: instance
action: modify
man: Для возможности изменения параметров предварительно необходимо создать **Виртуальный датацентр (VDC)**, потом **Сетевой шлюз периметра (Edge Gateway)**<br/>Также при удалении ipSpaces убедитесь, что все внешние IP удалены. В случае если хоть одна привязка vIP есть, данный ipSpace удалён **не будет**
params:
- id: 662
code: vIPConfigure
data_type: array-map-fixed
required: true
sort: 10
- name: reconcile
id: 249
kind: action
action: reconcile
params: []
- name: resume
id: 144
kind: instance
action: resume
params: []
- name: suspend
id: 143
kind: instance
action: suspend
man: Операция **не останавливает ВМки** в облаке, но не даёт редактировать все сущности внутри тенанта
params: []
+203
View File
@@ -0,0 +1,203 @@
name: dummy
service_id: 1
service_display_name: Болванка
service_short_name: dummy
service_man: '## Болванка для тестов.<br/><br/>А это просто много букв, чтобы посмотреть, как ведет себя текст при переполнении контейнера. <br/><br/><br/>``` json<br/>{<br/> &quot;iamServiceUrl&quot;: &quot;https://auth-api-test.ngcloud.ru/api/v1/user&quot;,<br/> &quot;idpResponse&quot;: {<br/> &quot;prefix&quot;: {<br/> &quot;charset&quot;: &quot;&quot;,<br/> &quot;status_text&quot;: &quot;Request Time-out&quot;,<br/> &quot;text&quot;: true,<br/> &quot;errordetail&quot;: &quot;&quot;,<br/> &quot;filecontent&quot;: &quot;Connection Timeout&quot;,<br/> &quot;responseheader&quot;: {},<br/> &quot;header&quot;: &quot;&quot;,<br/> &quot;statuscode&quot;: &quot;408 Request Time-out&quot;,<br/> &quot;status_code&quot;: 408,<br/> &quot;mimetype&quot;: &quot;Unable to determine MIME type of file.&quot;<br/> }<br/> }<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: 18
kind: instance
action: create
man: Это мануал к операции CREATE сервиса Болванка
params:
- id: 198
code: durationMs
data_type: integer &gt;= 0
required: true
default: "0"
descr: перед завершением подождать (sleep) столько миллисекунд
man: перед завершением подождать (sleep) столько миллисекунд
sort: 20
is_modifiable: true
- id: 199
code: failAtStart
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: если true, завершить джоб, ничего не записывая в cmdb
man: '**Операция не будет завершена**<br/>Она будет в постоянном статусе PENDING, однако в Jenkins Job завершится с ошибкой'
sort: 30
is_modifiable: true
- id: 200
code: failInProgress
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: если true, корректно начать выполнение джоба, но в процессе завершить аварийно, ничего не записывая в cmdb
man: если true, корректно начать выполнение джоба, но в процессе завершить аварийно, ничего не записывая в cmdb
sort: 40
is_modifiable: true
- id: 201
code: whereFail
data_type: integer &gt; 0
required: false
default: "1"
value_list:
- "1"
- "2"
- "3"
descr: принимает 1,2,3. Работает с failInProgress. 1 - упасть в prepare. 2 - упасть внутри блока Data fill. 3 - упасть после vault write
man: принимает 1,2,3. Работает с failInProgress. 1 - упасть в prepare. 2 - упасть внутри блока Data fill. 3 - упасть после vault write
sort: 50
is_modifiable: true
- id: 242
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование ресурсной платформы для подключения
sort: 10
- id: 286
code: bodymessage
data_type: string
required: false
descr: Дата, уходящая в Vault
man: Дата, уходящая в Vault
sort: 60
is_modifiable: true
- id: 321
code: mapExample
data_type: map
required: false
is_modifiable: true
- id: 322
code: jsonExample
data_type: json
required: false
descr: Для тестирования интерфейса
man: Для тестирования интерфейса. Сюда можно писать корректный json
is_modifiable: true
- id: 396
code: nestedRefExample
required: false
- id: 447
code: yamlExample
data_type: yaml
required: false
- id: 647
code: mapFixed
data_type: map-fixed
required: false
descr: Новый тип поля
- id: 654
code: arrayMapFixedExample
data_type: array-map-fixed
required: false
descr: Array of map-fixed
- name: delete
id: 71
kind: instance
action: delete
params: []
- name: modify
id: 92
kind: instance
action: modify
params:
- id: 287
code: durationMs
data_type: integer &gt;= 0
required: true
default: "0"
descr: перед завершением подождать (sleep) столько миллисекунд
man: перед завершением подождать (sleep) столько миллисекунд
sort: 10
- id: 288
code: failAtStart
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: если true, завершить джоб, ничего не записывая в cmdb
sort: 20
- id: 289
code: failInProgress
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: если true, корректно начать выполнение джоба, но в процессе завершить аварийно, ничего не записывая в cmdb
sort: 30
- id: 290
code: whereFail
data_type: integer &gt; 0
required: false
value_list:
- "1"
- "2"
- "3"
descr: принимает 1,2,3. Работает с failInProgress. 1 - упасть в prepare. 2 - упасть внутри блока Data fill. 3 - упасть после vault write
man: принимает 1,2,3. Работает с failInProgress. 1 - упасть в prepare. 2 - упасть внутри блока Data fill. 3 - упасть после vault write
sort: 40
- id: 291
code: bodymessage
required: false
descr: Дата, уходящая в Vault
man: Дата, уходящая в Vault
sort: 50
- id: 373
code: mapExample
data_type: map
required: false
default: '{}'
- id: 374
code: jsonExample
required: false
- name: redeploy
id: 240
kind: action
action: redeploy
params: []
- name: resume
id: 94
kind: instance
action: resume
params: []
- name: suspend
id: 93
kind: instance
action: suspend
params: []
@@ -0,0 +1,57 @@
name: vc_org_saas
service_id: 20
service_display_name: Организация [DEPRECATED]
service_short_name: vcOrgSaas
service_man: 'Верхнеуровневая сущность создаваемая для Заказчика.<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: 8
kind: instance
action: create
man: Создание организации в Cloud Director<br/>Id в клауд директоре создаётся на основе contragentCode
params:
- id: 185
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование ресурсной платформы
sort: 30
- name: delete
id: 23
kind: instance
action: delete
params: []
- name: resume
id: 119
kind: instance
action: resume
params: []
- name: suspend
id: 118
kind: instance
action: suspend
params: []
@@ -0,0 +1,153 @@
name: vc_vdc
service_id: 21
service_display_name: Виртуальный датацентр (vDC)
service_short_name: vc_vdc
service_man: '# Инструкция по развертыванию Виртуальный датацентр (vDC) через платформу<br/><br/>## 1. Общая информация<br/><br/>**Виртуальный датацентр (vDC)** — это логическая изолированная среда в VMware Cloud Director, предназначенная для размещения и управления виртуальными машинами, сетевой инфраструктурой и ресурсами хранения. Сервис обеспечивает выделение вычислительных ресурсов под конкретную организацию и предоставляет гибкие параметры масштабирования, контроля потребления и разделения ресурсов.<br/><br/>### Доступные операции<br/><br/>**create** — Создание виртуального датацентра (vDC) с заданными параметрами CPU, RAM, Storage и сетевой конфигурацией.<br/>**delete** — Удаление vDC. Требуется предварительный перевод vDC в состояние *suspend*. Полное удаление возможно через 14 дней.<br/>**modify** — Внесение изменений в параметры ресурсов (CPU/RAM/Storage), выделенных для vDC.<br/>**suspend** — Заморозка vDC. Новые ресурсы или изменения внутри vDC становятся невозможными, работа ВМ не останавливается.<br/>**resume** — Разморозка vDC. Восстановление возможности управления сущностями внутри vDC.<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Ниже перечислены входные параметры операции **create**.<br/><br/>### UUID Организации<br/>Уникальный идентификатор организации в Cloud Director. Перед созданием vDC требуется предварительное создание услугу `Организация в Cloud Director`.<br/><br/>### Provider VDC в Cloud Director<br/>Свойство ресурсной платформы, определяющее, какой пул физических ресурсов будет использоваться.<br/><br/>### Network Pool в Cloud Director<br/>Определяет возможности сетевой конфигурации, включая создание Edge Gateway и выход во внешние сети.<br/><br/>### Гарантированная доля ЯДЕР<br/>Гарантированный процент вычислительных ресурсов (CPU), закрепленный за vDC. Значение устанавливается разово при создании.<br/><br/>### Гарантированная доля ОЗУ<br/>Гарантированный процент оперативной памяти, закрепленный за vDC. Также задаётся один раз при создании.<br/><br/>### Сколько аллоцировать на VDC ЯДЕР<br/>Количество виртуальных ядер, выделяемых в рамках vDC.<br/><br/>### Сколько аллоцировать на VDC ОЗУ<br/>Количество оперативной памяти в GB, выделяемой для vDC.<br/><br/>### Конфигурация Storage<br/>Набор дисковых политик и их объёмов, выделяемых для vDC. Указывается имя политики и требуемый размер (GB).<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/><br/>### Тестовое окружение<br/><br/>- Количество ядер CPU: 1020<br/>- Аллоцируемая RAM: 1664 GB<br/>- Гарантированная доля CPU: 20%<br/>- Гарантированная доля RAM: 20%<br/>- Storage:<br/>- Политика `SATA`<br/>- Объём: 100300 GB<br/><br/>### Промышленное окружение<br/><br/>- Количество ядер CPU: 16128<br/>- Аллоцируемая RAM: 64512 GB<br/>- Гарантированная доля CPU: 50%<br/>- Гарантированная доля RAM: 50%<br/>- Storage:<br/>- Политики уровня `SSD`<br/>- Объём: 110 TB, выбор несколько политик под разные нагрузки<br/><br/>---<br/><br/>## 4. Выходные параметры<br/><br/>Выходные параметры формируются операцией **create** (и используются другими операциями):<br/><br/>### Имя vDC<br/>Уникальный идентификатор созданного виртуального датацентра. Используется в дальнейших операциях (modify, suspend, delete).<br/><br/>### Параметры выделенных ресурсов<br/>Подтверждение итогового объёма CPU/RAM/Storage, выделенных vDC. Используются для учёта и контроля потребления.<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/><br/>- Перед созданием vDC необходимо обеспечить наличие корректно созданной организации и доступных пула ресурсов ресурсной платформы.<br/>- Гарантированная доля CPU и RAM задаётся **однократно при создании vDC**. После развертывания изменить эти значения невозможно; для изменения необходимо пересоздать vDC.<br/>- Удаление vDC возможно только через **14 дней после перевода в состояние *suspend***. Удаление очищает все связанные сущности (ВМ, сети, каталоги), поэтому необходимо убедиться, что данные перенесены.<br/>- Платформа Cloud Director использует концепцию изолированных организационных ресурсов, поэтому корректная настройка Provider VDC и Network Pool является обязательной при создании vDC.<br/>- При изменении параметров (modify) изменяются только показатели CPU, RAM и Storage. Сетевые параметры и гарантированные доли остаются неизменными.<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: 9
kind: instance
action: create
params:
- id: 30
code: organizationUid
data_type: uuid
required: true
ref_svc_id: 19
man: Для создания VDC предварительно необходимо создать организацию через услугу `Организация в Cloud Director`
sort: 10
- id: 335
code: providerVdc
data_type: string
required: true
man: Приписка `2.8` - Скорость vCPU - 2800MHz<br/>И так далее...<br/>
sort: 30
depends_on: organizationUid,networkProvider
- id: 361
code: storageConfig
data_type: array-map-fixed
required: true
man: Первая политика в списке указывается как &quot;По умолчанию&quot;
sort: 100
is_modifiable: true
- id: 397
code: cpuGuaranteed
data_type: integer &gt; 0
required: true
default: "20"
value_list:
- "20"
- "50"
- "80"
descr: '% резервирования'
man: Свойство нельзя изменить после создания
sort: 60
- id: 398
code: memGuaranteed
data_type: integer &gt; 0
required: true
default: "20"
value_list:
- "20"
- "50"
- "80"
descr: '% резервирования'
man: После создания нельзя изменить
sort: 70
- id: 557
code: cpuAllocated
data_type: integer &gt; 0
required: true
default: "10"
maxvalue: 200
minvalue: 1
descr: шт
sort: 80
is_modifiable: true
- id: 558
code: memAllocated
data_type: integer &gt; 0
required: true
default: "20"
maxvalue: 4096
minvalue: 1
descr: gb
sort: 90
is_modifiable: true
- id: 746
code: networkProvider
data_type: string
required: true
sort: 20
depends_on: organizationUid
- name: delete
id: 24
kind: instance
action: delete
man: 'Удалить возможно только через 14 дней после выполнения операции `suspend`<br/>**ОСТОРЖНО: Удаление приводит к полному удалению всех сущностей внутри этого VDC**<br/><br/>Если существуют инстансы Edge, vApp, Vm или Kubernetes-кластер Штурвал, которые были созданы, из ЛК удалены не будут. Необходимо обратиться к `технической поддержке` для удаления инстансов'
params: []
- name: modify
id: 112
kind: instance
action: modify
params:
- id: 560
code: cpuAllocated
data_type: integer &gt; 0
required: true
maxvalue: 999
minvalue: 1
descr: шт
sort: 10
- id: 561
code: memAllocated
data_type: integer &gt; 0
required: true
maxvalue: 1024
minvalue: 1
descr: gb
sort: 20
- id: 562
code: storageConfig
data_type: array-map-fixed
required: true
man: Первая политика в списке указывается как &quot;По умолчанию&quot;
sort: 30
- name: reconcile
id: 250
kind: action
action: reconcile
params: []
- name: resume
id: 172
kind: instance
action: resume
params: []
- name: suspend
id: 171
kind: instance
action: suspend
man: Операция **не останавливает ВМки** в облаке, но не даёт редактировать все сущности внутри VDC
params: []
@@ -0,0 +1,136 @@
name: vc_nsxt
service_id: 22
service_display_name: Сетевой шлюз периметра (Edge)
service_short_name: vc_nsxt
service_man: '# Инструкция по развертыванию Сетевой шлюз периметра (Edge) через платформу<br/><br/>## 1. Общая информация<br/><br/>Сервис **Сетевой шлюз периметра (Edge)** предназначен для создания периметрового сетевого шлюза в рамках одного виртуального датацентра (vDC) или группы виртуальных датацентров (groupvDC). <br/>При создании автоматически разворачивается routed-сеть с адресным пространством `10.10.102.0/24`. <br/>Сервис обеспечивает сетевую изоляцию, маршрутизацию, а также может включать функциональность балансировщика нагрузки AVI (ALB) для последующей интеграции, включая поддержку кластеров Штурвал.<br/><br/>### Доступные операции<br/><br/>**create** — Создание нового Edge с привязкой к vDC или groupvDC и развёртыванием routed-сети. <br/>**delete** — Удаление ранее созданного Edge. Недоступно при наличии зависимых услуг (vApp, VM, Кластер Штурвал). <br/>**modify** — Изменение параметров и сетевых настроек существующего Edge.<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Ниже приведены параметры операции **create**.<br/><br/>### Тип родительской услуги<br/>Определяет контекст размещения Edge. <br/>Допустимые значения: `vdc`, `groupvdc`. <br/>Использование:<br/>- При выборе `vdc` обязателен параметр **UUID VDC**.<br/>- При выборе `groupvdc` обязателен параметр **UUID Группы VDC**.<br/><br/>### UUID VDC<br/>Идентификатор виртуального датацентра. <br/>Необходимо предварительно создать vDC через услугу «Виртуальный датацентр (vDC)». <br/>Указывается только при выборе родительского типа `vdc`.<br/><br/>### UUID Группы VDC<br/>Идентификатор группы виртуальных датацентров. <br/>Создаётся через услугу «Группа виртуальных датацентров (groupvDC)». <br/>Используется при выборе родительского типа `groupvdc`.<br/><br/>### Включить ALB<br/>Флаг активации AVI Load Balancer в Cloud Director. <br/>Пример значения: `true`/`false`. <br/>Нужен для развёртывания кластера Штурвал и возможности создания Virtual Services.<br/><br/>### Наименование segroup<br/>Имя сервиса групп (segroup) на уровне ресурсной платформы. <br/>Обязательно при включённом ALB. <br/>Определяет группу, в которой будут выделяться пулы AVI для Virtual Services.<br/><br/>### virtualServicesCount<br/>Количество резервируемых виртуальных сервисов (Virtual Services) на AVI. <br/>Типичное значение: 1–10 в зависимости от нагрузки.<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/><br/>### Тестовое окружение (Test)<br/><br/>- Тип родительской услуги: `vdc` <br/>- virtualServicesCount: 12 <br/>- ALB: выключен по умолчанию (включать только при необходимости тестирования Штурвала) <br/>- segroup: задаётся только при включённом ALB <br/>- VDC гарантии CPU/RAM: минимальные (поскольку изменить их после создания нельзя)<br/><br/>### Промышленное окружение (Production)<br/><br/>- Тип родительской услуги: `groupvdc` при работе с распределёнными нагрузками или `vdc` для локализованных проектов <br/>- virtualServicesCount: 310, исходя из предполагаемого количества публикаций <br/>- ALB: включён, если требуется высокая доступность сервисов или используется кластер Штурвал <br/>- segroup: рекомендуется использовать выделенную группу под проект <br/>- VDC гарантии CPU/RAM: повышенные, с учётом того, что изменить их после создания невозможно без пересоздания vDC<br/><br/>---<br/><br/>## 4. Выходные параметры<br/><br/>### Имя Edge<br/>Уникальное название созданного сетевого шлюза, используется для ссылок и дальнейших операций.<br/><br/>### Имя routed-сети<br/>Автоматически созданная routed-сеть с подсетью `10.10.102.0/24`, используется для подключения ресурсов.<br/><br/>### Параметры Edge<br/>Набор параметров, указанных пользователем при создании: тип услуги, ALB, segroup, virtualServicesCount и др. <br/>Используются в операциях modify и для анализа состояния сервиса.<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/><br/>- В рамках сервиса **один раз при создании задаётся гарантированная доля CPU/RAM vDC**. Изменить её невозможно — требуется пересоздание vDC. <br/>- Удаление Edge недоступно при наличии зависимых ресурсов (vApp, VM, кластер Штурвал). <br/>- При использовании ALB необходимо корректно указывать segroup, чтобы обеспечить корректное выделение пулов AVI. <br/>- При выборе режима `groupvdc` следует учитывать распределение нагрузки между несколькими vDC. <br/>- SNAT для всех ресурсов внутри Edge можно активировать через операцию modify (параметры выделения VIP и ipSpace).<br/><br/>'
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 &gt; 0
required: false
default: "1"
maxvalue: 4
minvalue: 1
descr: Кол-во виртуальных сервисов, которые выделяются на AVI
man: Во избежании коллапса пока выделяется до 4<br/>Необходимо указывать, если включён параметр `Включить 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<br/>При выборе 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
- name: delete
id: 25
kind: instance
action: delete
man: Невозможно удалить если routed-сеть в Edge связана с:<br/>- vApp<br/>- VM<br/>- Kubernetes-кластер Штурвал<br/><br/>Запустить операцию возможно, но будет ошибка
params: []
- name: modify
id: 111
kind: instance
action: modify
man: Для создания SNAT Правила убедитесь, что в организации есть свободные IP<br/>Редактировать кол-во свободных IP можно в услуге `Организация в Cloud Director` -&gt; `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 &gt; 0
required: false
maxvalue: 4
minvalue: 1
descr: Кол-во виртуальных сервисов, которые выделяются на AVI
man: Во избежании коллапса пока выделяется до 4<br/>Необходимо указывать, если включён параметр `Включить ALB`
sort: 30
- id: 371
code: needExternalAddressSNAT
data_type: boolean
required: false
value_list:
- "false"
- "true"
descr: Создать правило SNAT на подсеть `10.10.102.0/24`
man: Параметр `ip Space для VIP` станет обязательным, если указан `true`
sort: 40
- id: 372
code: ipSpaceName
data_type: string
required: false
descr: Имя ip Space для внешнего IP<br/><br/>getKeyListFromStruct(getInstanceState(getValueFromStruct(getInstanceState(getValueFromStruct(getInstanceState(), &quot;params.vdcUid&quot;)), &quot;params.organizationUid&quot;)), &quot;params.vIPConfigure&quot;)
man: Необходимо указывать, если включён параметр `Выделить VIP для SNAT`
sort: 50
- name: reconcile
id: 252
kind: action
action: reconcile
params: []
+153
View File
@@ -0,0 +1,153 @@
name: vc_vm
service_id: 23
service_display_name: VM в Cloud Director (старый формат) (vc_vm)
service_short_name: vc_vm
service_man: Виртуальная машина без каких-либо особенностей. <br/>Данная услуга запускает vc_ip для выдачи белого адреса и подключения к ВМ
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: 26
kind: instance
action: create
params:
- id: 33
code: vappUid
data_type: uuid
required: true
ref_svc_id: 26
descr: InstanceUid vApp. vApp должен быть создан
man: InstanceUid vApp. vApp должен быть создан
sort: 10
- id: 35
code: vmName
data_type: string
required: true
default: vm0001
regex: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
descr: Имя ВМ. Не поддерживает спец-символы
man: Имя ВМ. Не поддерживает спец-символы
sort: 20
- id: 36
code: vmCpu
data_type: string
required: true
default: "2"
descr: CPU
man: CPU
sort: 30
is_modifiable: true
- id: 37
code: vmRam
data_type: string
required: true
default: "2"
descr: RAM (GB)
man: RAM (GB)
sort: 40
is_modifiable: true
- id: 38
code: vmDisksize
data_type: string
required: true
default: "10"
descr: Размер диска под сервис (GB)
man: Размер диска под сервис (GB)
sort: 50
is_modifiable: true
- id: 176
code: templateName
data_type: string
required: true
default: RockyLinux_9-16G
value_list:
- RockyLinux_9-16G
- OracleLinux_9-16G
- Ubuntu_24-20G
- Ubuntu_22-20G
descr: ОС
man: ОС
sort: 60
- id: 177
code: accessIpList
data_type: string
required: true
default: 79.111.119.78/32 185.247.187.1/32
descr: Вставить содержимое из 'curl ifconfig.io'<br/>IP адреса в CIDR формате через пробел для настройки аксес листов
man: IP адреса в CIDR формате через пробел для настройки аксес листов
sort: 70
is_modifiable: true
- id: 406
code: ipSpaceName
data_type: string
required: true
descr: Брать из свойств ресурсной платформы<br/>.vcd.ipSpace<br/><br/>Имя IP-space для выделения внешнего IP (IP выделяется обязательно)
- name: delete
id: 29
kind: instance
action: delete
params: []
- name: modify
id: 68
kind: instance
action: modify
man: Операция автоматически останавливает ВМ.
params:
- id: 186
code: vmCpu
data_type: integer &gt; 0
required: false
descr: CPU
man: CPU
sort: 10
- id: 187
code: vmRam
data_type: integer &gt; 0
required: false
descr: RAM
man: RAM
sort: 20
- id: 188
code: vmDisksize
data_type: integer &gt; 0
required: false
descr: Размер диска под сервис (GB)
man: Размер диска под сервис (GB)
sort: 30
- id: 189
code: accessIpList
data_type: string
required: false
descr: IP адреса в CIDR формате через пробел для настройки аксес листов
man: IP адреса в CIDR формате через пробел для настройки аксес листов
sort: 40
- name: resume
id: 28
kind: instance
action: resume
params: []
- name: suspend
id: 27
kind: instance
action: suspend
params: []
@@ -0,0 +1,162 @@
name: vcexternalip
service_id: 25
service_display_name: Публичные IP адреса
service_short_name: vcexternalip
service_man: '**Обычно эта услуга разворачивается автоматически при развёртывании более сложных услуг**<br/>Вручную создавать можно, однако услуга требует много параметров, о которых можно просто не знать<br/><br/>Резервировать публичные IP адреса можно только после создания NGcloud Organization, NGcloud Виртуальный датацентр, NGcloud Каталог, Сетевой шлюз периметра.<br/>Вы можете назначить IP адрес для существующего экземпляра сервиса.'
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: 56
kind: instance
action: create
params:
- id: 140
code: serviceUid
data_type: string
required: true
sort: 20
is_modifiable: true
- id: 141
code: dnatCreate
data_type: boolean
required: true
default: "true"
descr: Необходимо создать DNAT-правило.
sort: 40
is_modifiable: true
- id: 142
code: internalPortAccess
data_type: string
required: true
default: "5432"
descr: Порт для связки ната с адресом. Несколько значений можно передавать через пробел. Если передать all, то dnat будет на все порты. Требует dnatCreate=true<br/>
sort: 60
is_modifiable: true
- id: 143
code: snatCreate
data_type: boolean
required: false
descr: Необходимо создать SNAT-правило.<br/>
sort: 50
is_modifiable: true
- id: 144
code: internalAddrAccess
data_type: string
required: true
descr: Внутренний адрес для связки ната. Требует dnatCreate=true или snatCreate=true
sort: 70
is_modifiable: true
- id: 324
code: fromServiceNamespace
data_type: string
required: true
descr: Namespace составной услуги (для отображения правил FW)
sort: 80
- id: 325
code: fromServiceCloudEdgeName
data_type: string
required: false
descr: Edge составной услуги (указывать, если resourceRealm связан с CloudDirector)
sort: 90
- id: 326
code: fromServiceCloudVdcName
required: false
descr: Vdc составной услуги (указывать, если resourceRealm связан с CloudDirector)
sort: 100
- id: 327
code: fromServiceCloudOrgName
data_type: string
required: false
descr: Org составной услуги (указывать, если resourceRealm связан с CloudDirector)
sort: 110
- id: 328
code: fromServiceCloudVmwareUrl
data_type: string
required: false
descr: Api-Url составной услуги (указывать, если resourceRealm связан с CloudDirector)
sort: 120
- id: 336
code: ipSpaceName
data_type: string
required: true
descr: Тип ip Space (internet-ipv4-v1 / internet-antiddos-v1 / internet-no-antiddos-v1)
sort: 30
is_modifiable: true
- id: 488
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
sort: 200
- id: 624
code: fromServiceCloudEdgeScope
data_type: string
required: false
sort: 130
- id: 626
code: fromServiceVdcGroupName
data_type: string
required: false
sort: 140
- name: delete
id: 57
kind: instance
action: delete
params: []
- name: modify
id: 197
kind: instance
action: modify
params:
- id: 627
code: serviceUid
data_type: string
required: true
sort: 20
- id: 628
code: ipSpaceName
data_type: string
required: true
sort: 30
- id: 629
code: dnatCreate
data_type: boolean
required: true
sort: 40
- id: 630
code: snatCreate
data_type: boolean
required: true
sort: 50
- id: 631
code: internalPortAccess
data_type: string
required: true
sort: 60
- id: 632
code: internalAddrAccess
data_type: string
required: true
sort: 70
@@ -0,0 +1,73 @@
name: vapp
service_id: 26
service_display_name: Виртуальный каталог ВМ (vApp)
service_short_name: vapp
service_man: '# Инструкция по развертыванию Виртуальный каталог ВМ (vApp) через платформу<br/><br/>## 1. Общая информация<br/><br/>**Виртуальный каталог ВМ (vApp)** — это логическая каталог, объединённая в единый управляемый объект. Сервис предназначен для совместного развертывания, управления жизненным циклом и сетевого взаимодействия набора связанных ВМ. Основные функции включают:<br/>- централизованное управление включением, выключением и приостановкой группы ВМ;<br/>- унифицированный сетевой доступ через привязанный Edge-шлюз;<br/><br/>### Доступные операции<br/><br/>**create** — Создание нового vApp с привязкой к заданным услугам VDC и Edge<br/>**delete** — Удаление существующего vApp. Требуется предварительный перевод vApp в состояние *suspend*. Полное удаление возможно через 14 дней.<br/>**suspend** — Остановка vApp (выключение всех ВМ внутри каталога)<br/>**resume** — Запуск vApp (включение всех ВМ внутри каталога)<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Параметры берутся из операции **create**.<br/><br/>### UUID Услуги VDC<br/>Уникальный идентификатор услуги «Виртуальный датацентр (vDC)».<br/>Используется для определения вычислительной инфраструктуры, в которой будет развернут vApp.<br/><br/>### UUID Услуги Edge<br/>Уникальный идентификатор услуги «Сетевой шлюз периметра (Edge)».<br/>Обеспечивает маршрутизацию и сетевое подключение. Может быть привязан к группе VDC, поэтому выбирается отдельно.<br/><br/>### Имя vApp<br/>Строгое имя, соответствующее маске формирования DNS-имени.<br/>Используется как часть в DNS-имени при создании виртуальных машин.<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/>Так как является промежуточным этапом для создания ВМ, все характеристики описываются в услуге `Виртуальная машина`<br/><br/>---<br/><br/>## 4. Выходные параметры<br/><br/>### Параметры vApp<br/>Заданные при создании vApp<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/><br/>- Привязка к VDC и Edge осуществляется раздельно, поскольку один Edge может обслуживать несколько VDC (через услугу `Группа виртуальных датацентров (groupvDC)`). Это гарантирует возможность развернуть ВМ в единой сети, но в разных виртуальных датацентрах.<br/>- Перед удалением vApp необходимо вручную перевести его в состояние **suspend**. Удаление возможно только спустя 14 дней после этого шага.<br/>- Операция delete удаляет весь vApp полностью, включая все виртуальные машины, связанные с ним.<br/>- Рекомендуется заранее планировать сетевые связи и назначения DNS-имён для обеспечения корректной работы сервисов, развернутых внутри vApp.<br/>- При проектировании инфраструктуры следует учитывать зависимости между Edge-шлюзом, VDC и размещаемыми ВМ, чтобы избежать ограничений при масштабировании и интеграции.'
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: 69
kind: instance
action: create
params:
- id: 190
code: nsxtUid
data_type: uuid
required: true
ref_svc_id: 22
descr: UUID Услуги `Сетевой шлюз периметра (Edge)`
man: К какой сети может быть подключен виртуальный каталог
sort: 20
- id: 191
code: vappName
data_type: string
required: true
regex: ^[a-z0-9][a-z0-9.-]{3,61}[a-z0-9]$
minlength: 3
descr: Уникальное в рамках организации
man: Имеет строгую маску `^[a-z0-9][a-z0-9.-]{3,61}[a-z0-9]$`<br/><br/>Используется в формировании DNS-Имени (для виртуальных машин)
sort: 30
- id: 623
code: vdcUid
data_type: uuid
required: true
ref_svc_id: 21
descr: UUID Услуги `Виртуальный датацентр (vDC)`
man: В каких ресурсах будет создан виртуальный каталог
sort: 10
- name: delete
id: 70
kind: instance
action: delete
params: []
- name: resume
id: 209
kind: instance
action: resume
params: []
- name: suspend
id: 208
kind: instance
action: suspend
params: []
@@ -0,0 +1,71 @@
name: vc_vm_v2
service_id: 27
service_display_name: VM в Cloud Director (vc_vmV2)
service_short_name: vc_vm_v2
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: 100
kind: instance
action: create
params:
- id: 301
code: serverListJson
data_type: json
required: true
default: '[{}]'
maxlength: 65536
minlength: 10
descr: Необходимо изменить vappUid и ipSpaceName<br/>Пример конфигурации взять по ссылке ниже<br/><br/>Объект серверов вида [{}] (Map(Object))<br/>Более подробнее смотреть в README.md (https://gitea.mgmt.nubes.ru/cloudServices/vcVmV2)
sort: 20
is_modifiable: true
- name: delete
id: 101
kind: instance
action: delete
params: []
- name: modify
id: 104
kind: instance
action: modify
params:
- id: 302
code: serverListJson
data_type: json
required: true
default: '[{}]'
maxlength: 65536
minlength: 10
descr: Объект серверов вида [{}] (Map(Object))<br/>Более подробнее смотреть в README.md (https://gitea.mgmt.nubes.ru/cloudServices/vcVmV2)
sort: 10
- name: resume
id: 102
kind: instance
action: resume
params: []
- name: suspend
id: 103
kind: instance
action: suspend
params: []
@@ -0,0 +1,272 @@
name: vc_vm_v3
service_id: 28
service_display_name: Виртуальная машина
service_short_name: vc_vm_v3
service_man: '# Документация по разворачиванию ВМ в Личном кабинете<br/><br/>Данный сервис позволяет разворачивать виртуальные машины (ВМ) непосредственно из Личного кабинета (ЛК).<br/><br/>## Доступные операции<br/>- **create** — Создание виртуальной машины<br/>- **delete** — Удаление виртуальной машины<br/>- **resume** — Запуск виртуальной машины<br/>- **suspend** — Остановка виртуальной машины<br/><br/>---<br/><br/>## Параметры для развёртывания ВМ<br/><br/>### Обязательные параметры:<br/><br/>**vappUid**<br/>UUID vApp, в которой будет создаваться виртуальная машина.<br/>*Пример: WZ00400*<br/><br/>**vmName**<br/>Уникальное имя виртуальной машины.<br/>*Пример: test-vm*<br/><br/>**vmCpu**<br/>Количество ядер процессора. Должно быть больше 0.<br/>*Пример: 1*<br/><br/>**vmRam**<br/>Объем оперативной памяти в гигабайтах. Должно быть больше 0.<br/>*Пример: 1*<br/><br/><br/>**accessPortList**<br/>Белый список портов для доступа к виртуальной машине извне в формате JSON.<br/>*Пример: [&quot;22&quot;,&quot;10050]*<br/><br/>**imageVm**<br/>Образ операционной системы для развёртывания.<br/>*Доступные значения: RockyLinux_9-16G-cloudinit, Ubuntu_22-20G, Debian_13-20G*<br/><br/>**userLogin**<br/>Логин пользователя для SSH-доступа.<br/>*По умолчанию: myuser*<br/><br/>**userPublicKey**<br/>Публичный SSH-ключ пользователя в формате OpenSSH.<br/>*Пример: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...*<br/><br/>**needAddZabbixTemplate**<br/>Значение истина\ложь, определяющее будет ли добавлен хост в zabbix.<br/>*Пример: true*<br/><br/>### Опциональные параметры:<br/><br/>**accessIpList**<br/>Белый список IP-адресов для доступа к виртуальной машине в формате JSON. Если оставить пустым, вм будет доступена со всех адресов.<br/>*Пример: [&quot;192.168.1.1&quot;, &quot;10.0.0.5&quot;]*<br/><br/>**vmDisk**<br/>Размер дополнительного диска в гигабайтах. Должно быть больше 0.<br/>*Пример: 50*<br/><br/>**ipSpaceName**<br/>Внешний IP-адрес. Если не требуется — укажите значение &quot;no-needed&quot; (В нем не будет работать сбор метрик zabbix). <br/><br/>**cloudInit**<br/>YAML-скрипт для кастомизации системы через cloud-init.<br/><br/>---<br/><br/>## Доступные образы операционных систем<br/><br/>### RockyLinux_9-16G-cloudinit<br/>Базовый образ на основе Rocky Linux 9 (Rocky-9.6-x86_64-minimal) для серверных задач.<br/>- Размер системного диска: 16 ГБ<br/>- Поддержка cloud-init<br/>- Минимальные требования: 1 vCPU, 1 ГБ RAM<br/><br/>### Ubuntu_22-20G<br/>Образ на основе Ubuntu Server 22.04 LTS для облачного окружения.<br/>- Размер системного диска: 20 ГБ<br/>- Поддержка cloud-init<br/>- Минимальные требования: 1 vCPU, 1 ГБ RAM<br/><br/>### Debian_13-20G<br/>Образ на основе Debian 13 (Trixie) для стабильной серверной работы.<br/>- Размер системного диска: 20 ГБ<br/>- Поддержка cloud-init<br/>- Минимальные требования: 1 vCPU, 1 ГБ RAM<br/><br/>---<br/><br/>## Пример использования Cloud-init<br/><br/>```yaml<br/>users:<br/> - name: myuser<br/> sudo: ALL=(ALL) NOPASSWD:ALL<br/> groups: sudo<br/> shell: /bin/bash<br/> ssh-authorized-keys:<br/> - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...<br/><br/>packages:<br/> - nginx<br/><br/>runcmd:<br/> - systemctl enable --now nginx<br/> - systemctl restart nginx<br/>```<br/><br/>---<br/><br/>## Результат выполнения<br/><br/>После успешного развёртывания в Личном кабинете появится новая виртуальная машина с заданными характеристиками. SSH-доступ осуществляется с использованием указанных логина и публичного ключа.<br/><br/>---<br/><br/>## Важные примечания<br/><br/>### Особенности работы:<br/>- Для отключения внешнего IP укажите значение &quot;no-needed&quot; в параметре ipSpaceName<br/>- Параметр cloudInit является опциональным<br/><br/>### Ограничения:<br/>- Не рекомендуется использовать продолжительные инструкции в cloud-init (таймаут 5 минут)<br/>- Не поддерживается запись файлов через cloud-init<br/>- Не реализовано создание резервных копий ВМ<br/><br/>---<br/><br/>## Диагностика проблем с cloud-init<br/><br/>### Основной лог-файл:<br/>```bash<br/>/var/log/cloud-init.log<br/>```<br/><br/>### Пакет не устанавливается:<br/>- Проверьте доступность пакета в репозитории<br/>- Убедитесь в правильности написания имени пакета<br/>- Попробуйте установить вручную: `apt install &lt;имя_пакета&gt;` (Debian/Ubuntu) или `dnf install &lt;имя_пакета&gt;` (Rocky Linux)<br/><br/>### Команда не выполняется:<br/>- Проверьте наличие требуемой утилиты в системе<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: 132
kind: instance
action: create
man: '# Документация по использованию услуги развёртывания ВМ в Личном кабинете<br/><br/>Данный сервис позволяет разворачивать виртуальные машины (ВМ) непосредственно из Личного кабинета (ЛК).<br/><br/>## Доступные операции<br/>- **create** — Создание виртуальной машины<br/>- **delete** — Удаление виртуальной машины<br/>- **resume** — Запуск виртуальной машины<br/>- **suspend** — Остановка виртуальной машины<br/><br/>---<br/><br/>## Параметры для развёртывания ВМ<br/><br/>### Обязательные параметры:<br/><br/>**vappUid**<br/>UUID vApp, в которой будет создаваться виртуальная машина.<br/>*Пример: WZ00400*<br/><br/>**vmName**<br/>Уникальное имя виртуальной машины.<br/>*Пример: test-vm*<br/><br/>**vmCpu**<br/>Количество ядер процессора. Должно быть больше 0.<br/>*Пример: 1*<br/><br/>**vmRam**<br/>Объем оперативной памяти в гигабайтах. Должно быть больше 0.<br/>*Пример: 1*<br/><br/><br/>**accessPortList**<br/>Белый список портов для доступа к виртуальной машине извне в формате JSON.<br/>*Пример: [&quot;22&quot;,&quot;10050]*<br/><br/>**imageVm**<br/>Образ операционной системы для развёртывания.<br/>*Доступные значения: RockyLinux_9-16G-cloudinit, Ubuntu_22-20G, Debian_13-20G*<br/><br/>**userLogin**<br/>Логин пользователя для SSH-доступа.<br/>*По умолчанию: myuser*<br/><br/>**userPublicKey**<br/>Публичный SSH-ключ пользователя в формате OpenSSH.<br/>*Пример: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...*<br/><br/>**needAddZabbixTemplate**<br/>Значение истина\лож определяющее будет ли добавлен хост в zabbix.<br/>*Пример: true*<br/><br/>### Опциональные параметры:<br/><br/>**accessIpList**<br/>Белый список IP-адресов для доступа к виртуальной машине в формате JSON. Если оставить пустым, вм будет доступена со всех адресов.<br/>*Пример: [&quot;192.168.1.1&quot;, &quot;10.0.0.5&quot;]*<br/><br/>**vmDisk**<br/>Размер дополнительного диска в гигабайтах. Должно быть больше 0.<br/>*Пример: 50*<br/><br/>**ipSpaceName**<br/>Внешний IP-адрес. Если не требуется — укажите значение &quot;no-needed&quot;.<br/><br/>**cloudInit**<br/>YAML-скрипт для кастомизации системы через cloud-init.<br/><br/>---<br/><br/>## Доступные образы операционных систем<br/><br/>### RockyLinux_9-16G-cloudinit<br/>Базовый образ на основе Rocky Linux 9 (Rocky-9.6-x86_64-minimal) для серверных задач.<br/>- Размер системного диска: 16 ГБ<br/>- Поддержка cloud-init<br/>- Минимальные требования: 1 vCPU, 1 ГБ RAM<br/><br/>### Ubuntu_22-20G<br/>Образ на основе Ubuntu Server 22.04 LTS для облачного окружения.<br/>- Размер системного диска: 20 ГБ<br/>- Поддержка cloud-init<br/>- Минимальные требования: 1 vCPU, 1 ГБ RAM<br/><br/>### Debian_13-20G<br/>Образ на основе Debian 13 (Trixie) для стабильной серверной работы.<br/>- Размер системного диска: 20 ГБ<br/>- Поддержка cloud-init<br/>- Минимальные требования: 1 vCPU, 1 ГБ RAM<br/><br/>---<br/><br/>## Пример использования Cloud-init<br/><br/>```yaml<br/>users:<br/> - name: myuser<br/> sudo: ALL=(ALL) NOPASSWD:ALL<br/> groups: sudo<br/> shell: /bin/bash<br/> ssh-authorized-keys:<br/> - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC...<br/><br/>packages:<br/> - nginx<br/><br/>runcmd:<br/> - systemctl enable --now nginx<br/> - systemctl restart nginx<br/>```<br/><br/>---<br/><br/>## Результат выполнения<br/><br/>После успешного развёртывания в Личном кабинете появится новая виртуальная машина с заданными характеристиками. SSH-доступ осуществляется с использованием указанных логина и публичного ключа.<br/><br/>---<br/><br/>## Важные примечания<br/><br/>### Особенности работы:<br/>- Для отключения внешнего IP укажите значение &quot;no-needed&quot; в параметре ipSpaceName<br/>- Параметр cloudInit является опциональным<br/><br/>### Ограничения:<br/>- Не рекомендуется использовать продолжительные инструкции в cloud-init (таймаут 5 минут)<br/>- Не поддерживается запись файлов через cloud-init<br/>- Не реализовано создание резервных копий ВМ<br/><br/>---<br/><br/>## Диагностика проблем с cloud-init<br/><br/>### Основной лог-файл:<br/>```bash<br/>/var/log/cloud-init.log<br/>```<br/><br/>### Пакет не устанавливается:<br/>- Проверьте доступность пакета в репозитории<br/>- Убедитесь в правильности написания имени пакета<br/>- Попробуйте установить вручную: `apt install &lt;имя_пакета&gt;` (Debian/Ubuntu) или `dnf install &lt;имя_пакета&gt;` (Rocky Linux)<br/><br/>### Команда не выполняется:<br/>- Проверьте наличие требуемой утилиты в системе<br/>- Убедитесь в правильности синтаксиса команды<br/>- Попробуйте выполнить команду вручную для диагностики'
params:
- id: 407
code: vappUid
data_type: uuid
required: true
ref_svc_id: 26
sort: 10
- id: 408
code: vmName
data_type: string
required: true
default: web01
regex: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
sort: 20
- id: 409
code: vmCpu
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 64
minvalue: 1
descr: шт
sort: 30
is_modifiable: true
- id: 410
code: vmRam
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 256
minvalue: 1
descr: Gb
sort: 40
is_modifiable: true
- id: 411
code: vmDisk
data_type: integer &gt; 0
required: false
regex: ^(?:$|(?:0|[1-9]\d{0,2}|1\d{3}|20(?:[0-3]\d|4[0-8])))$
descr: Основной диск у vm зависит от образа (см. документацию)<br/>Если необходимо дополнительное место для vm, введите колличество Gb в эту форму
sort: 50
is_modifiable: true
- id: 412
code: ipSpaceName
data_type: string
required: true
sort: 60
depends_on: vappUid
is_modifiable: true
- id: 413
code: accessIpList
data_type: json
required: false
regex: ^(?:$|\[\s*(?:"(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?"(?:\s*,\s*"(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?")*)\s*\])$
descr: Формат массива<br/>Каким адресам будет предоставлен доступ до вм<br/><br/>Требует выделенного внешнего IP<br/>Если ничего не передано, то выставлено [&quot;0.0.0.0/0&quot;]
sort: 70
is_modifiable: true
- id: 414
code: imageVm
data_type: string
required: true
sort: 90
depends_on: vappUid
- id: 415
code: cloudInit
data_type: yaml
required: false
descr: Можно передать создание дополнительных пользователей. <br/>На текущий момент не реализовано выполнения в cloud-init, установки пакетов, выполнения команд и записи файлов.
sort: 200
- id: 416
code: userLogin
required: true
default: myuser
descr: Учётка SSH
sort: 180
- id: 417
code: userPublicKey
data_type: string
required: true
descr: Публичная часть SSH-Ключа для пользователя
sort: 190
- id: 448
code: accessPortList
data_type: string
required: true
default: '["22"]'
descr: 'По каким портам открыть доступ к ВМ.<br/>Порты 22, 10050 проставляются автоматически<br/>Пока доступно: <br/>22 - SSH, <br/>80 - HTTP,<br/>443 - HTTPS,<br/>10050 - ZABBIX'
sort: 80
is_modifiable: true
- name: delete
id: 133
kind: instance
action: delete
params: []
- name: modify
id: 159
kind: instance
action: modify
params:
- id: 493
code: vmCpu
data_type: integer &gt; 0
required: false
maxvalue: 64
minvalue: 1
descr: шт
sort: 20
- id: 494
code: vmRam
data_type: integer &gt; 0
required: false
maxvalue: 256
minvalue: 1
descr: Gb
sort: 30
- id: 495
code: vmDisk
data_type: integer &gt; 0
required: false
regex: ^(?:$|(?:0|[1-9]\d{0,2}|1\d{3}|20(?:[0-3]\d|4[0-8])))$
descr: Основной диск у vm зависит от образа (см. документацию)<br/>Если необходимо дополнительное место для vm, введите колличество Gb в эту форму
sort: 40
- id: 496
code: ipSpaceName
data_type: string
required: false
value_list:
- no-needed
- internet-antiddos-v1
- internet-no-antiddos-v1
descr: no-needed, без внешнего ip<br/>internet-antiddos-v1, с функцией защиты от ddos атак<br/>internet-no-antiddos-v1, с функцией защиты от ddos атак<br/>internet-ipv4-v1 тестовое простанство dev
sort: 50
- id: 497
code: accessIpList
data_type: json
required: false
descr: Формат массива<br/>Каким адресам будет предоставлен доступ до вм<br/><br/>Требует выделенного внешнего IP<br/>Если ничего не передано, то выставлено [&quot;0.0.0.0/0&quot;]
sort: 60
- id: 498
code: accessPortList
data_type: json
required: false
descr: Формат массива<br/>По каким портам открыть доступ к ВМ.<br/>Пока доступно:<br/>22 - SSH,<br/>80 - HTTP,<br/>443 - HTTPS
sort: 70
- name: redeploy
id: 164
kind: action
action: redeploy
params:
- id: 509
code: vmName
data_type: string
required: true
regex: ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$
sort: 10
- id: 510
code: vmCpu
data_type: integer &gt; 0
required: true
maxvalue: 64
minvalue: 1
descr: шт
sort: 20
- id: 511
code: vmRam
data_type: integer &gt; 0
required: true
maxvalue: 256
minvalue: 1
descr: Gb
sort: 30
- id: 512
code: vmDisk
data_type: integer &gt; 0
required: false
regex: ^(?:$|(?:0|[1-9]\d{0,2}|1\d{3}|20(?:[0-3]\d|4[0-8])))$
descr: Основной диск у vm зависит от образа (см. документацию)<br/>Если необходимо дополнительное место для vm, введите колличество Gb в эту форму
sort: 40
- id: 513
code: ipSpaceName
data_type: string
required: false
value_list:
- no-needed
- internet-antiddos-v1
- internet-no-antiddos-v1
- internet-ipv4-v1
descr: no-needed, без внешнего ip<br/>internet-antiddos-v1, с функцией защиты от ddos атак<br/>internet-no-antiddos-v1, с функцией защиты от ddos атак<br/>internet-ipv4-v1 тестовое простанство dev
sort: 50
- id: 514
code: accessIpList
data_type: json
required: false
regex: ^(?:$|\[\s*(?:"(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?"(?:\s*,\s*"(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,2})?")*)\s*\])$
descr: Формат массива<br/>Каким адресам будет предоставлен доступ до вм<br/><br/>Требует выделенного внешнего IP<br/>Если ничего не передано, то выставлено [&quot;0.0.0.0/0&quot;]
sort: 60
- id: 515
code: imageVm
data_type: string
required: true
value_list:
- RockyLinux_9-16G-cloudinit
- Ubuntu_22-20G
- Debian_13-20G
sort: 80
- id: 516
code: userLogin
data_type: string
required: true
descr: Учётка SSH
sort: 180
- id: 517
code: userPublicKey
data_type: string
required: true
descr: Публичная часть SSH-Ключа для пользователя
sort: 190
- id: 518
code: cloudInit
data_type: yaml
required: false
descr: Можно передать создание дополнительных пользователей.<br/>На текущий момент не реализовано выполнения в cloud-init, установки пакетов, выполнения команд и записи файлов.
sort: 200
- id: 520
code: accessPortList
data_type: json
required: false
descr: По каким портам открыть доступ к ВМ.<br/>Порты 22, 10050 проставляются автоматически<br/>Пока доступно:<br/>22 - SSH,<br/>80 - HTTP,<br/>443 - HTTPS,<br/>10050 - ZABBIX
sort: 70
- name: resume
id: 135
kind: instance
action: resume
params: []
- name: suspend
id: 134
kind: instance
action: suspend
params: []
@@ -0,0 +1,72 @@
name: vc_vdc_group
service_id: 29
service_display_name: Группа датацентров
service_short_name: vcVdcGroup
service_man: '# Инструкция по развертыванию Группа виртуальных датацентров (groupvDC) через платформу<br/><br/>## 1. Общая информация<br/><br/>Сервис **Группа виртуальных датацентров (groupvDC)** предназначен для логического объединения нескольких виртуальных датацентров (vDC) в единую группу. Это позволяет растягивать SDN между разными vDC и централизованно управлять сетевой связностью. Управление инфраструктурой осуществляется через Cloud Director.<br/>Сервис применяется в случаях, когда требуется обеспечить единое сетевое пространство для распределенных виртуальных датацентров.<br/><br/>### Доступные операции<br/><br/>**create** — Создание новой группы виртуальных датацентров.<br/>**delete** — Удаление существующей группы vDC.<br/>**add_vdc** — Добавление дополнительного виртуального датацентра в группу.<br/>**remove_vdc** — Удаление ранее добавленного виртуального датацентра из группы.<br/><br/>---<br/><br/>## 2. Параметры развертывания<br/><br/>Параметры операции **create**:<br/><br/>### UUID VDC<br/>Идентификатор виртуального датацентра, который будет являться первичным в группе.<br/>Описание: требуется предварительно создать виртуальный датацентр с помощью услуги `Виртуальный датацентр (vDC)`.<br/><br/>---<br/><br/>## 3. Рекомендованные характеристики<br/><br/>### Тестовое окружение<br/>- Для тестового окружения создавать группу VDC нет необходимости, так как это создаёт дополнительный слой абстракции в Cloud Director<br/><br/>### Промышленное окружение<br/>- Для промышленного окружения, если в тенанте существуют разные VDC, создание groupvdc позволит снизить сетевые издержки (за счёт общей сети)<br/><br/>---<br/><br/>## 4. Выходные параметры<br/><br/>### Параметры groupvdc<br/>Набор параметров, указанных пользователем при создании<br/><br/>---<br/><br/>## 5. Дополнительная информация<br/>- Группа vDC используется для растягивания SDN между несколькими виртуальными датацентрами. Управление всеми сетевыми элементами внутри группы выполняется Cloud Director.<br/>- Удалить первичный vDC (тот, что был указан при операции **create**) невозможно. Для его удаления необходимо удалить всю группу и создать новую.<br/>- Перед добавлением любого vDC в группу он должен быть предварительно развернут через сервис `Виртуальный датацентр (vDC)`.<br/>- Сети создаются не в этой услуге, а в услуге `Сетевой шлюз периметра (Edge)`. В ней необходимо будет выбрать тип `groupvdc`'
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: add_vdc
id: 192
kind: action
action: add_vdc
man: '**Не нужно** выбирать UUID VDC, который уже был добавлен в группу'
params:
- id: 619
code: vdcUid
data_type: uuid
required: true
ref_svc_id: 21
sort: 10
- name: create
id: 191
kind: instance
action: create
man: '**VDC Группа** нужна для объединения всех VDC в организации в одну логическую группу.<br/>Это позволит, к примеру, создать **общую сеть** для всех VDC в организации<br/><br/>- Для создания группы VDC необходимо указать **инстанс** услуги VDC (`Виртуальный датацентр`)<br/>- **Важный момент** - удалить эту VDC из группы нельзя. Если такая потребность появится, необходимо будет **ПОЛНОСТЬЮ** удалить группу VDC и уже потом создать новую'
params:
- id: 618
code: vdcUid
data_type: uuid
required: true
ref_svc_id: 21
sort: 10
- name: delete
id: 195
kind: instance
action: delete
params: []
- name: reconcile
id: 251
kind: action
action: reconcile
params: []
- name: remove_vdc
id: 193
kind: action
action: remove_vdc
params:
- id: 620
code: vdcName
data_type: string
required: true
sort: 10
@@ -0,0 +1,128 @@
name: template
service_id: 2
service_display_name: Темплейт k8s
service_short_name: template
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: 74
kind: instance
action: create
params:
- id: 202
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "100"
maxvalue: 4000
minvalue: 100
is_modifiable: true
- id: 203
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "200"
maxvalue: 8192
minvalue: 128
is_modifiable: true
- id: 204
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
is_modifiable: true
- id: 205
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
is_modifiable: true
- id: 206
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
- id: 207
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
- name: delete
id: 75
kind: instance
action: delete
params: []
- name: modify
id: 76
kind: instance
action: modify
params:
- id: 208
code: resourceCPU
data_type: integer &gt; 0
required: false
maxvalue: 4000
minvalue: 100
- id: 209
code: resourceMemory
data_type: integer &gt; 0
required: false
maxvalue: 8192
minvalue: 128
- id: 210
code: resourceDisk
data_type: integer &gt; 0
required: false
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
- id: 211
code: resourceInstances
data_type: integer &gt; 0
required: false
maxvalue: 7
minvalue: 1
descr: Количество узлов
- name: resume
id: 98
kind: instance
action: resume
params: []
- name: suspend
id: 97
kind: instance
action: suspend
params: []
@@ -0,0 +1,80 @@
name: vmpostgre
service_id: 32
service_display_name: vc_vm_postgresql_std
service_short_name: vmpostgre
service_man: Сервис настройки PostgreSQL для виртуальной машины.<br/>Требует наличия ВМ
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: 32
kind: instance
action: create
params:
- id: 43
code: vdcUid
data_type: uuid
required: true
ref_svc_id: 21
descr: InstanceUid vdc. Vdc должен быть создан<br/>
- id: 44
code: nsxtUid
data_type: uuid
required: true
ref_svc_id: 22
descr: InstanceUid nsxt. Nsxt должен быть создан<br/>
- id: 45
code: vmUid
data_type: uuid
required: true
ref_svc_id: 23
descr: InstanceUid ВМ. ВМ должна быть создана<br/>
- id: 46
code: userDb
data_type: string
required: true
default: servicedb
descr: Наименование Базы данных<br/>
- id: 47
code: userLogin
data_type: string
required: true
default: serviceuser
descr: Пользователь базы данных<br/>
- id: 48
code: userPassword
data_type: string
required: true
default: fj29gm48fm!d374mc9
descr: Пароль от доступа к Базе данных<br/>
- id: 859
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Ресурсная платформа
- name: delete
id: 33
kind: instance
action: delete
params: []
@@ -0,0 +1,184 @@
name: nextcloud
service_id: 50
service_display_name: Nextcloud
service_short_name: nextcloud
service_man: 'Ресурсная платформа: k8s. Автоматизация: helm chart'
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: 16
kind: instance
action: create
man: DEV-Ветка сборки Nextcloud
params:
- id: 21
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
man: Наименование домена. Если будет указан FQDN, то происходят проверки DNS. Если указан поддомен, то будет добавлен в зону services.ngcloud.ru<br/>Можно указать клиентскую DNS-Запись. Важно, чтобы запись смотрела на Ingress кластера
sort: 10
- id: 99
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "1000"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili). 1 ядро = 1000 Mili
man: Квота ядра пода (Указывается в mili). 1 ядро = 1000 Mili
sort: 30
is_modifiable: true
- id: 100
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "1024"
maxvalue: 8192
minvalue: 1024
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
sort: 40
is_modifiable: true
- id: 101
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "2"
maxvalue: 999
minvalue: 2
descr: Квота диска (Указывается в GIGAbytes)<br/>Диск не может быть меньше 2G (!)
man: Квота диска (Указывается в GIGAbytes)
sort: 50
is_modifiable: true
- id: 192
code: documentServer
data_type: string
required: true
default: collabora
value_list:
- collabora
descr: Выбор сервера документов (onlyoffice)/(collabora). onlyoffice пока не доступен<br/>Размер пода collabora:<br/>1.8 ядра. 2Gi ОЗУ
man: Выбор сервера документов (onlyoffice)/(collabora). onlyoffice пока не доступен
sort: 100
- id: 470
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
value_list:
- "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов<br/>Не может пока быть больше одного, так как нужны SC под RWMany
sort: 60
is_modifiable: true
- id: 564
code: psqlUid
data_type: uuid
required: true
ref_svc_id: 90
sort: 6
- id: 569
code: appVersion
required: true
default: 32.0.1
value_list:
- 32.0.1
sort: 20
is_modifiable: true
- id: 570
code: redisUid
data_type: uuid
required: true
ref_svc_id: 91
sort: 7
- name: delete
id: 17
kind: instance
action: delete
man: DEV-Ветка удаления Nextcloud
params: []
- name: modify
id: 67
kind: instance
action: modify
params:
- id: 178
code: resourceCPU
data_type: integer &gt; 0
required: false
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili)
man: Квота ядра пода (Указывается в mili)
- id: 179
code: resourceMemory
data_type: integer &gt; 0
required: false
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
- id: 180
code: resourceDisk
data_type: integer &gt; 0
required: false
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
- id: 547
code: resourceInstances
data_type: integer &gt; 0
required: false
value_list:
- "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов.<br/>Не может пока быть больше одного, так как нужны SC под RWMany
- id: 571
code: appVersion
data_type: string
required: true
value_list:
- 32.0.1
descr: Нельзя обновляться сразу через несколько версий сразу
- name: restart
id: 66
kind: action
action: restart
params: []
- name: resume
id: 129
kind: instance
action: resume
params: []
- name: suspend
id: 128
kind: instance
action: suspend
params: []
@@ -0,0 +1,104 @@
name: superset
service_id: 81
service_display_name: Apache Superset
service_short_name: superset
service_man: 'Apache Superset как сервис. <br/>Ресурсная платформа: k8s. <br/>Автоматизация: k8s operator.<br/>Авторизация: 2FA keycloak (для доменного логина @mgmt.nubes.ru)'
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: 12
kind: instance
action: create
man: DEV-Ветка сборки Superset
params:
- id: 14
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
man: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 10
- id: 20
code: emails
data_type: string
required: true
default: testuser1
descr: Учётная запись, которой будут выданы админские права. В формате email [ну не совсем. Для доменных учетных записей - без доменного суффикса]. Обязана находиться в Keycloak. Можно передавать несколько через пробел
man: Учётная запись, которой будут выданы админские права. В формате email [ну не совсем. Для доменных учетных записей - без доменного суффикса]. Обязана находиться в Keycloak. Можно передавать несколько через пробел
sort: 70
- id: 96
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "500"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili). 1000 Mili = 1 ядро
man: Квота ядра пода (Указывается в mili). 1000 Mili = 1 ядро
sort: 30
- id: 97
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "512"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
sort: 40
- id: 98
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 50
- id: 109
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование кластера Kubernetes для подключения
sort: 20
- id: 227
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
sort: 60
- name: delete
id: 13
kind: instance
action: delete
man: DEV-Ветка удаления Superset
params: []
@@ -0,0 +1,103 @@
name: harbor
service_id: 82
service_display_name: Container Registry
service_short_name: harbor
service_man: 'Расширенный реестр для управления Docker-образами с enterprise-функциями безопасности, репликации и контроля доступа.<br/>Container Registry позволяет хранить, развертывать и управлять Docker-образами контейнеров в инфраструктуре NGcloud.<br/>Сервис можно использовать в процессе разработки контейнеров. Например, вы можете настроить систему автоматизации на работу с реестром в Container Registry в рамках процесса непрерывной интеграции. Контейнеры идеально подходят для запуска небольших, независимых и легко изменяемых сервисов.<br/>Чтобы начать работу, создайте реестр и загрузите в него Docker-образ<br/>Авторизация: keycloak'
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: 14
kind: instance
action: create
man: DEV-Ветка сборки Harbor
params:
- id: 16
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
man: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 20
- id: 17
code: emails
data_type: string
required: true
default: testuser1
descr: Учётная запись, которой будут выданы админские права. Обязана находиться в Keycloak. Можно передавать несколько через пробел
man: Учётная запись, которой будут выданы админские права. Обязана находиться в Keycloak. Можно передавать несколько через пробел
sort: 70
- id: 110
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование кластера Kubernetes для подключения
sort: 30
- id: 228
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "100"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
man: Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
sort: 40
- id: 229
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "200"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
sort: 50
- id: 230
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети
sort: 60
- id: 231
code: s3Uid
data_type: uuid
required: true
ref_svc_id: 12
descr: UUID экземпляра услуги S3
man: UUID экземпляра услуги S3
sort: 10
- name: delete
id: 15
kind: instance
action: delete
man: DEV-Ветка удаления Harbor
params: []
@@ -0,0 +1,90 @@
name: k8s_ziti_controller
service_id: 88
service_display_name: k8sZitiController
service_short_name: k8sZitiController
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: 99
kind: instance
action: create
params:
- id: 294
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "300"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (milicores)
sort: 30
- id: 295
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "512"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
sort: 40
- id: 296
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 50
- id: 297
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
sort: 60
- id: 298
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
sort: 20
- id: 299
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
unique_scope: provider
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 10
- name: delete
id: 105
kind: instance
action: delete
params: []
+156
View File
@@ -0,0 +1,156 @@
name: flask
service_id: 89
service_display_name: Flask
service_short_name: flask
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: 88
kind: instance
action: create
params:
- id: 248
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 10
- id: 249
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
sort: 20
- id: 250
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "300"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (milicores)
sort: 30
is_modifiable: true
- id: 251
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "256"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
sort: 40
is_modifiable: true
- id: 252
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
sort: 50
is_modifiable: true
- id: 253
code: gitPath
data_type: string
required: true
default: https://github.com/Foxyhhd/Baldurs-Gate-test.git
descr: Путь до Git, который будет webroot для сайта
man: Путь до Git, который будет webroot для сайта
sort: 60
is_modifiable: true
- id: 254
code: jsonEnv
data_type: string
required: false
default: '{ &quot;param&quot;: &quot;value&quot; }'
descr: Массив переменных, будут переданы в env приложения
sort: 70
is_modifiable: true
- id: 255
code: healthPath
data_type: string
required: false
descr: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код
sort: 80
- name: delete
id: 89
kind: instance
action: delete
params: []
- name: modify
id: 146
kind: instance
action: modify
params:
- id: 451
code: resourceCPU
data_type: integer &gt; 0
required: true
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (milicores)
sort: 10
- id: 452
code: resourceMemory
data_type: integer &gt; 0
required: true
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
sort: 20
- id: 453
code: resourceInstances
data_type: integer &gt; 0
required: true
maxvalue: 7
minvalue: 1
descr: Количество узлов
sort: 30
- id: 454
code: gitPath
required: true
descr: Путь до Git, который будет webroot для сайта
sort: 40
- id: 455
code: jsonEnv
data_type: json
required: true
default: '{ "param": "value" }'
descr: Массив переменных, будут переданы в env приложения
sort: 50
- name: resume
id: 145
kind: instance
action: resume
params: []
- name: suspend
id: 125
kind: instance
action: suspend
params: []
@@ -0,0 +1,468 @@
name: postgres
service_id: 90
service_display_name: PostgreSQL
service_short_name: postgres
service_man: '# Инструкция по развертыванию PostgreSQL через платформу<br/><br/>---<br/>## 1. Общая информация<br/><br/>PostgreSQL — это надёжная объектно-реляционная СУБД с открытым исходным кодом, поддерживающая расширенный набор функций, транзакции и хранение сложных типов данных. Развёртывание полностью автоматизировано платформой на базе Zalando Postgres Operator с использованием Kubernetes.<br/><br/>## Доступные операции<br/><br/>- **create** — Создание кластера<br/>- **delete** — Удаление кластера<br/>- **modify** — Модификация кластера<br/>- **suspend** — Остановка кластера<br/>- **resume** — Запуск кластера<br/>- **restart** — Перезапуск кластера<br/>- **recovery** — Восстановление из резервной копии<br/><br/>- **create_user** — Создание пользователя<br/>- **delete_user** — Удаление пользователя<br/><br/>- **create_database** — Создание базы данных<br/>- **delete_database** — Удаление базы данных<br/><br/><br/>---<br/>## 2. Параметры развертывания кластера<br/><br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса PostgreSQL:<br/><br/>* **Платформа для развертывания:**<br/> Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/> Количество инстансов (реплик) в кластере PostgreSQL. Пример: `2` (master + slave).<br/><br/>* **Квота (megabyte) памяти пода:**<br/> Квота памяти пода в мегабайтах. Пример: `2048`<br/><br/>* **Квота (millicore) ядра пода:**<br/> Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`<br/><br/>* **Размер (gigabyte) диска для базы данных:**<br/> Размер диска для хранения данных в гигабайтах. Пример: `20`<br/><br/>* **Выделяет внешний IP для доступа к master:**<br/> Флаг, определяющий, нужно ли выделять внешний IP для доступа к master. Пример: `true` или `false`<br/><br/>* **Имя ipSpace для публикации внешнего IP master:**<br/> Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`<br/><br/>* **Выделяет внешний IP для доступа к slave:**<br/> Флаг для выделения внешнего IP для slave (реплики чтения). Работает, если slave присутствует в кластере.<br/><br/>* **Имя ipSpace для публикации внешнего IP slave:**<br/> Если включен параметр для slave, то поле необходимо заполнить.<br/><br/>* **UUID экземпляра услуги S3:**<br/> UUID экземпляра S3 для хранения резервных копий.<br/><br/>* **Версия PostgreSQL:**<br/> Версия PostgreSQL для развертывания. Пример: `16`<br/><br/>* **Расписание бэкапов (ext_BACKUP_SCHEDULE):**<br/> Необязательный. Cron-выражение для времени запуска бэкапов. По умолчанию: `0 0 * * *` (ежедневно в полночь).<br/><br/>* **Количество сохраняемых бэкапов (ext_BACKUP_NUM_TO_RETAIN):**<br/> Необязательный. Количество сохраняемых бэкапов. По умолчанию: `7`<br/><br/>* **PgPooler (master / slave):**<br/> Флаги включения PgBouncer для подключений на запись и чтение. При включении создаётся отдельный под.<br/><br/>* **Разрешить подключение без SSL (allowNoSSL):**<br/> По умолчанию подключение с sslmode=require. При `true` разрешается подключение без SSL.<br/><br/>* **Автоскейлинг PV (autoScale):**<br/> Включает автоскейлинг тома. Требует настройки autoScalePercentage, autoScaleTechWindow, autoScaleQuotaGb.<br/><br/>* **Дополнительные параметры PostgreSQL (jsonParameters):**<br/> JSON с переменными конфигурации PostgreSQL. Документация: https://www.postgresql.org/docs/current/runtime-config.html<br/><br/>---<br/>## 3. Выходные параметры<br/><br/>После успешного развертывания ресурса PostgreSQL платформа возвращает ряд параметров.<br/><br/>#### externalConnect<br/><br/>Внешние эндпоинты для подключения к кластеру:<br/>- **master** — для операций записи (host: `write.${namespace}`, port: 5432)<br/>- **slave** — для операций чтения (host: `read.${namespace}`, port: 5432)<br/><br/>Пример ответа платформы:<br/><br/>```json<br/>{<br/> &quot;slave&quot;: {<br/> &quot;ip&quot;: &quot;&quot;,<br/> &quot;fqdn&quot;: &quot;&quot;,<br/> &quot;uuid&quot;: &quot;&quot;,<br/> &quot;isExternal&quot;: false<br/> },<br/> &quot;master&quot;: {<br/> &quot;ip&quot;: &quot;&lt;ip&gt;&quot;,<br/> &quot;fqdn&quot;: &quot;write.&lt;namespace&gt;.&lt;cluster-domain&gt;&quot;,<br/> &quot;uuid&quot;: &quot;&lt;uuid&gt;&quot;,<br/> &quot;isExternal&quot;: false<br/> }<br/>}<br/>```<br/><br/>Поля: `ip` — внешний IP; `fqdn` — полное имя хоста; `uuid` — идентификатор; `isExternal` — признак внешнего доступа.<br/><br/>#### internalConnect<br/><br/>Внутренние эндпоинты (FQDN) для подключения из других сервисов внутри той же сети Kubernetes.<br/><br/>Пример ответа платформы:<br/><br/>```json<br/>{<br/> &quot;slave&quot;: &quot;&quot;,<br/> &quot;master&quot;: {<br/> &quot;slave&quot;: &quot;&quot;,<br/> &quot;master&quot;: {<br/> &quot;slave&quot;: &quot;&quot;,<br/> &quot;master&quot;: &quot;postgresqlk8s-master.&lt;namespace&gt;.svc.cluster.local&quot;<br/> }<br/> }<br/>}<br/>```<br/><br/>Для подключения используйте значение `master.master.master` (host для записи) или соответствующее значение slave (host для чтения).<br/><br/>Для подключения используется порт **5432**.<br/><br/>---<br/>## 4. Управление пользователями<br/><br/>### create_user — Создание пользователя<br/><br/>* **Имя пользователя (username):**<br/> Имя создаваемого пользователя. Используется для подключения к базе и настройки прав.<br/> Пример: `myapp_user`<br/><br/>* **Роль (role):**<br/> Тип роли пользователя. Допустимые значения:<br/> - `app_user` — базовые права для DML-операций (SELECT, INSERT, UPDATE, DELETE)<br/> - `ddl_user` — расширенные права: createdb, createrole (управление базами и ролями)<br/><br/>Защищённые имена, которые нельзя использовать: `admin`, `postgres`, `standby`.<br/><br/>### delete_user — Удаление пользователя<br/><br/>* **Имя пользователя (username):**<br/> Имя удаляемого пользователя. Пример: `myapp_user`<br/><br/>Пользователя нельзя удалить, если он является владельцем базы данных. Сначала удалите или передайте владение базами данных другому пользователю.<br/><br/>---<br/>## 5. Управление базами данных<br/><br/>### create_database — Создание базы данных<br/><br/>* **Имя базы данных (dbName):**<br/> Название создаваемой базы данных. Пример: `myapp_db`<br/><br/>* **Владелец базы данных (dbOwner):**<br/> Имя пользователя-владельца базы. Должен существовать в кластере (создан через create_user). Пример: `myapp_user`<br/><br/>### delete_database — Удаление базы данных<br/><br/>* **Имя базы данных (dbName):**<br/> Название удаляемой базы данных. Пример: `myapp_db`<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: 19
kind: instance
action: create
man: руководство
params:
- id: 23
code: s3Uid
data_type: uuid
required: true
ref_svc_id: 12
descr: Экземпляр (учетная запись) S3 для резервного копирования. Резервное копирование обязательно
man: Экземпляр (учетная запись) S3 для резервного копирования. Резервное копирование обязательно
sort: 20
- id: 80
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
regex: ^[1357]$
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в кластере. 1,3,5,7
sort: 60
is_modifiable: true
- id: 81
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "512"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
man: Квота памяти пода (MBytes)
sort: 40
is_modifiable: true
- id: 82
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "500"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (milicores)
man: Квота ядра пода (milicores)
sort: 30
is_modifiable: true
- id: 83
code: resourceDisk
required: true
default: "10"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 50
is_modifiable: true
- id: 102
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Кластер Kubernetes, на котором будет развернут экземпляр
sort: 10
- id: 145
code: needExternalAddressMaster
data_type: boolean
required: false
default: "false"
value_list:
- "false"
- "true"
descr: Выделяет внешний (белый) IP для доступа к master
man: Выделяет внешний (белый) IP для доступа к master
sort: 70
is_modifiable: true
- id: 146
code: needExternalAddressSlave
data_type: boolean
required: false
default: "false"
value_list:
- "false"
- "true"
descr: Выделяет внешний (белый) IP для доступа к slave. Будет работать, если slave в принципе есть
man: Выделяет внешний (белый) IP для доступа к slave. Будет работать, если slave в принципе есть
sort: 90
is_modifiable: true
- id: 265
code: ext_BACKUP_SCHEDULE
data_type: string
required: false
default: 0 0 * * *
regex: ^((((\d+,)+\d+|(\d+(\/|-|#)\d+)|(\d+L?)|(\*(\/\d+)?)|(L(-\d+)?)|(\?)|([A-Z]{3}(-[A-Z]{3})?)) ?){5,7})|(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\d+(ns|us|µs|ms|s|m|h))+)$
man: Не обязательный. Время запуска бекапа
sort: 150
is_modifiable: true
- id: 266
code: ext_BACKUP_NUM_TO_RETAIN
data_type: integer &gt; 0
required: false
default: "7"
maxvalue: 99
minvalue: 1
man: Не обязательный. Количество сохраняемых бекапов
sort: 140
is_modifiable: true
- id: 310
code: appVersion
data_type: string
required: true
default: "17"
value_list:
- "17"
- "16"
- "15"
- "14"
- "13"
descr: Версия PostgreSQL
sort: 160
is_modifiable: true
- id: 311
code: jsonParameters
data_type: json
required: true
default: '{ "log_connections": "off", "log_disconnections": "off" }'
maxlength: 2048
descr: Массив переменных, более подробнее про настройку можно посмотреть https://www.postgresql.org/docs/current/runtime-config.html
sort: 170
is_modifiable: true
- id: 312
code: enablePgPoolerMaster
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Включает pgPooler (на запись). Будет создан новый под
sort: 180
is_modifiable: true
- id: 313
code: enablePgPoolerSlave
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Включает pgPooler (на чтение). Будет создан новый под
sort: 190
is_modifiable: true
- id: 314
code: allowNoSSL
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: По умолчанию подключение обязательное (sslmode=require). Выставление в true отключит этот параметр
sort: 200
is_modifiable: true
- id: 329
code: autoScale
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Включает автоскейлинг PV. При включении параметра необходимо настроить autoScalePercentage и autoScaleTechWindow. Алерт при срабатывании вызывает modify у текущей услуги
sort: 300
- id: 330
code: autoScalePercentage
data_type: integer &gt; 0
required: true
default: "10"
value_list:
- "10"
- "15"
- "20"
descr: Требует включения autoScale. Позволяет указать в процентах расширение от текущего макс объема
sort: 310
- id: 331
code: autoScaleTechWindow
data_type: integer &gt;= 0
required: true
default: "0"
value_list:
- "0"
- "5"
- "12"
- "23"
descr: Требует включения autoScale. Окно обновления (пока не реализовано). Указывается час в виде Integer (0 / 5 / 12 / 23)
sort: 320
- id: 337
code: ipSpaceNameMaster
data_type: string
required: false
descr: 'Имя ipSpace для публикации VIP master. Не может быть пустым, если включен needExternalAddressMaster. Пример: `internet-no-antiddos-v1`'
sort: 80
is_modifiable: true
- id: 338
code: ipSpaceNameSlave
data_type: string
required: false
descr: Имя ipSpace для публикации VIP slave. Не может быть пустым, если включен needExternalAddressSlave
sort: 100
is_modifiable: true
- id: 339
code: autoScaleQuotaGb
data_type: string
required: true
default: "1"
descr: Квота для autoScale
sort: 330
- name: delete
id: 20
kind: instance
action: delete
params:
- id: 457
code: deleteS3Bucket
data_type: boolean
required: true
default: "true"
value_list:
- "false"
- "true"
descr: Также удалить технический S3 Bucket с бэкапами?
sort: 10
- name: modify
id: 48
kind: instance
action: modify
params:
- id: 91
code: resourceInstances
data_type: integer &gt; 0
required: false
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети
sort: 40
- id: 92
code: resourceMemory
data_type: integer &gt; 0
required: false
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
man: Квота памяти пода (MBytes)
sort: 20
- id: 93
code: resourceCPU
data_type: integer &gt; 0
required: false
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (milicores)
man: Квота ядра пода (milicores)
sort: 10
- id: 94
code: resourceDisk
data_type: integer &gt; 0
required: false
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 30
- id: 147
code: needExternalAddressMaster
data_type: boolean
required: true
value_list:
- "false"
- "true"
descr: Выделяет внешний IP для доступа к master
man: Выделяет внешний IP для доступа к master
sort: 50
- id: 148
code: needExternalAddressSlave
data_type: boolean
required: true
value_list:
- "false"
- "true"
descr: Выделяет внешний IP для доступа к slave. Действует, если slave в принципе есть
man: Выделяет внешний IP для доступа к slave. Действует, если slave в принципе есть
sort: 70
- id: 267
code: ext_BACKUP_SCHEDULE
data_type: string
required: false
regex: ^((((\d+,)+\d+|(\d+(\/|-|#)\d+)|(\d+L?)|(\*(\/\d+)?)|(L(-\d+)?)|(\?)|([A-Z]{3}(-[A-Z]{3})?)) ?){5,7})|(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\d+(ns|us|µs|ms|s|m|h))+)$
man: Не обязательный. Время запуска бекапа
sort: 90
- id: 268
code: ext_BACKUP_NUM_TO_RETAIN
data_type: integer &gt; 0
required: false
maxvalue: 99
minvalue: 1
man: Не обязательный. Количество сохраняемых бекапов
sort: 100
- id: 315
code: appVersion
data_type: string
required: true
value_list:
- "17"
- "16"
- "15"
- "14"
- "13"
descr: Версия PostgreSQL. Нельзя опускать вниз
sort: 110
- id: 316
code: jsonParameters
data_type: json
required: false
maxlength: 2048
descr: Массив переменных, более подробнее про настройку можно посмотреть https://www.postgresql.org/docs/current/runtime-config.html
sort: 120
- id: 317
code: enablePgPoolerMaster
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Включает pgPooler (на запись). Будет создан новый под
sort: 130
- id: 318
code: enablePgPoolerSlave
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Включает pgPooler (на чтение). Будет создан новый под
sort: 140
- id: 319
code: allowNoSSL
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: По умолчанию подключение обязательное (sslmode=require). Выставление в true отключит этот параметр
sort: 150
- id: 541
code: ipSpaceNameMaster
data_type: string
required: false
descr: 'Имя ipSpace для публикации VIP master. Не может быть пустым, если включен needExternalAddressMaster. Пример: `internet-no-antiddos-v1`'
sort: 60
- id: 542
code: ipSpaceNameSlave
data_type: string
required: false
descr: Имя ipSpace для публикации VIP slave. Не может быть пустым, если включен needExternalAddressSlave
sort: 80
- name: recovery
id: 47
kind: action
action: recovery
params:
- id: 86
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети<br/>
sort: 50
- id: 87
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "512"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (Указывается в Megabytes)<br/>
man: Квота памяти пода (Указывается в Megabytes)<br/>
sort: 30
- id: 88
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "500"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili)<br/>
man: Квота ядра пода (Указывается в mili)<br/>
sort: 20
- id: 89
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 40
- id: 131
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование кластера Kubernetes для подключения
sort: 10
- name: restart
id: 54
kind: action
action: restart
man: ВНИМАНИЕ - Рестарт предполагает УДАЛЕНИЕ подов.<br/>Может быть полная поломка. Крайне осторожно запускать при работе
params: []
- name: resume
id: 114
kind: instance
action: resume
params: []
- name: suspend
id: 115
kind: instance
action: suspend
params: []
+118
View File
@@ -0,0 +1,118 @@
name: redis
service_id: 91
service_display_name: Redis
service_short_name: redis
service_man: 'Redis кластер. Под кеши. <br/>Ресурсная платформа: k8s. <br/>Автоматизация: k8s operator<br/>port 6379'
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: 21
kind: instance
action: create
params:
- id: 112
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "1000"
maxvalue: 4000
minvalue: 500
descr: Квота ядра пода (Указывается в mili)
man: Квота ядра пода (Указывается в mili)
sort: 20
- id: 113
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "1024"
maxvalue: 8192
minvalue: 512
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
sort: 30
- id: 114
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "30"
maxvalue: 999
minvalue: 10
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 40
- id: 181
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети. Если выделить больше 1 ноды, будет добавлено дополнительно 3 Sentinel ноды
sort: 50
- id: 182
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование кластера Kubernetes для подключения<br/>
sort: 10
- id: 183
code: needExternalAddressMaster
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Выделяет внешний IP для доступа к master
man: Выделяет внешний IP для доступа к master
sort: 60
- id: 184
code: needExternalAddressSlave
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Выделяет внешний IP для доступа к slave. Будет работать если slave в целом есть
man: Выделяет внешний IP для доступа к slave. Будет работать если slave в целом есть
sort: 70
- id: 548
code: ipSpaceNameMaster
data_type: string
required: false
descr: Имя ipSpace для публикации VIP master. Не может быть пустым, если включен needExternalAddressMaster
- id: 549
code: ipSpaceNameSlave
data_type: string
required: false
descr: Имя ipSpace для публикации VIP slave. Не может быть пустым, если включен needExternalAddressSlave
- name: delete
id: 22
kind: instance
action: delete
params: []
@@ -0,0 +1,147 @@
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/><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/>### Квота памяти пода (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/>### Выделение внешнего IP для доступа к master<br/><br/>Флаг, определяющий необходимость выделения внешнего IP.<br/>Допустимые значения: `true` или `false`<br/><br/>### Имя ipSpace для публикации внешнего IP<br/><br/>Указывается только если включено выделение внешнего IP.<br/>Пример: `internet-no-antiddos-v1`<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: 487
code: resourceInstances
data_type: integer &gt; 0
required: true
maxvalue: 7
minvalue: 1
descr: 'Пример: `2`'
sort: 10
- id: 588
code: resourceMemory
data_type: integer &gt; 0
required: true
minvalue: 1000
descr: 'Пример: `2048`'
- id: 589
code: resourceCPU
data_type: integer &gt; 0
required: true
descr: 'Пример: `1000`'
- id: 590
code: resourceDisk
data_type: integer &gt; 0
required: true
descr: 'Пример: `20`'
- id: 595
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Выбрать платформу из списка
sort: 10
- id: 645
code: needExternalAddressMaster
data_type: string
required: true
default: "false"
value_list:
- "false"
- "true"
descr: 'Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-брокеру. Пример: `true` или `false`'
- id: 646
code: ipSpaceNameMaster
data_type: string
required: false
descr: 'Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`'
- 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_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: resume
id: 196
kind: instance
action: resume
params: []
- name: suspend
id: 194
kind: instance
action: suspend
params: []
@@ -0,0 +1,180 @@
name: rabbitmq
service_id: 93
service_display_name: RabbitMQ
service_short_name: rabbitmq
service_man: '# Инструкция по развертыванию RabbitMQ через платформу<br/><br/>---<br/>## 1. Общая информация<br/>RabbitMQ — это брокер сообщений с открытым исходным кодом, который обеспечивает надёжную доставку сообщений между приложениями.<br/>Позволяет надёжно передавать сообщения между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние, так и защищённые TLS-подключения. Развёртывание полностью автоматизировано платформой.<br/><br/>## Доступные операции<br/>- **create** — Создание кластера<br/>- **modify** — Изменение параметров кластера<br/>- **delete** — Удаление кластера<br/>- **suspend** — Остановка кластера<br/>- **resume** — Запуск кластера<br/><br/><br/>---<br/>## 2. Параметры развертывания кластера<br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса RabbitMQ:<br/><br/>* **Платформа для развертывания:**<br/> Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/> Количество реплик в кластере RabbitMQ. При значении больше 1 создаётся кластер с репликацией для обеспечения высокой доступности.<br/> Пример: `1` (single node) или `3` (кластер с репликацией)<br/><br/>* **Квота (megabyte) памяти пода:**<br/> Квота памяти пода в мегабайтах. Пример: `2048`<br/><br/>* **Квота (millicore) ядра пода:**<br/> Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `1000`<br/><br/>* **Размер (gigabyte) диска для базы данных:**<br/> Размер диска для хранения данных RabbitMQ в гигабайтах. Пример: `50`<br/><br/>* **Выделяет внешний IP для доступа к master:**<br/> Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-узлу. При включении создаётся Service типа LoadBalancer и настраивается VIP на порту 5672.<br/> Пример: `true` или `false`<br/><br/>* **Имя ipSpace для публикации внешнего IP master:**<br/> Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`<br/><br/><br/>---<br/>## 3. Модификация кластера<br/>Операция **modify** позволяет изменить параметры существующего кластера RabbitMQ.<br/><br/>**Изменяемые параметры:**<br/>* **Квота (megabyte) памяти пода** — можно увеличить или уменьшить<br/>* **Квота (millicore) ядра пода** — можно увеличить или уменьшить<br/>* **Размер (gigabyte) диска для базы данных** — можно только увеличить (уменьшение не поддерживается)<br/>* **Количество узлов в сети** — можно только увеличить (уменьшение не поддерживается)<br/>* **Выделяет внешний IP для доступа к master** — можно включить или выключить<br/>* **Имя ipSpace для публикации внешнего IP master** — можно изменить при включенном внешнем IP<br/><br/>**Ограничения:**<br/>* Уменьшение размера диска не поддерживается<br/>* Уменьшение количества реплик не поддерживается<br/><br/>---<br/>## 4. Выходные параметры<br/>После успешного развертывания ресурса RabbitMQ платформа возвращает ряд параметров в разделе &quot;Поля состояния (сгенерированные значения)&quot;:<br/><br/>**clusterDomain**<br/>Домен кластера Kubernetes, в котором развернут RabbitMQ.<br/>Пример: `cluster.local`<br/><br/>**inernalConnect**<br/>Внутренние эндпоинты для подключения к кластеру RabbitMQ из других сервисов, развернутых внутри той же сети.<br/>Содержит:<br/>* **master** — FQDN для подключения к кластеру. Пример: `rabbitmqk8s.{namespace}.svc.{clusterDomain}`<br/><br/>**externalConnect**<br/>Внешние эндпоинты для подключения к кластеру RabbitMQ извне.<br/>Содержит объекты с полями:<br/>* **admin** — доступ к веб-интерфейсу управления:<br/> * `fqdn` — полное доменное имя для веб-интерфейса. Пример: `admin.{namespace}.{domain}`<br/> * `ip` — IP-адрес<br/>* **master** — доступ к AMQP протоколу (если включен внешний IP):<br/> * `fqdn` — полное доменное имя для AMQP. Пример: `write.{namespace}.{domain}`<br/> * `ip` — IP-адрес<br/><br/>**monitoring**<br/>Информация о дашбордах мониторинга:<br/>* **allDashboards** — URL для доступа ко всем дашбордам Grafana<br/><br/>Для подключения используются следующие порты:<br/><br/>* **5672** — AMQP протокол (внутренний и внешний доступ, если включен внешний IP)<br/>* **15672** — веб-интерфейс управления (доступен через Ingress по HTTPS)<br/><br/>**Учётные данные**<br/>Данные для подключения к RabbitMQ доступны в разделе &quot;Учётные данные&quot;:<br/>* **adminUser** — имя пользователя администратора<br/>* **adminPass** — пароль администратора<br/><br/><br/>---<br/>## 5. Примеры подключения через консоль (rabbitmqadmin)<br/><br/>### Работа с очередями через rabbitmqadmin<br/><br/>Для работы с RabbitMQ через консоль используется утилита `rabbitmqadmin`. Установите её или используйте образ с предустановленной утилитой.<br/><br/>Задайте переменные окружения с учётными данными:<br/><br/>```bash<br/>export RABBITMQ_USERNAME=&lt;adminUser&gt;<br/>export RABBITMQ_PASSWORD=&lt;adminPass&gt;<br/>export RABBIT_HOST=&lt;host&gt;<br/>```<br/><br/>Где:<br/>* `&lt;adminUser&gt;` и `&lt;adminPass&gt;` — учётные данные из раздела &quot;Учётные данные&quot;<br/>* `&lt;host&gt;` — адрес для подключения:<br/> * Для внешнего подключения: `externalConnect.admin.fqdn` или `externalConnect.master.fqdn`<br/><br/>**Создание очереди:**<br/><br/>```bash<br/>rabbitmqadmin \<br/> -H &quot;$RABBIT_HOST&quot; -P 15672 \<br/> -u &quot;$RABBITMQ_USERNAME&quot; -p &quot;$RABBITMQ_PASSWORD&quot; \<br/> declare queue name=healthcheck durable=false<br/>```<br/><br/>**Листинг очередей:**<br/><br/>```bash<br/>rabbitmqadmin \<br/> -H &quot;$RABBIT_HOST&quot; -P 15672 \<br/> -u &quot;$RABBITMQ_USERNAME&quot; -p &quot;$RABBITMQ_PASSWORD&quot; \<br/> list queues<br/>```<br/><br/>**Отправка сообщения:**<br/><br/>```bash<br/>rabbitmqadmin \<br/> -H &quot;$RABBIT_HOST&quot; -P 15672 \<br/> -u &quot;$RABBITMQ_USERNAME&quot; -p &quot;$RABBITMQ_PASSWORD&quot; \<br/> publish exchange=amq.default routing_key=healthcheck payload=&quot;ping-$(date +%s)&quot;<br/>```<br/><br/>**Чтение сообщения:**<br/><br/>```bash<br/>rabbitmqadmin \<br/> -H &quot;$RABBIT_HOST&quot; -P 15672 \<br/> -u &quot;$RABBITMQ_USERNAME&quot; -p &quot;$RABBITMQ_PASSWORD&quot; \<br/> get queue=healthcheck ackmode=ack_requeue_false<br/>```<br/><br/>---<br/>## 6. Дополнительная информация<br/>Для подключения к кластеру RabbitMQ используйте полученные эндпоинты из раздела &quot;Поля состояния (сгенерированные значения)&quot; и учётные данные из раздела &quot;Учётные данные&quot;.<br/><br/>Веб-интерфейс управления доступен по адресу, указанному в параметре `externalConnect.admin.fqdn` через HTTPS.<br/><br/>Для внутреннего подключения используйте адрес из `inernalConnect.master` на порту 5672.<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: 38
kind: instance
action: create
params:
- id: 116
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "1000"
maxvalue: 4000
minvalue: 500
descr: 'Пример: `2000`'
sort: 20
is_modifiable: true
- id: 117
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "1124"
maxvalue: 8192
minvalue: 512
descr: 'Пример: `2048`'
sort: 30
is_modifiable: true
- id: 118
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "30"
maxvalue: 999
minvalue: 5
descr: 'Пример: `20`'
sort: 40
is_modifiable: true
- id: 119
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Выбрать платформу из списка
sort: 10
- id: 224
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: 'Пример: `1`'
sort: 50
is_modifiable: true
- id: 225
code: needExternalAddressMaster
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: 'Флаг, определяющий, нужно ли выделять внешний IP для доступа к master. Пример: `true` или `false`'
sort: 60
is_modifiable: true
- id: 543
code: ipSpaceNameMaster
data_type: string
required: false
descr: 'Пример: `internet-no-antiddos-v1`'
is_modifiable: true
- name: delete
id: 39
kind: instance
action: delete
params: []
- name: modify
id: 106
kind: instance
action: modify
params:
- id: 304
code: resourceCPU
data_type: integer &gt; 0
required: true
maxvalue: 4000
minvalue: 500
descr: 'Пример: `2000`'
sort: 10
- id: 305
code: resourceMemory
data_type: integer &gt; 0
required: true
maxvalue: 8192
minvalue: 512
descr: 'Пример: `2048`'
sort: 20
- id: 306
code: resourceDisk
data_type: integer &gt; 0
required: true
maxvalue: 999
minvalue: 1
descr: 'Пример: `20`'
sort: 10
- id: 307
code: resourceInstances
data_type: integer &gt; 0
required: true
maxvalue: 7
minvalue: 1
descr: 'Пример: `1`'
sort: 40
- id: 308
code: needExternalAddressMaster
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Выделяет внешний (белый) IP для доступа к master
sort: 50
- id: 309
code: needExternalAddressSlave
data_type: boolean
required: true
default: "false"
value_list:
- "false"
- "true"
descr: Выделяет внешний (белый) IP для доступа к slave
sort: 60
- id: 545
code: ipSpaceNameMaster
data_type: string
required: false
descr: 'Пример: `internet-no-antiddos-v1`'
- id: 546
code: ipSpaceNameSlave
data_type: string
required: false
descr: 'Пример: `internet-no-antiddos-v1`'
- name: resume
id: 117
kind: instance
action: resume
params: []
- name: suspend
id: 116
kind: instance
action: suspend
man: Пока не работает из за того что RabbitmqCluster нельзя занулить
params: []
+217
View File
@@ -0,0 +1,217 @@
name: lucee
service_id: 94
service_display_name: Lucee
service_short_name: lucee
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: 49
kind: instance
action: create
params:
- id: 103
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
unique_scope: provider
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
man: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 10
- id: 104
code: gitPath
data_type: string
required: true
default: https://github.com/xahys/testlucee
descr: Путь до Git, который будет webroot для сайта
man: Путь до Git, который будет webroot для сайта
sort: 60
is_modifiable: true
- id: 105
code: jsonEnv
data_type: json
required: false
default: '{ "param": "value" }'
maxlength: 2048
descr: Здесь вы можете задать переменные среды в формате KEY=VALUE. Они будут доступны внутри вашего приложения.
sort: 70
is_modifiable: true
- id: 106
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "300"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (milicores)
man: Квота ядра пода (milicores)
sort: 30
is_modifiable: true
- id: 107
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "512"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
man: Квота памяти пода (MBytes)
sort: 40
is_modifiable: true
- id: 108
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование кластера Kubernetes для подключения
sort: 20
- id: 132
code: healthPath
data_type: string
required: false
descr: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код
man: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код
sort: 80
is_modifiable: true
- id: 139
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети
sort: 50
is_modifiable: true
- id: 263
code: appVersion
data_type: string
required: true
default: "5.4"
value_list:
- "5.4"
- "6.0"
regex: ^\d+(\.\d+){1,2}(-[a-zA-Z0-9\.]+)?$
descr: Версия Lucee
sort: 90
is_modifiable: true
- name: delete
id: 50
kind: instance
action: delete
params: []
- name: modify
id: 55
kind: instance
action: modify
man: Если CFS оставить пустым, то при запуске джобы берётся параметр из instanceData
params:
- id: 133
code: gitPath
data_type: string
required: false
descr: Путь до Git, который будет webroot для сайта
man: Путь до Git, который будет webroot для сайта
sort: 50
- id: 134
code: healthPath
data_type: string
required: false
descr: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код.
man: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код.
sort: 60
- id: 135
code: jsonEnv
data_type: json
required: false
maxlength: 2048
descr: Массив переменных, будут переданы в env приложения
man: Массив переменных, будут переданы в env приложения
sort: 40
- id: 136
code: resourceCPU
data_type: integer &gt; 0
required: false
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili) 1000Mili = 1 ядро
man: Квота ядра пода (Указывается в mili)
sort: 10
- id: 137
code: resourceMemory
data_type: integer &gt; 0
required: false
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
sort: 20
- id: 138
code: resourceInstances
data_type: integer &gt; 0
required: false
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети
sort: 30
- id: 264
code: appVersion
data_type: string
required: true
default: "5.4"
value_list:
- "5.4"
- "6.0"
regex: ^\d+(\.\d+){1,2}(-[a-zA-Z0-9\.]+)?$
sort: 70
- name: redeploy
id: 53
kind: action
action: redeploy
params:
- id: 257
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
- name: restart
id: 163
kind: action
action: restart
params: []
- name: resume
id: 95
kind: instance
action: resume
params: []
- name: suspend
id: 96
kind: instance
action: suspend
params: []
@@ -0,0 +1,215 @@
name: nodejs
service_id: 95
service_display_name: NodeJS
service_short_name: nodejs
service_man: Развертывает контейнер в k8s кластере с node:16, который можно использовать для запуска своих приложений.<br/>Приложение должно быть доступно по ссылки в git репозитории, которая является входным параметром.
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: 58
kind: instance
action: create
params:
- id: 149
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
man: Наименование поддомена, будет добавлено в nodejs.dev.nubes.ru
sort: 10
- id: 150
code: gitPath
data_type: string
required: true
default: https://github.com/xahys/testnode.git
descr: Путь до Git, который будет webroot для сайта
man: Путь до Git, который будет webroot для сайта
sort: 60
is_modifiable: true
- id: 151
code: healthPath
data_type: string
required: false
descr: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код. Если оставить пустым, healtcheck'а не будет
man: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код. Если оставить пустым, healtcheck'а не будет
sort: 80
is_modifiable: true
- id: 152
code: jsonEnv
data_type: json
required: false
descr: Массив переменных, будут переданы в env приложения
man: Массив переменных, будут переданы в env приложения
sort: 70
is_modifiable: true
- id: 153
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "500"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (milicores). 1000Mili = 1 Ядро
man: Квота ядра пода (milicores). 1000Mili = 1 Ядро
sort: 30
is_modifiable: true
- id: 154
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "1024"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
man: Квота памяти пода (MBytes)
sort: 40
is_modifiable: true
- id: 155
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети
sort: 50
is_modifiable: true
- id: 156
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
sort: 20
- id: 270
code: appVersion
data_type: string
required: true
default: "23"
value_list:
- "18"
- "20"
- "22"
- "23"
regex: ^(\d){2}$
descr: Версия приложения
sort: 90
is_modifiable: true
- name: delete
id: 61
kind: instance
action: delete
params: []
- name: modify
id: 59
kind: instance
action: modify
params:
- id: 157
code: gitPath
data_type: string
required: false
descr: Путь до Git, который будет webroot для сайта
man: Путь до Git, который будет webroot для сайта
sort: 50
- id: 158
code: healthPath
data_type: string
required: false
descr: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код.
man: Путь до healtcheck для запуска пода в Kubernetes, который отдаст 200 код.
sort: 60
- id: 159
code: jsonEnv
data_type: json
required: false
maxlength: 2048
descr: Массив переменных, будут переданы в env приложения
man: Массив переменных, будут переданы в env приложения
sort: 40
- id: 160
code: resourceCPU
data_type: integer &gt; 0
required: false
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili) 1000Mili = 1 ядро
man: Квота ядра пода (Указывается в mili) 1000Mili = 1 ядро
sort: 10
- id: 161
code: resourceMemory
data_type: integer &gt; 0
required: false
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
sort: 20
- id: 162
code: resourceInstances
data_type: integer &gt; 0
required: false
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети
sort: 30
- id: 271
code: appVersion
data_type: string
required: true
default: "23"
value_list:
- "18"
- "20"
- "22"
- "23"
regex: ^(\d){2}$
descr: Версия приложения
man: Версия приложения
sort: 70
- name: redeploy
id: 60
kind: action
action: redeploy
params:
- id: 258
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
- name: resume
id: 121
kind: instance
action: resume
params: []
- name: suspend
id: 120
kind: instance
action: suspend
params: []
@@ -0,0 +1,158 @@
name: pgadmin
service_id: 96
service_display_name: pgAdmin
service_short_name: pgadmin
service_man: Инструмент с графическим интерфейсом для управления базами данных PostgreSQL
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: 62
kind: instance
action: create
params:
- id: 164
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
unique_scope: provider
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
man: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 10
- id: 165
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "200"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (milicores). 1000Mili = 1 Ядро
man: Квота ядра пода (milicores). 1000Mili = 1 Ядро
sort: 30
is_modifiable: true
- id: 166
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "256"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
man: Квота памяти пода (MBytes)
sort: 40
is_modifiable: true
- id: 167
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 50
is_modifiable: true
- id: 169
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование кластера Kubernetes для подключения
sort: 20
- id: 170
code: login
data_type: string
required: true
regex: ^([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)$
maxlength: 255
minlength: 3
descr: Логин для подключения к pgAdmin, в формате email (login@email.net)
man: Логин для подключения к pgAdmin, в формате email (login@email.net)
sort: 60
- id: 171
code: password
data_type: string
required: true
descr: Пароль для подключения к pgAdmin
man: Пароль для подключения к pgAdmin
sort: 70
is_sensitive: true
- name: delete
id: 63
kind: instance
action: delete
params: []
- name: modify
id: 64
kind: instance
action: modify
params:
- id: 172
code: resourceCPU
data_type: integer &gt; 0
required: false
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
man: Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
- id: 173
code: resourceMemory
data_type: integer &gt; 0
required: false
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (MBytes)
man: Квота памяти пода (MBytes)
- id: 174
code: resourceDisk
data_type: integer &gt; 0
required: false
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
- name: redeploy
id: 65
kind: action
action: redeploy
params:
- id: 277
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
- name: resume
id: 123
kind: instance
action: resume
params: []
- name: suspend
id: 122
kind: instance
action: suspend
params: []
@@ -0,0 +1,91 @@
name: nodered
service_id: 97
service_display_name: NodeRed
service_short_name: nodered
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: 72
kind: instance
action: create
params:
- id: 193
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "500"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
sort: 30
- id: 194
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "512"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (Указывается в Megabytes)
sort: 40
- id: 195
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 60
- id: 196
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование кластера Kubernetes для подключения
sort: 20
- id: 197
code: domain
data_type: string
required: true
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
unique_scope: provider
descr: Наименование поддомена, будет добавлено в k8stemplate.dev.nubes.ru
man: Наименование поддомена, будет добавлено в k8stemplate.dev.nubes.ru
sort: 10
- id: 323
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
sort: 50
- name: delete
id: 73
kind: instance
action: delete
params: []
+150
View File
@@ -0,0 +1,150 @@
name: http
service_id: 98
service_display_name: Простой HTTP контейнер
service_short_name: http
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: 77
kind: instance
action: create
params:
- id: 212
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
unique_scope: provider
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
man: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 10
- id: 213
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "100"
maxvalue: 4000
minvalue: 100
descr: Квота ядра пода (Указывается в mili)
man: Квота ядра пода (Указывается в mili)
sort: 30
is_modifiable: true
- id: 214
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "200"
maxvalue: 8192
minvalue: 128
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
sort: 40
is_modifiable: true
- id: 215
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество реплик приложения. Трафик будет распределяться между подами в режиме Round-Robin
sort: 50
is_modifiable: true
- id: 216
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
man: Наименование кластера Kubernetes для подключения
sort: 20
- id: 217
code: registryPath
data_type: string
required: true
default: nexus-sa.tst.nubes.ru/docker-nubes/jolt
descr: Путь до image, который будет установлен как deployment
man: Путь до image, который будет установлен как deployment
sort: 60
- id: 241
code: jsonEnv
data_type: json
required: false
default: '{&quot;param&quot;: &quot;value&quot;}'
descr: Массив переменных, будут переданы в env приложения
man: Массив переменных, будут переданы в env приложения
sort: 70
- name: delete
id: 78
kind: instance
action: delete
params: []
- name: modify
id: 81
kind: instance
action: modify
params:
- id: 218
code: resourceCPU
data_type: integer &gt; 0
required: true
maxvalue: 4000
minvalue: 100
- id: 219
code: resourceMemory
data_type: integer &gt; 0
required: true
maxvalue: 8192
minvalue: 128
- id: 220
code: resourceInstances
data_type: integer &gt; 0
required: true
maxvalue: 7
minvalue: 1
descr: Количество узлов
- name: redeploy
id: 79
kind: action
action: redeploy
params:
- id: 272
code: resourceRealm
data_type: string
required: true
func: getAvailableResourceRealms
descr: Платформа для развертывания
sort: 10
- name: resume
id: 130
kind: instance
action: resume
params: []
- name: suspend
id: 131
kind: instance
action: suspend
params: []
+153
View File
@@ -0,0 +1,153 @@
name: gitea
service_id: 99
service_display_name: Gitea
service_short_name: gitea
service_man: Развертывает сервис контроля версий Gitea<br/>Зависит от сервиса postgresql который должен быть развернут заранее.
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: 82
kind: instance
action: create
params:
- id: 232
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "500"
maxvalue: 4000
minvalue: 300
descr: Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
man: Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
sort: 40
is_modifiable: true
- id: 233
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "512"
maxvalue: 8192
minvalue: 256
descr: Квота памяти пода (Указывается в Megabytes)
man: Квота памяти пода (Указывается в Megabytes)
sort: 50
is_modifiable: true
- id: 234
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 60
is_modifiable: true
- id: 235
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети
sort: 70
is_modifiable: true
- id: 237
code: domain
data_type: string
required: true
default: web01
regex: ^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$
unique_scope: provider
descr: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
man: Если будет указан FQDN, то происходят проверки DNS на валидность А-записи, или будет добавлено в зону resourceRealm
sort: 20
- id: 238
code: psqlUid
data_type: uuid
required: true
ref_svc_id: 90
descr: UUID Услуги k8sPgsql. Пользователя techGitea, базу данных gitea создаёт автоматически
man: UUID Услуги k8sPgsql. Пользователя techGitea, базу данных gitea создаёт автоматически
sort: 10
- name: delete
id: 83
kind: instance
action: delete
params: []
- name: modify
id: 91
kind: instance
action: modify
params:
- id: 259
code: resourceCPU
data_type: integer &gt; 0
required: true
default: "100"
maxvalue: 4000
minvalue: 500
descr: Квота ядра пода (Указывается в mili). 1000Mili = 1 Ядро
sort: 10
- id: 260
code: resourceMemory
data_type: integer &gt; 0
required: true
default: "128"
maxvalue: 8192
minvalue: 256
descr: Квота памяти пода (Указывается в Megabytes)
sort: 20
- id: 261
code: resourceDisk
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 999
minvalue: 1
descr: Квота диска (Указывается в GIGAbytes)
man: Квота диска (Указывается в GIGAbytes)
sort: 30
- id: 262
code: resourceInstances
data_type: integer &gt; 0
required: true
default: "1"
maxvalue: 7
minvalue: 1
descr: Количество узлов
man: Количество узлов в сети
sort: 40
- name: resume
id: 127
kind: instance
action: resume
params: []
- name: suspend
id: 126
kind: instance
action: suspend
params: []
+8
View File
@@ -0,0 +1,8 @@
package resources_yaml
import "embed"
// Files embeds unified service YAML specs for provider runtime lookup.
//
//go:embed *.yaml
var Files embed.FS