- 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/... → стенд по умолчанию
165 lines
9.4 KiB
YAML
165 lines
9.4 KiB
YAML
name: gitea
|
||
service_id: 99
|
||
service_display_name: Gitea
|
||
service_short_name: gitea
|
||
service_man: '# Инструкция по развертыванию Gitea через платформу<br/><br/>---<br/>## 1. Общая информация<br/>Gitea — это лёгкий, быстрый и самодостаточный сервис хостинга Git-репозиториев с веб-интерфейсом.<br/>Позволяет
|
||
создавать и управлять репозиториями, организациями, командами, а также настраивать CI/CD через интеграции.<br/>Развёртывание полностью автоматизировано платформой.<br/><br/>## Доступные операции<br/>-
|
||
**create** — Создание сервиса Gitea<br/>- **delete** — Удаление сервиса Gitea<br/>- **modify** — Модификация сервиса Gitea<br/>- **suspend** — Остановка сервиса Gitea<br/>- **resume** —
|
||
Запуск сервиса Gitea<br/><br/>---<br/>## 2. Параметры развертывания<br/>Ниже перечислены параметры, которые необходимо указать при создании ресурса Gitea:<br/><br/>* **Платформа для развертывания:**<br/> Платформа
|
||
для развертывания (среда, в которой будет развёрнут сервис). Пример: `k8s-3.ext.nubes.ru`.<br/><br/>* **Количество узлов в сети:**<br/> Количество реплик подов Gitea. Пример: `1`<br/><br/>* **Квота (megabyte)
|
||
памяти пода:**<br/> Квота памяти пода в мегабайтах. Пример: `1024`<br/><br/>* **Квота (millicore) ядра пода:**<br/> Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: `500`<br/><br/>* **Размер
|
||
(gigabyte) диска для базы данных:**<br/> Размер PVC для хранения репозиториев и данных Gitea в гигабайтах. Пример: `10`<br/><br/>* **FQDN / Домен:**<br/> Доменное имя, по которому будет доступен сервис.
|
||
Пример: `git.example.com`<br/><br/>* **Инстанс услуги PostgreSQL:**<br/> UUID услуги k8sPgsql, в которой будет создана база данных `gitea` и пользователь `techgitea`.<br/><br/>* **Дополнительные параметры
|
||
сервера (iniServerParams):**<br/> JSON-объект с дополнительными параметрами секции `[server]` в `app.ini`. Пример:<br/> ```json<br/> {"MAX_CONTENT_LENGTH": "524288000"}<br/> ```<br/><br/>* **Дополнительные
|
||
annotations для Ingress (ingressExtraAnnotations):**<br/> JSON-объект с дополнительными annotations для Ingress-контроллера. Пример:<br/> ```json<br/> {"nginx.ingress.kubernetes.io/proxy-body-size":
|
||
"500m"}<br/> ```<br/><br/>---<br/>## 3. Особенности подключения и работы с репозиториями<br/><br/>### 3.1. Доступ только по HTTPS<br/>Сервис развёртывается с **rootless-образом** Gitea. SSH-сервер внутри
|
||
и он **доступен только внутри кластера Kubernetes**.<br/><br/>**Внешний доступ к репозиториям осуществляется исключительно по HTTPS через Ingress.**<br/><br/>```bash<br/># Пример клонирования<br/>https://<домен>/<пользователь>/<репозиторий>.git<br/>```<br/><br/>###
|
||
3.2. Настройка git для передачи логина и пароля<br/>Для работы с приватными репозиториями через HTTPS необходимо передать учётные данные. Рекомендуется использовать один из следующих способов:<br/><br/>**Встроить
|
||
креды в URL remote**<br/>```bash<br/>git remote set-url origin https://<логин>:<пароль>@<домен>/<пользователь>/<репозиторий>.git<br/>```<br/>> **Важно:** Логин и пароль администратора создаются автоматически
|
||
при развертывании и хранятся в Vault.<br/><br/>### 3.3. Работа с большими файлами<br/>По умолчанию `MAX_CONTENT_LENGTH` установлен в **500 МБ**, а Ingress пропускает pack-файлы до **500 МБ**.<br/><br/>Если
|
||
необходимо запушить файлы близкие к лимиту, увеличьте HTTP-буфер git на стороне клиента:<br/>```bash<br/>git config http.postBuffer 524288000<br/>```<br/><br/>Для файлов **более 500 МБ** рекомендуется
|
||
использовать **Git LFS**.<br/><br/>---<br/>## 4. Выходные параметры<br/>После успешного развертывания ресурса Gitea платформа возвращает ряд параметров.<br/><br/>Ключевым из них является:<br/><br/>**connectionUrl**<br/>Это
|
||
внешний URL для доступа к веб-интерфейсу и Git-репозиториям по HTTPS. Пример:<br/>```<br/>https://git.example.com<br/>```<br/><br/>**internalConnect**<br/>Внутренний эндпоинт для подключения к PostgreSQL
|
||
из других сервисов внутри кластера.<br/><br/>---<br/>## 5. Дополнительная информация<br/>- База данных `gitea` и пользователь `techgitea` создаются автоматически в указанной услуге PostgreSQL.<br/>- DNS-запись
|
||
и TLS-сертификат (Let''s Encrypt) настраиваются автоматически на основе указанного домена.<br/>- Для изменения параметров сервера Gitea (`app.ini`) используйте операцию **modify** с полем `iniServerParams`.<br/>-
|
||
Для добавления дополнительных Ingress-annotations используйте операцию **modify** с полем `ingressExtraAnnotations`.<br/>---'
|
||
lifecycle:
|
||
suspendOnDestroyDefault: true
|
||
adoptExistingOnCreateDefault: false
|
||
operations:
|
||
- svcOperationId: 82
|
||
operation: create
|
||
kind: instance
|
||
action: create
|
||
- svcOperationId: 83
|
||
operation: delete
|
||
kind: instance
|
||
action: delete
|
||
- svcOperationId: 91
|
||
operation: modify
|
||
kind: instance
|
||
action: modify
|
||
- svcOperationId: 127
|
||
operation: resume
|
||
kind: instance
|
||
action: resume
|
||
- svcOperationId: 126
|
||
operation: suspend
|
||
kind: instance
|
||
action: suspend
|
||
stateOut: {}
|
||
cfsParams:
|
||
- svcOperationCfsParamId: 232
|
||
svcOperationCfsParam: resourceCPU
|
||
dataType: integer > 0
|
||
isRequired: true
|
||
defaultValue: '500'
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 233
|
||
svcOperationCfsParam: resourceMemory
|
||
dataType: integer > 0
|
||
isRequired: true
|
||
defaultValue: '512'
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 234
|
||
svcOperationCfsParam: resourceDisk
|
||
dataType: integer > 0
|
||
isRequired: true
|
||
defaultValue: '1'
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 235
|
||
svcOperationCfsParam: resourceInstances
|
||
dataType: integer > 0
|
||
isRequired: true
|
||
defaultValue: '1'
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 237
|
||
svcOperationCfsParam: domain
|
||
dataType: string
|
||
isRequired: true
|
||
defaultValue: gitea-1
|
||
isModifiable: false
|
||
- svcOperationCfsParamId: 238
|
||
svcOperationCfsParam: psqlUid
|
||
dataType: uuid
|
||
isRequired: true
|
||
defaultValue: ''
|
||
isModifiable: false
|
||
- svcOperationCfsParamId: 818
|
||
svcOperationCfsParam: ingressExtraAnnotations
|
||
dataType: map
|
||
isRequired: false
|
||
defaultValue: ''
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 821
|
||
svcOperationCfsParam: iniServerParams
|
||
dataType: map
|
||
isRequired: false
|
||
defaultValue: ''
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 259
|
||
svcOperationCfsParam: resourceCPU
|
||
dataType: integer > 0
|
||
isRequired: true
|
||
defaultValue: ''
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 260
|
||
svcOperationCfsParam: resourceMemory
|
||
dataType: integer > 0
|
||
isRequired: true
|
||
defaultValue: ''
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 261
|
||
svcOperationCfsParam: resourceDisk
|
||
dataType: integer > 0
|
||
isRequired: true
|
||
defaultValue: ''
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 262
|
||
svcOperationCfsParam: resourceInstances
|
||
dataType: integer > 0
|
||
isRequired: true
|
||
defaultValue: ''
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 819
|
||
svcOperationCfsParam: ingressExtraAnnotations
|
||
dataType: map
|
||
isRequired: false
|
||
defaultValue: ''
|
||
isModifiable: true
|
||
- svcOperationCfsParamId: 820
|
||
svcOperationCfsParam: iniServerParams
|
||
dataType: map
|
||
isRequired: false
|
||
defaultValue: ''
|
||
isModifiable: true
|
||
cfsParamsByOp:
|
||
82:
|
||
- 232
|
||
- 233
|
||
- 234
|
||
- 235
|
||
- 237
|
||
- 238
|
||
- 818
|
||
- 821
|
||
83: []
|
||
91:
|
||
- 259
|
||
- 260
|
||
- 261
|
||
- 262
|
||
- 819
|
||
- 820
|
||
127: []
|
||
126: []
|
||
stateParams:
|
||
resourceCPU: '500'
|
||
resourceMemory: '512'
|
||
resourceDisk: '1'
|
||
resourceInstances: '1'
|
||
domain: gitea-1
|
||
psqlUid: ''
|
||
ingressExtraAnnotations: ''
|
||
iniServerParams: ''
|