v0.5.0: 3 стенда — изоляция состояния, WSGI middleware, OpenAPI server selector, POLYGON_STANDS env

- loader.py: STANDS dict, get_services/get_ops_index per stand, POLYGON_STANDS env
- mock_state.py: get_state(stand_id) — ленивая инициализация
- app.py: StandMiddleware — перезапись PATH_INFO до Flask-роутинга
- Все роуты: LocalProxy(state), LocalProxy(SERVICES/OPS_INDEX) через g.stand_id
- openapi.py: _build_servers() — по одному серверу на стенд
- services/stand{1,2,3}/ — 37 YAML на стенд из STANDS/dev и STANDS/test
- tests/test_api.py: +4 multi-stand теста (изоляция, fail-next, OpenAPI servers)
- Обратная совместимость: /api/v1/svc/... → стенд по умолчанию
This commit is contained in:
2026-08-01 20:10:19 +04:00
parent 11f98738d0
commit 58d54f2a95
122 changed files with 25223 additions and 76 deletions
+855
View File
@@ -0,0 +1,855 @@
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/> "slave":
{<br/> "ip": "",<br/> "fqdn": "",<br/> "uuid": "",<br/> "isExternal": false<br/> },<br/> "master": {<br/> "ip": "<ip>",<br/> "fqdn": "write.<namespace>.<cluster-domain>",<br/> "uuid":
"<uuid>",<br/> "isExternal": 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/> "slave": "",<br/> "master":
{<br/> "slave": "",<br/> "master": {<br/> "slave": "",<br/> "master": "postgresqlk8s-master.<namespace>.svc.cluster.local"<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:
suspendOnDestroyDefault: true
adoptExistingOnCreateDefault: false
operations:
- svcOperationId: 19
operation: create
kind: instance
action: create
- svcOperationId: 264
operation: create_backup
kind: subresource
action: create
- svcOperationId: 245
operation: create_database
kind: subresource
action: create
- svcOperationId: 241
operation: create_user
kind: subresource
action: create
- svcOperationId: 20
operation: delete
kind: instance
action: delete
- svcOperationId: 246
operation: delete_database
kind: subresource
action: delete
- svcOperationId: 244
operation: delete_user
kind: subresource
action: delete
- svcOperationId: 48
operation: modify
kind: instance
action: modify
- svcOperationId: 263
operation: reconcile
kind: action
action: reconcile
- svcOperationId: 47
operation: recovery
kind: action
action: recovery
- svcOperationId: 54
operation: restart
kind: action
action: restart
- svcOperationId: 114
operation: resume
kind: instance
action: resume
- svcOperationId: 115
operation: suspend
kind: instance
action: suspend
stateOut:
backups: {}
databases: {}
users: {}
cfsParams:
- svcOperationCfsParamId: 788
svcOperationCfsParam: clusterConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
replicas:
dataType: integer > 0
defaultValue: '1'
isRequired: true
isModifiable: false
valueList:
- '1'
- '3'
- '5'
- '7'
disk:
dataType: integer > 0
defaultValue: '10'
isRequired: true
isModifiable: false
cpu:
dataType: integer > 0
defaultValue: '500'
isRequired: true
isModifiable: false
memory:
dataType: integer > 0
defaultValue: '512'
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 789
svcOperationCfsParam: startupConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: false
dataDescriptor:
resourceRealm:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- k8s-3-sandbox-nubes-ru
- k8s-4-sandbox-nubes-ru
- svcOperationCfsParamId: 790
svcOperationCfsParam: accessConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
masterIpSpace:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
masterAccessList:
dataType: json
defaultValue: '[]'
isRequired: true
isModifiable: false
slaveIpSpace:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
slaveAccessList:
dataType: json
defaultValue: '[]'
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 791
svcOperationCfsParam: postgresConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
version:
dataType: string
defaultValue: '17'
isRequired: true
isModifiable: false
valueList:
- '17'
- '16'
sslRequired:
dataType: boolean
defaultValue: 'true'
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
poolerMaster:
dataType: boolean
defaultValue: 'false'
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
poolerSlave:
dataType: boolean
defaultValue: 'false'
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
- svcOperationCfsParamId: 792
svcOperationCfsParam: postgresConf
dataType: array-map-fixed
isRequired: false
defaultValue: ''
isModifiable: true
dataDescriptor:
paramName:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- log_connections
- log_disconnections
paramValue:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 793
svcOperationCfsParam: backupConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
s3Uid:
dataType: uuid
defaultValue: ''
isRequired: true
isModifiable: false
retain:
dataType: integer > 0
defaultValue: '7'
isRequired: true
isModifiable: false
schedule:
dataType: string
defaultValue: 0 0 * * *
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 794
svcOperationCfsParam: autoscaleConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
enabled:
dataType: boolean
defaultValue: 'false'
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
schedule:
dataType: integer >= 0
defaultValue: '0'
isRequired: true
isModifiable: false
valueList:
- '0'
- '5'
- '12'
- '23'
quota:
dataType: integer > 0
defaultValue: '100'
isRequired: true
isModifiable: false
percent:
dataType: integer > 0
defaultValue: '10'
isRequired: true
isModifiable: false
valueList:
- '10'
- '15'
- '20'
- svcOperationCfsParamId: 1094
svcOperationCfsParam: mtlsConfiguration
dataType: map-fixed
isRequired: true
defaultValue: '{}'
isModifiable: true
dataDescriptor:
type:
dataType: string
defaultValue: 'off'
isRequired: true
isModifiable: false
valueList:
- 'off'
- manual
- auto
durationCA:
dataType: integer > 0
defaultValue: '175200'
isRequired: true
isModifiable: false
durationServer:
dataType: integer > 0
defaultValue: '87600'
isRequired: true
isModifiable: false
certCA:
dataType: string
defaultValue: ''
isRequired: false
isModifiable: false
certServer:
dataType: string
defaultValue: ''
isRequired: false
isModifiable: false
- svcOperationCfsParamId: 741
svcOperationCfsParam: dbName
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
- svcOperationCfsParamId: 742
svcOperationCfsParam: dbOwner
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
- svcOperationCfsParamId: 733
svcOperationCfsParam: username
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
- svcOperationCfsParamId: 740
svcOperationCfsParam: role
dataType: string
isRequired: true
defaultValue: ''
isModifiable: false
valueList:
- app_user
- ddl_user
- svcOperationCfsParamId: 1096
svcOperationCfsParam: mtlsAccess
dataType: boolean
isRequired: true
defaultValue: 'false'
isModifiable: false
valueList:
- 'false'
- 'true'
- svcOperationCfsParamId: 457
svcOperationCfsParam: deleteS3Bucket
dataType: boolean
isRequired: true
defaultValue: 'true'
isModifiable: true
valueList:
- 'false'
- 'true'
- svcOperationCfsParamId: 743
svcOperationCfsParam: dbName
dataType: string
isRequired: true
defaultValue: ''
isModifiable: true
- svcOperationCfsParamId: 739
svcOperationCfsParam: username
dataType: string
isRequired: true
defaultValue: ''
isModifiable: true
- svcOperationCfsParamId: 795
svcOperationCfsParam: clusterConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
cpu:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
memory:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
replicas:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- '1'
- '3'
- '5'
- '7'
disk:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 796
svcOperationCfsParam: accessConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
masterIpSpace:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
masterAccessList:
dataType: json
defaultValue: ''
isRequired: true
isModifiable: false
slaveIpSpace:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
slaveAccessList:
dataType: json
defaultValue: ''
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 797
svcOperationCfsParam: postgresConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
version:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- '17'
- '16'
sslRequired:
dataType: boolean
defaultValue: false,true
isRequired: true
isModifiable: false
poolerMaster:
dataType: boolean
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
poolerSlave:
dataType: boolean
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
- svcOperationCfsParamId: 798
svcOperationCfsParam: postgresConf
dataType: array-map-fixed
isRequired: false
defaultValue: ''
isModifiable: true
dataDescriptor:
paramName:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- log_connections
- log_disconnections
paramValue:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 799
svcOperationCfsParam: backupConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
schedule:
dataType: string
defaultValue: 0 0 * * *
isRequired: true
isModifiable: false
s3Uid:
dataType: uuid
defaultValue: ''
isRequired: true
isModifiable: false
retain:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 800
svcOperationCfsParam: autoscaleConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
enabled:
dataType: boolean
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
schedule:
dataType: integer >= 0
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- '0'
- '5'
- '12'
- '23'
quota:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
percent:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- '10'
- '15'
- '20'
- svcOperationCfsParamId: 1095
svcOperationCfsParam: mtlsConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
certCA:
dataType: string
defaultValue: ''
isRequired: false
isModifiable: false
certServer:
dataType: string
defaultValue: ''
isRequired: false
isModifiable: false
refreshCert:
dataType: boolean
defaultValue: 'false'
isRequired: false
isModifiable: false
valueList:
- 'false'
- 'true'
type:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- 'off'
- manual
- auto
durationCA:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
durationServer:
dataType: integer > 0
defaultValue: ''
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 801
svcOperationCfsParam: startupConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
resourceRealm:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- k8s-3-sandbox-nubes-ru
- k8s-4-sandbox-nubes-ru
recoveryPoint:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 802
svcOperationCfsParam: clusterConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
disk:
dataType: integer > 0
defaultValue: '10'
isRequired: true
isModifiable: false
cpu:
dataType: integer > 0
defaultValue: '500'
isRequired: true
isModifiable: false
memory:
dataType: integer > 0
defaultValue: '512'
isRequired: true
isModifiable: false
replicas:
dataType: integer > 0
defaultValue: '1'
isRequired: true
isModifiable: false
valueList:
- '1'
- '3'
- '5'
- '7'
- svcOperationCfsParamId: 803
svcOperationCfsParam: accessConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
masterIpSpace:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
masterAccessList:
dataType: json
defaultValue: '[]'
isRequired: true
isModifiable: false
slaveIpSpace:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
slaveAccessList:
dataType: json
defaultValue: '[]'
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 804
svcOperationCfsParam: postgresConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
version:
dataType: string
defaultValue: '17'
isRequired: true
isModifiable: false
valueList:
- '17'
- '16'
sslRequired:
dataType: boolean
defaultValue: 'true'
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
poolerMaster:
dataType: boolean
defaultValue: 'false'
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
poolerSlave:
dataType: boolean
defaultValue: 'false'
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
- svcOperationCfsParamId: 805
svcOperationCfsParam: postgresConf
dataType: array-map-fixed
isRequired: false
defaultValue: ''
isModifiable: true
dataDescriptor:
paramName:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
valueList:
- log_connections
- log_disconnections
paramValue:
dataType: string
defaultValue: ''
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 806
svcOperationCfsParam: backupConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
s3Uid:
dataType: uuid
defaultValue: ''
isRequired: true
isModifiable: false
retain:
dataType: integer > 0
defaultValue: '7'
isRequired: true
isModifiable: false
schedule:
dataType: string
defaultValue: 0 0 * * *
isRequired: true
isModifiable: false
- svcOperationCfsParamId: 807
svcOperationCfsParam: autoscaleConfiguration
dataType: map-fixed
isRequired: true
defaultValue: ''
isModifiable: true
dataDescriptor:
schedule:
dataType: integer >= 0
defaultValue: '0'
isRequired: true
isModifiable: false
valueList:
- '0'
- '5'
- '12'
- '23'
quota:
dataType: integer > 0
defaultValue: '100'
isRequired: true
isModifiable: false
percent:
dataType: integer > 0
defaultValue: '10'
isRequired: true
isModifiable: false
valueList:
- '10'
- '15'
- '20'
enabled:
dataType: boolean
defaultValue: 'false'
isRequired: true
isModifiable: false
valueList:
- 'false'
- 'true'
cfsParamsByOp:
19:
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 1094
264: []
245:
- 741
- 742
241:
- 733
- 740
- 1096
20:
- 457
246:
- 743
244:
- 739
48:
- 795
- 796
- 797
- 798
- 799
- 800
- 1095
263: []
47:
- 801
- 802
- 803
- 804
- 805
- 806
- 807
54: []
114: []
115: []
stateParams:
clusterConfiguration: '{"replicas": 1, "disk": 10, "cpu": 500, "memory": 512}'
startupConfiguration: '{"resourceRealm": ""}'
accessConfiguration: '{"masterIpSpace": "", "masterAccessList": "[]", "slaveIpSpace": "", "slaveAccessList": "[]"}'
postgresConfiguration: '{"version": "17", "sslRequired": true, "poolerMaster": false, "poolerSlave": false}'
postgresConf: '{"paramName": "", "paramValue": ""}'
backupConfiguration: '{"s3Uid": "", "retain": 7, "schedule": "0 0 * * *"}'
autoscaleConfiguration: '{"enabled": false, "schedule": 0, "quota": 100, "percent": 10}'
mtlsConfiguration: '{"type": "off", "durationCA": 175200, "durationServer": 87600, "certCA": "", "certServer": ""}'