Compare commits
No commits in common. "b16000b75d067b22ac13a4fe73fc5d543c24f52c" and "38bf5c91caa476c1254c28584bb697150454d34d" have entirely different histories.
b16000b75d
...
38bf5c91ca
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.idea
|
||||||
|
.claude
|
||||||
|
CLAUDE.md
|
||||||
|
.env
|
||||||
462
README.md
Normal file
462
README.md
Normal file
@ -0,0 +1,462 @@
|
|||||||
|
# FluxCD v2 Monorepooo
|
||||||
|
|
||||||
|
Репозиторий Infrastructure as Code, управляемый [FluxCD v2](https://fluxcd.io/) с использованием Kustomize-оверлеев и Helm-релизов.
|
||||||
|
|
||||||
|
## Карта инфраструктуры и межсервисных маршрутов
|
||||||
|
|
||||||
|
Диаграмма ниже показывает инфраструктурные компоненты кластера, их зависимости и типовые маршруты вызовов между бизнес-сервисами.
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
%% ===== Внешний контур =====
|
||||||
|
User([👤 Пользователь<br/>Web / Mobile]):::ext
|
||||||
|
Admin([🛡 Администратор<br/>kubectl / flux]):::ext
|
||||||
|
LE([🔐 Let's Encrypt<br/>ACME v2]):::ext
|
||||||
|
GitRepo([📦 Git Repository<br/>FluxCD source]):::ext
|
||||||
|
OCI([🐳 OCI Registry<br/>cr.yandex]):::ext
|
||||||
|
|
||||||
|
%% ===== GitOps =====
|
||||||
|
subgraph GITOPS["⚙️ GitOps Control Plane"]
|
||||||
|
direction TB
|
||||||
|
FluxSource[source-controller]:::flux
|
||||||
|
FluxKust[kustomize-controller]:::flux
|
||||||
|
FluxHelm[helm-controller]:::flux
|
||||||
|
FluxNotif[notification-controller]:::flux
|
||||||
|
FluxSource --> FluxKust
|
||||||
|
FluxSource --> FluxHelm
|
||||||
|
FluxKust --> FluxNotif
|
||||||
|
FluxHelm --> FluxNotif
|
||||||
|
end
|
||||||
|
|
||||||
|
%% ===== Edge / Service Mesh =====
|
||||||
|
subgraph EDGE["🌐 Edge & Service Mesh — istio-system"]
|
||||||
|
direction TB
|
||||||
|
Gateway["Istio Gateway<br/>:443 / :80<br/>LoadBalancer"]:::mesh
|
||||||
|
Pilot["istiod / Pilot<br/>xDS :15010/:15012"]:::mesh
|
||||||
|
Base[Istio Base<br/>CRDs + RBAC]:::mesh
|
||||||
|
Cert["cert-manager<br/>v1.x"]:::mesh
|
||||||
|
IssuerProd[ClusterIssuer<br/>letsencrypt-prod]:::mesh
|
||||||
|
IssuerIstio[ClusterIssuer<br/>letsencrypt-istio]:::mesh
|
||||||
|
Pilot -->|sidecar inject| Gateway
|
||||||
|
Base --> Pilot
|
||||||
|
Cert --> IssuerProd
|
||||||
|
Cert --> IssuerIstio
|
||||||
|
IssuerIstio -. TLS cert .-> Gateway
|
||||||
|
end
|
||||||
|
|
||||||
|
%% ===== Платформа =====
|
||||||
|
subgraph PLATFORM["🛠 Платформа"]
|
||||||
|
direction TB
|
||||||
|
Dashboard["K8s Dashboard<br/>UI :8443"]:::platform
|
||||||
|
LPP["local-path-provisioner<br/>StorageClass: local-path"]:::platform
|
||||||
|
Vault["HashiCorp Vault<br/>:8200 KV/Transit"]:::platform
|
||||||
|
S3Proxy["S3 Proxy<br/>S3 API gateway"]:::platform
|
||||||
|
end
|
||||||
|
|
||||||
|
%% ===== Identity =====
|
||||||
|
subgraph IDENTITY["🪪 Identity & SSO"]
|
||||||
|
direction TB
|
||||||
|
Zitadel["Zitadel<br/>OIDC :8080"]:::identity
|
||||||
|
Keycloak["Keycloak<br/>OIDC/SAML :8080"]:::identity
|
||||||
|
OpenLDAP["OpenLDAP<br/>:389 / :636"]:::identity
|
||||||
|
Keycloak -- "LDAP federation" --> OpenLDAP
|
||||||
|
end
|
||||||
|
|
||||||
|
%% ===== Данные =====
|
||||||
|
subgraph DATA["🗄 Хранилища данных"]
|
||||||
|
direction TB
|
||||||
|
PG[("PostgreSQL<br/>:5432<br/>HA primary/replica")]:::data
|
||||||
|
Redis[("Redis<br/>:6379<br/>cache + pub/sub")]:::data
|
||||||
|
MinIO[("MinIO<br/>S3 :9000<br/>console :9001")]:::data
|
||||||
|
end
|
||||||
|
|
||||||
|
%% ===== Messaging =====
|
||||||
|
subgraph MSG["📨 Messaging"]
|
||||||
|
direction TB
|
||||||
|
Kafka[["Kafka<br/>:9092 / :9093 SASL<br/>3 brokers"]]:::msg
|
||||||
|
ZK[["ZooKeeper / KRaft<br/>:2181"]]:::msg
|
||||||
|
RMQ[["RabbitMQ<br/>:5672 / mgmt :15672"]]:::msg
|
||||||
|
Kafka --- ZK
|
||||||
|
end
|
||||||
|
|
||||||
|
%% ===== BPM =====
|
||||||
|
subgraph BPM["🔧 BPM"]
|
||||||
|
direction TB
|
||||||
|
Camunda["Camunda Platform<br/>REST :8080 / Tasklist"]:::app
|
||||||
|
Operate["Camunda Operate<br/>UI :8081"]:::app
|
||||||
|
end
|
||||||
|
|
||||||
|
%% ===== Бизнес-сервисы (каждый в своём namespace) =====
|
||||||
|
subgraph APPS["💼 Бизнес-сервисы — namespaces"]
|
||||||
|
direction LR
|
||||||
|
CI["ns: control-interface"]:::app
|
||||||
|
Django["ns: django"]:::app
|
||||||
|
EAV["ns: eav"]:::app
|
||||||
|
Workspaces["ns: workspaces"]:::app
|
||||||
|
Projects["ns: projects"]:::app
|
||||||
|
PM["ns: pm"]:::app
|
||||||
|
Contracts["ns: contracts"]:::app
|
||||||
|
Resources["ns: resources"]:::app
|
||||||
|
Subs["ns: subscriptions"]:::app
|
||||||
|
SysLog["ns: system-log"]:::app
|
||||||
|
MsgHub["ns: message-hub"]:::app
|
||||||
|
FaaS["ns: faas"]:::app
|
||||||
|
Flows["ns: flows"]:::app
|
||||||
|
Docs["ns: documentations"]:::app
|
||||||
|
DocLink["ns: document-link"]:::app
|
||||||
|
Attach["ns: attachments"]:::app
|
||||||
|
Transmittal["ns: transmittal"]:::app
|
||||||
|
CDE["ns: cde"]:::app
|
||||||
|
Drawings["ns: drawings"]:::app
|
||||||
|
BIM["ns: bim"]:::app
|
||||||
|
Stamp["ns: stamp-verification"]:::app
|
||||||
|
Inspect["ns: inspections"]:::app
|
||||||
|
Checklists["ns: checklists"]:::app
|
||||||
|
Remarks["ns: remarks"]:::app
|
||||||
|
Issues["ns: issues"]:::app
|
||||||
|
RFI["ns: rfi"]:::app
|
||||||
|
Reviews["ns: reviews"]:::app
|
||||||
|
Prescr["ns: prescriptions"]:::app
|
||||||
|
Compare["ns: comparisons"]:::app
|
||||||
|
Measure["ns: measurements"]:::app
|
||||||
|
Mapper["ns: mapper"]:::app
|
||||||
|
XSection["ns: cross-section"]:::app
|
||||||
|
Process["ns: processing"]:::app
|
||||||
|
Notes["ns: notes"]:::app
|
||||||
|
end
|
||||||
|
|
||||||
|
%% ===== GitOps потоки =====
|
||||||
|
Admin ==>|git push| GitRepo
|
||||||
|
GitRepo ==>|pull/poll| FluxSource
|
||||||
|
OCI ==>|OCI charts| FluxSource
|
||||||
|
FluxKust ==>|apply manifests| EDGE
|
||||||
|
FluxKust ==>|apply manifests| PLATFORM
|
||||||
|
FluxKust ==>|apply manifests| IDENTITY
|
||||||
|
FluxHelm ==>|HelmRelease| DATA
|
||||||
|
FluxHelm ==>|HelmRelease| MSG
|
||||||
|
FluxHelm ==>|HelmRelease| BPM
|
||||||
|
FluxHelm ==>|HelmRelease| APPS
|
||||||
|
|
||||||
|
%% ===== Внешний трафик =====
|
||||||
|
User ==>|HTTPS 443| Gateway
|
||||||
|
LE -. ACME HTTP-01 .-> Cert
|
||||||
|
Gateway ==>|VirtualService<br/>mTLS| CI
|
||||||
|
Gateway ==>|/api| Django
|
||||||
|
Gateway ==>|/bim| BIM
|
||||||
|
Gateway ==>|/cde| CDE
|
||||||
|
Gateway ==>|/docs| Docs
|
||||||
|
Gateway ==>|/pm| PM
|
||||||
|
Gateway ==>|VirtualService| Camunda
|
||||||
|
Gateway ==>|VirtualService| Operate
|
||||||
|
Gateway ==>|/auth| Keycloak
|
||||||
|
Gateway ==>|/oauth| Zitadel
|
||||||
|
Gateway ==>|/dashboard| Dashboard
|
||||||
|
Gateway ==>|/minio| MinIO
|
||||||
|
Admin -.->|kubectl| Dashboard
|
||||||
|
|
||||||
|
%% ===== Frontend → backend (через control-interface) =====
|
||||||
|
CI -- "API gateway" --> Django
|
||||||
|
CI -- "API gateway" --> PM
|
||||||
|
CI -- "API gateway" --> Projects
|
||||||
|
CI -- "API gateway" --> Workspaces
|
||||||
|
|
||||||
|
%% ===== Подключения к данным =====
|
||||||
|
Django -- "JDBC/ORM" --> PG
|
||||||
|
EAV -- "JDBC" --> PG
|
||||||
|
PM -- "JDBC" --> PG
|
||||||
|
Contracts -- "JDBC" --> PG
|
||||||
|
Resources -- "JDBC" --> PG
|
||||||
|
Projects -- "JDBC" --> PG
|
||||||
|
Workspaces -- "JDBC" --> PG
|
||||||
|
Subs -- "JDBC" --> PG
|
||||||
|
SysLog -- "JDBC" --> PG
|
||||||
|
Docs -- "JDBC" --> PG
|
||||||
|
DocLink -- "JDBC" --> PG
|
||||||
|
CDE -- "JDBC" --> PG
|
||||||
|
BIM -- "JDBC" --> PG
|
||||||
|
Drawings -- "JDBC" --> PG
|
||||||
|
Inspect -- "JDBC" --> PG
|
||||||
|
Checklists -- "JDBC" --> PG
|
||||||
|
Issues -- "JDBC" --> PG
|
||||||
|
Remarks -- "JDBC" --> PG
|
||||||
|
RFI -- "JDBC" --> PG
|
||||||
|
Reviews -- "JDBC" --> PG
|
||||||
|
Prescr -- "JDBC" --> PG
|
||||||
|
Compare -- "JDBC" --> PG
|
||||||
|
Measure -- "JDBC" --> PG
|
||||||
|
Mapper -- "JDBC" --> PG
|
||||||
|
XSection -- "JDBC" --> PG
|
||||||
|
Notes -- "JDBC" --> PG
|
||||||
|
Stamp -- "JDBC" --> PG
|
||||||
|
Transmittal -- "JDBC" --> PG
|
||||||
|
Camunda -- "JDBC" --> PG
|
||||||
|
Operate -- "JDBC" --> PG
|
||||||
|
Zitadel -- "JDBC" --> PG
|
||||||
|
Keycloak -- "JDBC" --> PG
|
||||||
|
|
||||||
|
%% ===== Redis (общий кэш / sessions) =====
|
||||||
|
Django -- "session/cache" --> Redis
|
||||||
|
CI -- "session" --> Redis
|
||||||
|
PM -- "cache" --> Redis
|
||||||
|
Workspaces -- "cache" --> Redis
|
||||||
|
Subs -- "pub/sub realtime" --> Redis
|
||||||
|
MsgHub -- "pub/sub" --> Redis
|
||||||
|
Flows -- "state" --> Redis
|
||||||
|
FaaS -- "queue" --> Redis
|
||||||
|
Camunda -- "cache" --> Redis
|
||||||
|
Keycloak -- "session" --> Redis
|
||||||
|
|
||||||
|
%% ===== S3 / объектное хранилище =====
|
||||||
|
Attach -- "PUT/GET" --> S3Proxy
|
||||||
|
Docs -- "filestream" --> S3Proxy
|
||||||
|
BIM -- "IFC/RVT" --> S3Proxy
|
||||||
|
Drawings -- "DWG/PDF" --> S3Proxy
|
||||||
|
CDE -- "files" --> S3Proxy
|
||||||
|
Compare -- "rendered diff" --> S3Proxy
|
||||||
|
Stamp -- "signed PDF" --> S3Proxy
|
||||||
|
Transmittal -- "bundles" --> S3Proxy
|
||||||
|
Process -- "raw + результаты" --> S3Proxy
|
||||||
|
Mapper -- "tiles" --> S3Proxy
|
||||||
|
Measure -- "snapshots" --> S3Proxy
|
||||||
|
XSection -- "профили" --> S3Proxy
|
||||||
|
S3Proxy -- "S3 API" --> MinIO
|
||||||
|
|
||||||
|
%% ===== Vault (secrets) =====
|
||||||
|
Django -. "kv" .-> Vault
|
||||||
|
Camunda -. "approle" .-> Vault
|
||||||
|
Keycloak -. "kv" .-> Vault
|
||||||
|
Zitadel -. "kv" .-> Vault
|
||||||
|
FaaS -. "approle" .-> Vault
|
||||||
|
Flows -. "approle" .-> Vault
|
||||||
|
|
||||||
|
%% ===== Storage / PVC =====
|
||||||
|
PG -.->|PVC| LPP
|
||||||
|
Redis -.->|PVC| LPP
|
||||||
|
Kafka -.->|PVC| LPP
|
||||||
|
ZK -.->|PVC| LPP
|
||||||
|
RMQ -.->|PVC| LPP
|
||||||
|
MinIO -.->|PVC| LPP
|
||||||
|
Vault -.->|PVC| LPP
|
||||||
|
|
||||||
|
%% ===== Kafka (event bus) =====
|
||||||
|
SysLog -- "consume audit.*" --> Kafka
|
||||||
|
MsgHub -- "produce notify.*" --> Kafka
|
||||||
|
Subs -- "consume notify.*" --> Kafka
|
||||||
|
Flows -- "produce/consume flows.*" --> Kafka
|
||||||
|
Camunda -- "produce bpm.events" --> Kafka
|
||||||
|
Operate -- "consume zeebe-records" --> Kafka
|
||||||
|
BIM -- "produce bim.processed" --> Kafka
|
||||||
|
Drawings -- "produce drawings.uploaded" --> Kafka
|
||||||
|
Process -- "consume processing.jobs" --> Kafka
|
||||||
|
Compare -- "consume drawings.uploaded" --> Kafka
|
||||||
|
Inspect -- "produce inspect.events" --> Kafka
|
||||||
|
Issues -- "consume inspect.events" --> Kafka
|
||||||
|
Remarks -- "produce remarks.events" --> Kafka
|
||||||
|
Reviews -- "consume remarks.events" --> Kafka
|
||||||
|
|
||||||
|
%% ===== RabbitMQ (work queues) =====
|
||||||
|
FaaS -- "consume tasks.*" --> RMQ
|
||||||
|
Flows -- "publish tasks.*" --> RMQ
|
||||||
|
Process -- "publish jobs" --> RMQ
|
||||||
|
Mapper -- "consume tile.jobs" --> RMQ
|
||||||
|
XSection -- "consume xs.jobs" --> RMQ
|
||||||
|
Stamp -- "consume sign.jobs" --> RMQ
|
||||||
|
Camunda -- "consume bpm.tasks" --> RMQ
|
||||||
|
|
||||||
|
%% ===== Межсервисные REST маршруты =====
|
||||||
|
PM -- "REST" --> Projects
|
||||||
|
PM -- "REST" --> Contracts
|
||||||
|
PM -- "REST" --> Resources
|
||||||
|
Projects -- "REST" --> Workspaces
|
||||||
|
Contracts -- "REST" --> Resources
|
||||||
|
Inspect -- "REST" --> Checklists
|
||||||
|
Inspect -- "REST" --> Issues
|
||||||
|
Issues -- "REST" --> Remarks
|
||||||
|
Reviews -- "REST" --> RFI
|
||||||
|
Reviews -- "REST" --> Prescr
|
||||||
|
RFI -- "REST" --> DocLink
|
||||||
|
DocLink --> Docs
|
||||||
|
DocLink --> CDE
|
||||||
|
CDE -- "REST" --> Docs
|
||||||
|
CDE -- "REST" --> Drawings
|
||||||
|
CDE -- "REST" --> BIM
|
||||||
|
Transmittal -- "REST" --> CDE
|
||||||
|
Transmittal -- "REST" --> Docs
|
||||||
|
Drawings -- "REST" --> Compare
|
||||||
|
Drawings -- "REST" --> Stamp
|
||||||
|
Measure -- "REST" --> Mapper
|
||||||
|
Mapper -- "REST" --> XSection
|
||||||
|
XSection --> Process
|
||||||
|
BIM -- "REST" --> Process
|
||||||
|
Notes -- "REST" --> DocLink
|
||||||
|
Flows -- "trigger" --> FaaS
|
||||||
|
Flows -- "start" --> Camunda
|
||||||
|
Camunda -- "callback" --> Flows
|
||||||
|
EAV -- "schemas" --> Django
|
||||||
|
MsgHub -- "deliver email/push" --> Subs
|
||||||
|
|
||||||
|
%% ===== AuthN / AuthZ =====
|
||||||
|
Django -. "OIDC validate" .-> Keycloak
|
||||||
|
CI -. "OIDC login" .-> Keycloak
|
||||||
|
PM -. "JWT" .-> Keycloak
|
||||||
|
Camunda -. "JWT" .-> Zitadel
|
||||||
|
Operate -. "OIDC" .-> Zitadel
|
||||||
|
Dashboard -. "OIDC" .-> Keycloak
|
||||||
|
BIM -. "JWT" .-> Keycloak
|
||||||
|
CDE -. "JWT" .-> Keycloak
|
||||||
|
Docs -. "JWT" .-> Keycloak
|
||||||
|
|
||||||
|
%% ===== Service mesh sidecar metrics =====
|
||||||
|
CI -. "envoy" .-> Pilot
|
||||||
|
Django -. "envoy" .-> Pilot
|
||||||
|
Camunda -. "envoy" .-> Pilot
|
||||||
|
BIM -. "envoy" .-> Pilot
|
||||||
|
Flows -. "envoy" .-> Pilot
|
||||||
|
|
||||||
|
|
||||||
|
%% ===== Стили =====
|
||||||
|
classDef ext fill:#1f2937,stroke:#9ca3af,stroke-width:2px,color:#f9fafb
|
||||||
|
classDef flux fill:#6366f1,stroke:#3730a3,stroke-width:2px,color:#fff
|
||||||
|
classDef mesh fill:#7c3aed,stroke:#4c1d95,stroke-width:2px,color:#fff
|
||||||
|
classDef platform fill:#0ea5e9,stroke:#075985,stroke-width:2px,color:#fff
|
||||||
|
classDef identity fill:#f59e0b,stroke:#92400e,stroke-width:2px,color:#fff
|
||||||
|
classDef data fill:#10b981,stroke:#065f46,stroke-width:2px,color:#fff
|
||||||
|
classDef msg fill:#ef4444,stroke:#991b1b,stroke-width:2px,color:#fff
|
||||||
|
classDef app fill:#ec4899,stroke:#9d174d,stroke-width:2px,color:#fff
|
||||||
|
|
||||||
|
style GITOPS fill:#e0e7ff,stroke:#6366f1,stroke-width:2px
|
||||||
|
style EDGE fill:#ede9fe,stroke:#7c3aed,stroke-width:2px
|
||||||
|
style PLATFORM fill:#e0f2fe,stroke:#0ea5e9,stroke-width:2px
|
||||||
|
style IDENTITY fill:#fef3c7,stroke:#f59e0b,stroke-width:2px
|
||||||
|
style DATA fill:#d1fae5,stroke:#10b981,stroke-width:2px
|
||||||
|
style MSG fill:#fee2e2,stroke:#ef4444,stroke-width:2px
|
||||||
|
style BPM fill:#fce7f3,stroke:#ec4899,stroke-width:2px
|
||||||
|
style APPS fill:#fce7f3,stroke:#ec4899,stroke-width:2px
|
||||||
|
```
|
||||||
|
|
||||||
|
📂 **Подробные диаграммы по каждому бизнес-сервису:** [`docs/apps/`](./docs/apps/README.md)
|
||||||
|
|
||||||
|
**Легенда:**
|
||||||
|
- 🟪 **Edge / Mesh** — терминация TLS, маршрутизация и mTLS между сервисами (Istio + cert-manager)
|
||||||
|
- 🟦 **Платформа** — служебные компоненты (storage, secrets, S3 proxy, dashboard)
|
||||||
|
- 🟧 **Identity** — единый вход и федерация пользователей (Zitadel, Keycloak, OpenLDAP)
|
||||||
|
- 🟩 **Данные** — постоянные хранилища (PostgreSQL, Redis, MinIO)
|
||||||
|
- 🟥 **Messaging** — асинхронный обмен (Kafka, RabbitMQ)
|
||||||
|
- 🟪 **Бизнес-сервисы** — прикладная логика (Camunda, бизнес-приложения)
|
||||||
|
|
||||||
|
## Структура репозитория
|
||||||
|
|
||||||
|
```
|
||||||
|
├── clusters/ # Точка входа для каждого кластера (Flux читает отсюда)
|
||||||
|
│ └── contour/ # Кластер contour
|
||||||
|
│ ├── flux-system/ # Автогенерируется через `flux bootstrap` (не редактировать)
|
||||||
|
│ ├── helm-repositories.yaml # Определения HelmRepository
|
||||||
|
│ ├── infrastructure.yaml # Flux Kustomization → ./infrastructure
|
||||||
|
│ └── apps.yaml # Flux Kustomization → ./apps
|
||||||
|
│
|
||||||
|
├── infrastructure/ # Инфраструктурные компоненты
|
||||||
|
│ ├── kustomization.yaml # Список всех инфра-сервисов
|
||||||
|
│ └── example-infra/ # Пример инфра-компонента
|
||||||
|
│ ├── kustomization.yaml # Собирает base + patches
|
||||||
|
│ ├── base/ # Базовые манифесты (namespace, HelmRelease)
|
||||||
|
│ └── patches/ # Патчи поверх base
|
||||||
|
│
|
||||||
|
├── apps/ # Прикладные сервисы
|
||||||
|
│ ├── kustomization.yaml # Список всех приложений
|
||||||
|
│ └── example-app/ # Пример приложения
|
||||||
|
│ ├── kustomization.yaml # Собирает base + patches
|
||||||
|
│ ├── base/ # Базовые манифесты (Deployment, Service, ConfigMap)
|
||||||
|
│ └── patches/ # Патчи поверх base
|
||||||
|
```
|
||||||
|
|
||||||
|
## Как это работает
|
||||||
|
|
||||||
|
Flux отслеживает директорию `clusters/<имя-кластера>/`. Каждый кластер содержит два Flux Kustomization CRD верхнего уровня:
|
||||||
|
|
||||||
|
1. **infrastructure.yaml** — реконсилирует `./infrastructure`. Содержит HelmReleases и вспомогательные ресурсы.
|
||||||
|
2. **apps.yaml** — реконсилирует `./apps`. Содержит Deployments, Services и другие ресурсы приложений.
|
||||||
|
|
||||||
|
`apps` зависит от `infrastructure`, что гарантирует готовность инфраструктуры до деплоя приложений.
|
||||||
|
|
||||||
|
Каждый сервис (в `infrastructure/` или `apps/`) имеет собственную структуру:
|
||||||
|
- **base/** — базовые манифесты, общие для всех окружений
|
||||||
|
- **patches/** — патчи, применяемые поверх base
|
||||||
|
- **kustomization.yaml** — на уровне сервиса, собирает base + patches через Kustomize
|
||||||
|
|
||||||
|
## Начало работы
|
||||||
|
|
||||||
|
### Бутстрап Flux
|
||||||
|
|
||||||
|
```bash
|
||||||
|
flux bootstrap git \
|
||||||
|
--url=<URL_ВАШЕГО_РЕПОЗИТОРИЯ> \
|
||||||
|
--branch=master \
|
||||||
|
--path=clusters/contour
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проверка реконсиляции
|
||||||
|
|
||||||
|
```bash
|
||||||
|
flux get kustomizations
|
||||||
|
flux get helmreleases -A
|
||||||
|
flux events --watch
|
||||||
|
```
|
||||||
|
|
||||||
|
## Добавление нового инфраструктурного компонента
|
||||||
|
|
||||||
|
1. Создайте директорию с base и patches:
|
||||||
|
```
|
||||||
|
infrastructure/my-component/
|
||||||
|
├── kustomization.yaml # resources: [./base], patches: [patches/...]
|
||||||
|
├── base/
|
||||||
|
│ ├── kustomization.yaml
|
||||||
|
│ ├── namespace.yaml
|
||||||
|
│ └── helmrelease.yaml
|
||||||
|
└── patches/
|
||||||
|
└── values.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Зарегистрируйте в `infrastructure/kustomization.yaml`:
|
||||||
|
```yaml
|
||||||
|
resources:
|
||||||
|
- example-infra
|
||||||
|
- my-component # Добавьте эту строку
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Если нужен новый HelmRepository, добавьте его в `clusters/<кластер>/helm-repositories.yaml`.
|
||||||
|
|
||||||
|
## Добавление нового приложения
|
||||||
|
|
||||||
|
1. Создайте директорию с base и patches:
|
||||||
|
```
|
||||||
|
apps/my-app/
|
||||||
|
├── kustomization.yaml # resources: [./base], patches: [patches/...]
|
||||||
|
├── base/
|
||||||
|
│ ├── kustomization.yaml
|
||||||
|
│ ├── namespace.yaml
|
||||||
|
│ ├── deployment.yaml
|
||||||
|
│ └── service.yaml
|
||||||
|
└── patches/
|
||||||
|
└── replicas.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Зарегистрируйте в `apps/kustomization.yaml`:
|
||||||
|
```yaml
|
||||||
|
resources:
|
||||||
|
- example-app
|
||||||
|
- my-app # Добавьте эту строку
|
||||||
|
```
|
||||||
|
|
||||||
|
## Добавление нового кластера
|
||||||
|
|
||||||
|
1. Создайте точку входа `clusters/<имя>/` с `infrastructure.yaml`, `apps.yaml` и `helm-repositories.yaml`
|
||||||
|
2. Выполните бутстрап Flux с `--path=clusters/<имя>`
|
||||||
|
|
||||||
|
## Справочник API-версий
|
||||||
|
|
||||||
|
| Ресурс | apiVersion |
|
||||||
|
|------------------|-----------------------------------------|
|
||||||
|
| Kustomization | `kustomize.toolkit.fluxcd.io/v1` |
|
||||||
|
| GitRepository | `source.toolkit.fluxcd.io/v1` |
|
||||||
|
| HelmRepository | `source.toolkit.fluxcd.io/v1` |
|
||||||
|
| HelmRelease | `helm.toolkit.fluxcd.io/v2` |
|
||||||
110
apps/attachments/base/helmrelease.yaml
Normal file
110
apps/attachments/base/helmrelease.yaml
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
---
|
||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: attachments
|
||||||
|
namespace: attachments
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: universal-chart
|
||||||
|
version: "0.1.9"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
interval: 10m
|
||||||
|
install:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
upgrade:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
env: _default
|
||||||
|
services:
|
||||||
|
attachments:
|
||||||
|
enabled: true
|
||||||
|
serviceAccount:
|
||||||
|
enabled:
|
||||||
|
_default: true
|
||||||
|
name:
|
||||||
|
_default: attachments-vault
|
||||||
|
deployment:
|
||||||
|
enabled: true
|
||||||
|
name:
|
||||||
|
_default: attachments
|
||||||
|
replicaCount:
|
||||||
|
_default: 1
|
||||||
|
port:
|
||||||
|
_default: 8000
|
||||||
|
command:
|
||||||
|
_default: ["/bin/bash", "-ec"]
|
||||||
|
args:
|
||||||
|
_default:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/attachments-db ] && . /vault/secrets/attachments-db
|
||||||
|
[ -f /vault/secrets/attachments-s3 ] && . /vault/secrets/attachments-s3
|
||||||
|
set +a
|
||||||
|
exec /opt/attachments/entrypoint.sh
|
||||||
|
image:
|
||||||
|
name:
|
||||||
|
_default: cr.yandex/crp3ccidau046kdj8g9q/attachments:feature_6238c882
|
||||||
|
pullPolicy:
|
||||||
|
_default: IfNotPresent
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
name:
|
||||||
|
_default: attachments-service
|
||||||
|
type:
|
||||||
|
_default: ClusterIP
|
||||||
|
port:
|
||||||
|
_default: 8000
|
||||||
|
targetPort:
|
||||||
|
_default: 8000
|
||||||
|
portName:
|
||||||
|
_default: http
|
||||||
|
imagePullSecrets:
|
||||||
|
enabled:
|
||||||
|
_default: true
|
||||||
|
name:
|
||||||
|
_default: regcred
|
||||||
|
envs:
|
||||||
|
- name: POSTGRES_POOL_SIZE
|
||||||
|
value:
|
||||||
|
_default: "10"
|
||||||
|
- name: API_ADDRESS
|
||||||
|
value:
|
||||||
|
_default: 0.0.0.0:8000
|
||||||
|
podAnnotations:
|
||||||
|
_default:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "4317,4318,9411,8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: attachments
|
||||||
|
vault.hashicorp.com/agent-inject-secret-attachments-db: secrets/data/postgresql/apps/attachments
|
||||||
|
vault.hashicorp.com/agent-inject-template-attachments-db: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/attachments" -}}
|
||||||
|
DATABASE_HOST=postgresql.attachments.svc.cluster.local
|
||||||
|
DATABASE_PORT=5432
|
||||||
|
DATABASE_NAME=attachments_db
|
||||||
|
DATABASE_USER={{ index .Data.data "username" }}
|
||||||
|
DATABASE_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
DATABASE_SSL_MODE=disable
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-attachments-s3: secrets/data/minio/apps/attachments
|
||||||
|
vault.hashicorp.com/agent-inject-template-attachments-s3: |-
|
||||||
|
{{- with secret "secrets/data/minio/apps/attachments" -}}
|
||||||
|
YANDEX_S3_ENDPOINT_URL=minio.minio:9000
|
||||||
|
YANDEX_S3_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
|
||||||
|
YANDEX_S3_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
|
||||||
|
YANDEX_S3_USE_SSL=false
|
||||||
|
YANDEX_S3_REGION=ru-central
|
||||||
|
YANDEX_S3_VERIFY=false
|
||||||
|
BUCKET_NAME=attachments
|
||||||
|
{{- end -}}
|
||||||
6
apps/attachments/base/kustomization.yaml
Normal file
6
apps/attachments/base/kustomization.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: attachments
|
||||||
|
resources:
|
||||||
|
- helmrelease.yaml
|
||||||
11
apps/attachments/yc-k8s-test/kustomization.yaml
Normal file
11
apps/attachments/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
- postgresql.yaml
|
||||||
|
patches: []
|
||||||
|
# - path: replicas.yaml
|
||||||
|
# target:
|
||||||
|
# kind: HelmRelease
|
||||||
|
# name: attachments
|
||||||
121
apps/attachments/yc-k8s-test/postgresql.yaml
Normal file
121
apps/attachments/yc-k8s-test/postgresql.yaml
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: postgresql
|
||||||
|
namespace: attachments
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
timeout: 2h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: postgresql-contour
|
||||||
|
version: "17.0.7"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
|
||||||
|
install:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
defaultStorageClass: local-path
|
||||||
|
postgresql:
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
image:
|
||||||
|
registry: cr.yandex/crp3ccidau046kdj8g9q
|
||||||
|
repository: contour/postgresql
|
||||||
|
tag: 17.0.7
|
||||||
|
pullPolicy: Always
|
||||||
|
metrics:
|
||||||
|
enabled: false
|
||||||
|
prometheusRule:
|
||||||
|
enabled: false
|
||||||
|
primary:
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
persistence:
|
||||||
|
storageClass: local-path
|
||||||
|
size: 20Gi
|
||||||
|
customLivenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customReadinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customStartupProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
nodeSelector:
|
||||||
|
dedicated: db
|
||||||
|
tolerations:
|
||||||
|
- key: dedicated
|
||||||
|
operator: Equal
|
||||||
|
value: db
|
||||||
|
effect: NoSchedule
|
||||||
|
contour:
|
||||||
|
enabled: true
|
||||||
|
adminUser: "postgres"
|
||||||
|
sharedPreloadLibraries: "pg_stat_statements"
|
||||||
|
vault:
|
||||||
|
enabled: true
|
||||||
|
role: postgresql
|
||||||
|
authPath: auth/kubernetes
|
||||||
|
secretPath: secrets/data/postgresql/admin
|
||||||
|
secretKey: postgres-password
|
||||||
|
usersSecretPath: secrets/data/postgresql/users
|
||||||
|
databases:
|
||||||
|
- name: attachments_db
|
||||||
|
user: attachments
|
||||||
|
passwordKey: attachments
|
||||||
|
extensions: []
|
||||||
|
restoreFromDump: false
|
||||||
|
s3-proxy:
|
||||||
|
endpointUrl: "s3-proxy-service.postgresql.svc.cluster.local"
|
||||||
13
apps/attachments/yc-k8s-test/replicas.yaml
Normal file
13
apps/attachments/yc-k8s-test/replicas.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: attachments
|
||||||
|
namespace: attachments
|
||||||
|
spec:
|
||||||
|
values:
|
||||||
|
services:
|
||||||
|
attachments:
|
||||||
|
deployment:
|
||||||
|
replicaCount:
|
||||||
|
_default: 2
|
||||||
108
apps/bim/base/backend-deployment.yaml
Normal file
108
apps/bim/base/backend-deployment.yaml
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
namespace: bim
|
||||||
|
labels:
|
||||||
|
app: backend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: backend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: backend
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: bim
|
||||||
|
vault.hashicorp.com/agent-inject-secret-bim-postgresql: secrets/data/postgresql/apps/bim
|
||||||
|
vault.hashicorp.com/agent-inject-template-bim-postgresql: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/bim" -}}
|
||||||
|
POSTGRES_ADDRESS=postgresql.bim.svc.cluster.local
|
||||||
|
POSTGRES_ADDRESS_2=postgresql.bim.svc.cluster.local
|
||||||
|
POSTGRES_ADDRESS_3=postgresql.bim.svc.cluster.local
|
||||||
|
POSTGRES_ADDRESS_4=postgresql.bim.svc.cluster.local
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_PORT_2=5432
|
||||||
|
POSTGRES_PORT_3=5432
|
||||||
|
POSTGRES_PORT_4=5432
|
||||||
|
POSTGRES_DB=bim_db
|
||||||
|
POSTGRES_DB_2=bim_db
|
||||||
|
POSTGRES_DB_3=bim_db
|
||||||
|
POSTGRES_DB_4=bim_db
|
||||||
|
POSTGRES_USER={{ index .Data.data "username" }}
|
||||||
|
POSTGRES_USER_2={{ index .Data.data "username" }}
|
||||||
|
POSTGRES_USER_3={{ index .Data.data "username" }}
|
||||||
|
POSTGRES_USER_4={{ index .Data.data "username" }}
|
||||||
|
POSTGRES_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
POSTGRES_PASSWORD_2={{ index .Data.data "password" }}
|
||||||
|
POSTGRES_PASSWORD_3={{ index .Data.data "password" }}
|
||||||
|
POSTGRES_PASSWORD_4={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: bim-vault
|
||||||
|
containers:
|
||||||
|
- name: backend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/bim-api:contour_3d704fef
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/sh", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/bim-postgresql ] && . /vault/secrets/bim-postgresql
|
||||||
|
set +a
|
||||||
|
exec ./httpserver
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: LAST_MASTER_BIM
|
||||||
|
value: "100000"
|
||||||
|
- name: LAST_MASTER_BIM_V3
|
||||||
|
value: "100000"
|
||||||
|
- name: DB_CERT_PATH_4
|
||||||
|
value: /root/yandex_pg.pem
|
||||||
|
- name: DB_CERT_PATH_3
|
||||||
|
value: /root/yandex_pg.pem
|
||||||
|
- name: DB_CERT_PATH_2
|
||||||
|
value: /root/yandex_pg.pem
|
||||||
|
- name: LAST_SLAVE_1_BIM
|
||||||
|
value: "1000000"
|
||||||
|
- name: POSTGRES_POOL_SIZE
|
||||||
|
value: "30"
|
||||||
|
- name: API_ADDRESS
|
||||||
|
value: 0.0.0.0:8000
|
||||||
|
- name: DJANGO_HOST
|
||||||
|
value: http://backend.django.svc.cluster.local:8000
|
||||||
|
- name: ENABLE_SQL_QUERY
|
||||||
|
value: "0"
|
||||||
|
- name: ENABLE_SSL
|
||||||
|
value: "0"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 25m
|
||||||
|
memory: 100Mi
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ping
|
||||||
|
port: 8000
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 60
|
||||||
|
failureThreshold: 10
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ping
|
||||||
|
port: 8000
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
|
failureThreshold: 20
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/bim/base/backend-service.yaml
Normal file
15
apps/bim/base/backend-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: backend-svc
|
||||||
|
namespace: bim
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: backend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8000
|
||||||
|
protocol: TCP
|
||||||
9
apps/bim/base/kustomization.yaml
Normal file
9
apps/bim/base/kustomization.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: bim
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- serviceaccount.yaml
|
||||||
|
- backend-deployment.yaml
|
||||||
|
- backend-service.yaml
|
||||||
7
apps/bim/base/namespace.yaml
Normal file
7
apps/bim/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: bim
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
5
apps/bim/base/serviceaccount.yaml
Normal file
5
apps/bim/base/serviceaccount.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: bim-vault
|
||||||
|
namespace: bim
|
||||||
11
apps/bim/yc-k8s-test/kustomization.yaml
Normal file
11
apps/bim/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
- postgresql.yaml
|
||||||
|
patches:
|
||||||
|
- path: replicas.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
name: backend
|
||||||
126
apps/bim/yc-k8s-test/postgresql.yaml
Normal file
126
apps/bim/yc-k8s-test/postgresql.yaml
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: postgresql
|
||||||
|
namespace: bim
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
timeout: 2h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: postgresql-contour
|
||||||
|
version: "13.0.8"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
|
||||||
|
install:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
strategy: uninstall
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
defaultStorageClass: local-path
|
||||||
|
postgresql:
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
image:
|
||||||
|
registry: cr.yandex/crp3ccidau046kdj8g9q
|
||||||
|
repository: contour/postgresql
|
||||||
|
tag: 13.0.8
|
||||||
|
pullPolicy: Always
|
||||||
|
metrics:
|
||||||
|
enabled: false
|
||||||
|
prometheusRule:
|
||||||
|
enabled: false
|
||||||
|
primary:
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
persistence:
|
||||||
|
storageClass: local-path
|
||||||
|
size: 20Gi
|
||||||
|
customLivenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customReadinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customStartupProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
nodeSelector:
|
||||||
|
dedicated: db
|
||||||
|
tolerations:
|
||||||
|
- key: dedicated
|
||||||
|
operator: Equal
|
||||||
|
value: db
|
||||||
|
effect: NoSchedule
|
||||||
|
contour:
|
||||||
|
enabled: true
|
||||||
|
adminUser: "postgres"
|
||||||
|
sharedPreloadLibraries: "pg_stat_statements,uuid-ossp,ltree,timescaledb"
|
||||||
|
vault:
|
||||||
|
enabled: true
|
||||||
|
role: postgresql
|
||||||
|
authPath: auth/kubernetes
|
||||||
|
secretPath: secrets/data/postgresql/admin
|
||||||
|
secretKey: postgres-password
|
||||||
|
usersSecretPath: secrets/data/postgresql/users
|
||||||
|
databases:
|
||||||
|
- name: bim_db
|
||||||
|
user: bim
|
||||||
|
passwordKey: bim
|
||||||
|
extensions:
|
||||||
|
- ltree
|
||||||
|
- timescaledb
|
||||||
|
- uuid-ossp
|
||||||
|
- pg_partman
|
||||||
|
restoreFromDump: false
|
||||||
|
s3-proxy:
|
||||||
|
endpointUrl: "s3-proxy-service.postgresql.svc.cluster.local"
|
||||||
8
apps/bim/yc-k8s-test/replicas.yaml
Normal file
8
apps/bim/yc-k8s-test/replicas.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
namespace: bim
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
15
apps/cde/base/backend-service.yaml
Normal file
15
apps/cde/base/backend-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: cde-svc
|
||||||
|
namespace: faas
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: cde
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8000
|
||||||
|
protocol: TCP
|
||||||
60
apps/cde/base/cde-flowscallback.yaml
Normal file
60
apps/cde/base/cde-flowscallback.yaml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cde-flowscallback
|
||||||
|
namespace: cde
|
||||||
|
labels:
|
||||||
|
app: cde-flowscallback
|
||||||
|
service: cde-flowscallback
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cde-flowscallback
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cde-flowscallback
|
||||||
|
service: cde-flowscallback
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: cde
|
||||||
|
vault.hashicorp.com/agent-inject-secret-cde-env: secrets/data/vault/apps/cde
|
||||||
|
vault.hashicorp.com/agent-inject-template-cde-env: |-
|
||||||
|
{{- with secret "secrets/data/vault/apps/cde" -}}
|
||||||
|
{{- range $k, $v := .Data.data }}
|
||||||
|
export {{ $k }}=$(printf '%b' {{ printf "%q" (printf "%v" $v) }})
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: cde-vault
|
||||||
|
containers:
|
||||||
|
- name: cde-flowscallback
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/flowscallback-worker:prod_9f3c1d2a
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -lc
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
source /vault/secrets/cde-env
|
||||||
|
exec /worker
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: S3_IS_CONTOUR
|
||||||
|
value: "true"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
60
apps/cde/base/cde-splitpdf.yaml
Normal file
60
apps/cde/base/cde-splitpdf.yaml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cde-splitpdf
|
||||||
|
namespace: cde
|
||||||
|
labels:
|
||||||
|
app: cde-splitpdf
|
||||||
|
service: cde-splitpdf
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cde-splitpdf
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cde-splitpdf
|
||||||
|
service: cde-splitpdf
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: cde
|
||||||
|
vault.hashicorp.com/agent-inject-secret-cde-env: secrets/data/vault/apps/cde
|
||||||
|
vault.hashicorp.com/agent-inject-template-cde-env: |-
|
||||||
|
{{- with secret "secrets/data/vault/apps/cde" -}}
|
||||||
|
{{- range $k, $v := .Data.data }}
|
||||||
|
export {{ $k }}=$(printf '%b' {{ printf "%q" (printf "%v" $v) }})
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: cde-vault
|
||||||
|
containers:
|
||||||
|
- name: cde-splitpdf
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/splitpdf-worker:prod_9f3c1d2a
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -lc
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
source /vault/secrets/cde-env
|
||||||
|
exec /worker
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: S3_IS_CONTOUR
|
||||||
|
value: "true"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
60
apps/cde/base/cde-worker-copy.yaml
Normal file
60
apps/cde/base/cde-worker-copy.yaml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cde-worker-copy
|
||||||
|
namespace: cde
|
||||||
|
labels:
|
||||||
|
app: cde-worker-copy
|
||||||
|
service: cde-worker-copy
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cde-worker-copy
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cde-worker-copy
|
||||||
|
service: cde-worker-copy
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: cde
|
||||||
|
vault.hashicorp.com/agent-inject-secret-cde-env: secrets/data/vault/apps/cde
|
||||||
|
vault.hashicorp.com/agent-inject-template-cde-env: |-
|
||||||
|
{{- with secret "secrets/data/vault/apps/cde" -}}
|
||||||
|
{{- range $k, $v := .Data.data }}
|
||||||
|
export {{ $k }}=$(printf '%b' {{ printf "%q" (printf "%v" $v) }})
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: cde-vault
|
||||||
|
containers:
|
||||||
|
- name: cde-worker-copy
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/copy-worker:prod_9f3c1d2a
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -lc
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
source /vault/secrets/cde-env
|
||||||
|
exec /worker
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: S3_IS_CONTOUR
|
||||||
|
value: "true"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
60
apps/cde/base/cde-worker-create-versions.yaml
Normal file
60
apps/cde/base/cde-worker-create-versions.yaml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cde-worker-create-versions
|
||||||
|
namespace: cde
|
||||||
|
labels:
|
||||||
|
app: cde-worker-create-versions
|
||||||
|
service: cde-worker-create-versions
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cde-worker-create-versions
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cde-worker-create-versions
|
||||||
|
service: cde-worker-create-versions
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: cde
|
||||||
|
vault.hashicorp.com/agent-inject-secret-cde-env: secrets/data/vault/apps/cde
|
||||||
|
vault.hashicorp.com/agent-inject-template-cde-env: |-
|
||||||
|
{{- with secret "secrets/data/vault/apps/cde" -}}
|
||||||
|
{{- range $k, $v := .Data.data }}
|
||||||
|
export {{ $k }}=$(printf '%b' {{ printf "%q" (printf "%v" $v) }})
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: cde-vault
|
||||||
|
containers:
|
||||||
|
- name: cde-worker-create-versions
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/createversions-worker:prod_9f3c1d2a
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -lc
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
source /vault/secrets/cde-env
|
||||||
|
exec /worker
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: S3_IS_CONTOUR
|
||||||
|
value: "true"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
60
apps/cde/base/cde-worker-markings.yaml
Normal file
60
apps/cde/base/cde-worker-markings.yaml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cde-worker-markings
|
||||||
|
namespace: cde
|
||||||
|
labels:
|
||||||
|
app: cde-worker-markings
|
||||||
|
service: cde-worker-markings
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cde-worker-markings
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cde-worker-markings
|
||||||
|
service: cde-worker-markings
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: cde
|
||||||
|
vault.hashicorp.com/agent-inject-secret-cde-env: secrets/data/vault/apps/cde
|
||||||
|
vault.hashicorp.com/agent-inject-template-cde-env: |-
|
||||||
|
{{- with secret "secrets/data/vault/apps/cde" -}}
|
||||||
|
{{- range $k, $v := .Data.data }}
|
||||||
|
export {{ $k }}=$(printf '%b' {{ printf "%q" (printf "%v" $v) }})
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: cde-vault
|
||||||
|
containers:
|
||||||
|
- name: cde-worker-markings
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/markings-worker:prod_9f3c1d2a
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -lc
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
source /vault/secrets/cde-env
|
||||||
|
exec /worker
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: S3_IS_CONTOUR
|
||||||
|
value: "true"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
60
apps/cde/base/cde-worker-sign.yaml
Normal file
60
apps/cde/base/cde-worker-sign.yaml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cde-worker-sign
|
||||||
|
namespace: cde
|
||||||
|
labels:
|
||||||
|
app: cde-worker-sign
|
||||||
|
service: cde-worker-sign
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cde-worker-sign
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cde-worker-sign
|
||||||
|
service: cde-worker-sign
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: cde
|
||||||
|
vault.hashicorp.com/agent-inject-secret-cde-env: secrets/data/vault/apps/cde
|
||||||
|
vault.hashicorp.com/agent-inject-template-cde-env: |-
|
||||||
|
{{- with secret "secrets/data/vault/apps/cde" -}}
|
||||||
|
{{- range $k, $v := .Data.data }}
|
||||||
|
export {{ $k }}=$(printf '%b' {{ printf "%q" (printf "%v" $v) }})
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: cde-vault
|
||||||
|
containers:
|
||||||
|
- name: cde-worker-sign
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/sign-worker:prod_9f3c1d2a
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -lc
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
source /vault/secrets/cde-env
|
||||||
|
exec /worker
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: S3_IS_CONTOUR
|
||||||
|
value: "true"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
60
apps/cde/base/cde-worker-update-bundles.yaml
Normal file
60
apps/cde/base/cde-worker-update-bundles.yaml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cde-worker-update-bundles
|
||||||
|
namespace: cde
|
||||||
|
labels:
|
||||||
|
app: cde-worker-update-bundles
|
||||||
|
service: cde-worker-update-bundles
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cde-worker-update-bundles
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cde-worker-update-bundles
|
||||||
|
service: cde-worker-update-bundles
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: cde
|
||||||
|
vault.hashicorp.com/agent-inject-secret-cde-env: secrets/data/vault/apps/cde
|
||||||
|
vault.hashicorp.com/agent-inject-template-cde-env: |-
|
||||||
|
{{- with secret "secrets/data/vault/apps/cde" -}}
|
||||||
|
{{- range $k, $v := .Data.data }}
|
||||||
|
export {{ $k }}=$(printf '%b' {{ printf "%q" (printf "%v" $v) }})
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: cde-vault
|
||||||
|
containers:
|
||||||
|
- name: cde-worker-update-bundles
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/updatebundles-worker:prod_9f3c1d2a
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -lc
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
source /vault/secrets/cde-env
|
||||||
|
exec /worker
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: S3_IS_CONTOUR
|
||||||
|
value: "true"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
60
apps/cde/base/cde.yaml
Normal file
60
apps/cde/base/cde.yaml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cde
|
||||||
|
namespace: cde
|
||||||
|
labels:
|
||||||
|
app: cde
|
||||||
|
service: cde
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cde
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cde
|
||||||
|
service: cde
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: cde
|
||||||
|
vault.hashicorp.com/agent-inject-secret-cde-env: secrets/data/vault/apps/cde
|
||||||
|
vault.hashicorp.com/agent-inject-template-cde-env: |-
|
||||||
|
{{- with secret "secrets/data/vault/apps/cde" -}}
|
||||||
|
{{- range $k, $v := .Data.data }}
|
||||||
|
export {{ $k }}=$(printf '%b' {{ printf "%q" (printf "%v" $v) }})
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: cde-vault
|
||||||
|
containers:
|
||||||
|
- name: api
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/cde:prod_9f3c1d2a
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command:
|
||||||
|
- /bin/bash
|
||||||
|
- -lc
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -e
|
||||||
|
source /vault/secrets/cde-env
|
||||||
|
exec /http
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: S3_IS_CONTOUR
|
||||||
|
value: "true"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
16
apps/cde/base/kustomization.yaml
Normal file
16
apps/cde/base/kustomization.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: cde
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- serviceaccount.yaml
|
||||||
|
- cde.yaml
|
||||||
|
- cde-splitpdf.yaml
|
||||||
|
- backend-service.yaml
|
||||||
|
- cde-flowscallback.yaml
|
||||||
|
- cde-worker-copy.yaml
|
||||||
|
- cde-worker-create-versions.yaml
|
||||||
|
- cde-worker-markings.yaml
|
||||||
|
- cde-worker-sign.yaml
|
||||||
|
- cde-worker-update-bundles.yaml
|
||||||
7
apps/cde/base/namespace.yaml
Normal file
7
apps/cde/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: cde
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
5
apps/cde/base/serviceaccount.yaml
Normal file
5
apps/cde/base/serviceaccount.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: cde-vault
|
||||||
|
namespace: cde
|
||||||
10
apps/cde/yc-k8s-test/kustomization.yaml
Normal file
10
apps/cde/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
patches: []
|
||||||
|
# - path: replicas.yaml
|
||||||
|
# target:
|
||||||
|
# kind: Deployment
|
||||||
|
# name: frontend
|
||||||
8
apps/cde/yc-k8s-test/replicas.yaml
Normal file
8
apps/cde/yc-k8s-test/replicas.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
namespace: cde
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
80
apps/checklists/base/backend-deployment.yaml
Normal file
80
apps/checklists/base/backend-deployment.yaml
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: checklists-backend
|
||||||
|
namespace: checklists
|
||||||
|
labels:
|
||||||
|
app: checklists-backend
|
||||||
|
service: api
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: checklists-backend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: checklists-backend
|
||||||
|
service: checklists-backend
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: checklists
|
||||||
|
vault.hashicorp.com/agent-inject-secret-checklists-db: secrets/data/postgresql/apps/checklists
|
||||||
|
vault.hashicorp.com/agent-inject-template-checklists-db: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/checklists" -}}
|
||||||
|
DATABASE_HOST=postgresql.checklists.svc.cluster.local
|
||||||
|
DATABASE_PORT=5432
|
||||||
|
DATABASE_NAME=checklists_db
|
||||||
|
DATABASE_USER={{ index .Data.data "username" }}
|
||||||
|
DATABASE_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-checklists-jwt-public: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-checklists-jwt-public: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "public_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: checklists-vault
|
||||||
|
containers:
|
||||||
|
- name: api
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/checklists-backend:production_68f242cd
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/bash", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/checklists-db ] && . /vault/secrets/checklists-db
|
||||||
|
[ -f /vault/secrets/checklists-jwt-public ] && export JWT_AUTH_PUBLIC_KEY="$(cat /vault/secrets/checklists-jwt-public)"
|
||||||
|
set +a
|
||||||
|
exec ./entrypoint.sh
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: HTTP_APP_HOST
|
||||||
|
value: 0.0.0.0
|
||||||
|
- name: HTTP_APP_PORT
|
||||||
|
value: "8000"
|
||||||
|
- name: HTTP_APP_ROOT_PATH
|
||||||
|
value: /checklists
|
||||||
|
- name: HTTP_APP_WORKERS
|
||||||
|
value: "1"
|
||||||
|
- name: HTTP_APP_ADMIN_ENABLE
|
||||||
|
value: "true"
|
||||||
|
- name: JWT_AUTH_ENABLE
|
||||||
|
value: "true"
|
||||||
|
- name: DEBUG
|
||||||
|
value: "false"
|
||||||
|
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/checklists/base/backend-service.yaml
Normal file
15
apps/checklists/base/backend-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: rfi-backend-api-svc
|
||||||
|
namespace: checklists
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: checklists-backend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8000
|
||||||
|
protocol: TCP
|
||||||
9
apps/checklists/base/kustomization.yaml
Normal file
9
apps/checklists/base/kustomization.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: checklists
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- serviceaccount.yaml
|
||||||
|
- backend-deployment.yaml
|
||||||
|
- backend-service.yaml
|
||||||
7
apps/checklists/base/namespace.yaml
Normal file
7
apps/checklists/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: checklists
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
5
apps/checklists/base/serviceaccount.yaml
Normal file
5
apps/checklists/base/serviceaccount.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: checklists-vault
|
||||||
|
namespace: checklists
|
||||||
7
apps/checklists/yc-k8s-test/kustomization.yaml
Normal file
7
apps/checklists/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
- postgresql.yaml
|
||||||
|
patches: []
|
||||||
121
apps/checklists/yc-k8s-test/postgresql.yaml
Normal file
121
apps/checklists/yc-k8s-test/postgresql.yaml
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: postgresql
|
||||||
|
namespace: checklists
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
timeout: 2h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: postgresql-contour
|
||||||
|
version: "17.0.7"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
|
||||||
|
install:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
defaultStorageClass: local-path
|
||||||
|
postgresql:
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
image:
|
||||||
|
registry: cr.yandex/crp3ccidau046kdj8g9q
|
||||||
|
repository: contour/postgresql
|
||||||
|
tag: 17.0.7
|
||||||
|
pullPolicy: Always
|
||||||
|
metrics:
|
||||||
|
enabled: false
|
||||||
|
prometheusRule:
|
||||||
|
enabled: false
|
||||||
|
primary:
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
persistence:
|
||||||
|
storageClass: local-path
|
||||||
|
size: 20Gi
|
||||||
|
customLivenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customReadinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customStartupProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
nodeSelector:
|
||||||
|
dedicated: db
|
||||||
|
tolerations:
|
||||||
|
- key: dedicated
|
||||||
|
operator: Equal
|
||||||
|
value: db
|
||||||
|
effect: NoSchedule
|
||||||
|
contour:
|
||||||
|
enabled: true
|
||||||
|
adminUser: "postgres"
|
||||||
|
sharedPreloadLibraries: "pg_stat_statements,uuid-ossp"
|
||||||
|
vault:
|
||||||
|
enabled: true
|
||||||
|
role: postgresql
|
||||||
|
authPath: auth/kubernetes
|
||||||
|
secretPath: secrets/data/postgresql/admin
|
||||||
|
secretKey: postgres-password
|
||||||
|
usersSecretPath: secrets/data/postgresql/users
|
||||||
|
databases:
|
||||||
|
- name: checklists_db
|
||||||
|
user: checklists
|
||||||
|
passwordKey: checklists
|
||||||
|
extensions: []
|
||||||
|
restoreFromDump: false
|
||||||
|
s3-proxy:
|
||||||
|
endpointUrl: "s3-proxy-service.postgresql.svc.cluster.local"
|
||||||
136
apps/comparisons/base/backend-deployment.yaml
Normal file
136
apps/comparisons/base/backend-deployment.yaml
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
namespace: comparisons
|
||||||
|
labels:
|
||||||
|
app: backend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: backend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: backend
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: comparisons
|
||||||
|
vault.hashicorp.com/agent-inject-secret-comparisons-db: secrets/data/postgresql/apps/comparisons
|
||||||
|
vault.hashicorp.com/agent-inject-template-comparisons-db: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/comparisons" -}}
|
||||||
|
DATABASE_HOST=postgresql.comparisons.svc.cluster.local
|
||||||
|
DATABASE_PORT=5432
|
||||||
|
DATABASE_DB=comparisons_db
|
||||||
|
DATABASE_USER={{ index .Data.data "username" }}
|
||||||
|
DATABASE_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
POSTGRES_ADDRESS=postgresql.comparisons.svc.cluster.local
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_DB=comparisons_db
|
||||||
|
POSTGRES_USER={{ index .Data.data "username" }}
|
||||||
|
POSTGRES_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-comparisons-jwt-public: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-comparisons-jwt-public: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "public_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: comparisons-vault
|
||||||
|
volumes:
|
||||||
|
- name: tasks-execution-config
|
||||||
|
configMap:
|
||||||
|
name: tasks-execution-config-comparisons-v2
|
||||||
|
items:
|
||||||
|
- key: tasks-execution-config-comparisons-v2.json
|
||||||
|
path: tasks-execution-config.json
|
||||||
|
containers:
|
||||||
|
- name: backend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/comparisons_backend_prod:075fc0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/bash", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/comparisons-db ] && . /vault/secrets/comparisons-db
|
||||||
|
[ -f /vault/secrets/comparisons-jwt-public ] && export AUTH_PUBLIC_KEY="$(cat /vault/secrets/comparisons-jwt-public)"
|
||||||
|
set +a
|
||||||
|
exec /app/entrypoint.sh
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: APP_NAME
|
||||||
|
value: comparisons
|
||||||
|
- name: APP_VERSION
|
||||||
|
value: 0.0.1
|
||||||
|
- name: LOGGER_LOG_LEVEL
|
||||||
|
value: info
|
||||||
|
- name: DATABASE_NAME
|
||||||
|
value: postgres
|
||||||
|
- name: ENABLE_SSL
|
||||||
|
value: "false"
|
||||||
|
- name: POSTGRES_POOL_SIZE
|
||||||
|
value: "10"
|
||||||
|
- name: HTTP_PORT
|
||||||
|
value: "8000"
|
||||||
|
- name: DOCUMENTATIONS_INTERNAL_HOST
|
||||||
|
value: http://documentations-service.documentations
|
||||||
|
- name: DOCUMENTATIONS_EXTERNAL_HOST
|
||||||
|
value: https://api.sarex.io/documentations
|
||||||
|
- name: DOCUMENTATION_FILESTREAM_URL
|
||||||
|
value: http://backend-filestream-svc.documentations.svc.cluster.local/
|
||||||
|
- name: WORKFLOWS_HOST
|
||||||
|
value: http://workflows-service.processing
|
||||||
|
- name: WORKFLOWS_IMAGE_VERSION
|
||||||
|
value: master
|
||||||
|
- name: WORKFLOWS_DJANGO_HOST
|
||||||
|
value: https://lk.sarex.io
|
||||||
|
- name: WORKFLOWS_BIMV2_INTERNAL_HOST
|
||||||
|
value: http://bim-backend-v2-service.bim-api
|
||||||
|
- name: WORKSPACES_HOST
|
||||||
|
value: http://workspaces-service.workspaces
|
||||||
|
- name: EAV_HOST
|
||||||
|
value: https://api.sarex.io/eav
|
||||||
|
- name: LAST_MASTER_BIM
|
||||||
|
value: "36311"
|
||||||
|
- name: LAST_SLAVE_1_BIM
|
||||||
|
value: "94015"
|
||||||
|
- name: LAST_SLAVE_2_BIM
|
||||||
|
value: "135771"
|
||||||
|
- name: ABAP_FIXED_CONC
|
||||||
|
value: "0"
|
||||||
|
- name: WORKFLOWS_CONFIG_FILEPATH
|
||||||
|
value: /etc/app/tasks-execution-config.json
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 25m
|
||||||
|
memory: 100Mi
|
||||||
|
volumeMounts:
|
||||||
|
- name: tasks-execution-config
|
||||||
|
readOnly: true
|
||||||
|
mountPath: /etc/app/tasks-execution-config.json
|
||||||
|
subPath: tasks-execution-config.json
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ping
|
||||||
|
port: 8000
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 60
|
||||||
|
failureThreshold: 10
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ping
|
||||||
|
port: 8000
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
|
failureThreshold: 20
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/comparisons/base/backend-service.yaml
Normal file
15
apps/comparisons/base/backend-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: backend-service
|
||||||
|
namespace: comparisons
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: backend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8000
|
||||||
|
targetPort: 8000
|
||||||
|
protocol: TCP
|
||||||
57
apps/comparisons/base/frontend-deployment.yaml
Normal file
57
apps/comparisons/base/frontend-deployment.yaml
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: frontend
|
||||||
|
namespace: comparisons
|
||||||
|
labels:
|
||||||
|
app: frontend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: frontend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: frontend
|
||||||
|
spec:
|
||||||
|
volumes:
|
||||||
|
- name: nginx-configmap
|
||||||
|
configMap:
|
||||||
|
name: nginx-configmap
|
||||||
|
items:
|
||||||
|
- key: nginx.conf
|
||||||
|
path: nginx.conf
|
||||||
|
containers:
|
||||||
|
- name: frontend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/comparisons-frontend:prod_6dc6e0c2
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 25m
|
||||||
|
memory: 100Mi
|
||||||
|
volumeMounts:
|
||||||
|
- name: nginx-configmap
|
||||||
|
mountPath: /etc/nginx/nginx.conf
|
||||||
|
subPath: nginx.conf
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ping
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 10
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ping
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 20
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/comparisons/base/frontend-service.yaml
Normal file
15
apps/comparisons/base/frontend-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: frontend-service
|
||||||
|
namespace: comparisons
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: frontend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
13
apps/comparisons/base/kustomization.yaml
Normal file
13
apps/comparisons/base/kustomization.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: comparisons
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- serviceaccount.yaml
|
||||||
|
- backend-deployment.yaml
|
||||||
|
- backend-service.yaml
|
||||||
|
- frontend-deployment.yaml
|
||||||
|
- frontend-service.yaml
|
||||||
|
- nginx-configmap.yaml
|
||||||
|
- tasks-execution-config.yaml
|
||||||
7
apps/comparisons/base/namespace.yaml
Normal file
7
apps/comparisons/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: comparisons
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
47
apps/comparisons/base/nginx-configmap.yaml
Normal file
47
apps/comparisons/base/nginx-configmap.yaml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: nginx-configmap
|
||||||
|
namespace: comparisons
|
||||||
|
data:
|
||||||
|
nginx.conf: |
|
||||||
|
user nginx;
|
||||||
|
worker_processes auto;
|
||||||
|
|
||||||
|
error_log stderr warn;
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
access_log /dev/stdout main;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
|
||||||
|
server {
|
||||||
|
client_header_buffer_size 16k;
|
||||||
|
large_client_header_buffers 4 16k;
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
root /dist;
|
||||||
|
expires off;
|
||||||
|
|
||||||
|
location = /ping {
|
||||||
|
return 200 '{"result": "ok"}';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
5
apps/comparisons/base/serviceaccount.yaml
Normal file
5
apps/comparisons/base/serviceaccount.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: comparisons-vault
|
||||||
|
namespace: comparisons
|
||||||
104
apps/comparisons/base/tasks-execution-config.yaml
Normal file
104
apps/comparisons/base/tasks-execution-config.yaml
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: tasks-execution-config-comparisons-v2
|
||||||
|
namespace: comparisons
|
||||||
|
data:
|
||||||
|
tasks-execution-config-comparisons-v2.json: |
|
||||||
|
{
|
||||||
|
"abap": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "8",
|
||||||
|
"memory_requests": "40Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bim2bim_comparison": {
|
||||||
|
"executor": "k8s"
|
||||||
|
},
|
||||||
|
"bim_api_metadata_inserter_v2": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"memory_requests": "5Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bim_api_metadata_inserter_v4": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"memory_requests": "3Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bim_abap_updater": {
|
||||||
|
"executor": "k8s"
|
||||||
|
},
|
||||||
|
"build_ooc": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "8",
|
||||||
|
"memory_requests": "40Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"calculate_deviation_job": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "8",
|
||||||
|
"memory_requests": "40Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cloud_to_cloud": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "8",
|
||||||
|
"memory_requests": "40Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cloud_to_surface": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "8",
|
||||||
|
"memory_requests": "40Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"convert_to_potree": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "900m",
|
||||||
|
"memory_requests": "3.3Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"deviation_icp": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "8",
|
||||||
|
"memory_requests": "40Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"las_to_tiff": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "8",
|
||||||
|
"memory_requests": "40Gi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pdf_cv_comparer": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "1",
|
||||||
|
"memory_requests": "512Mi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pdf_georeferencing": {
|
||||||
|
"executor": "k8s"
|
||||||
|
},
|
||||||
|
"split_pdf_document": {
|
||||||
|
"executor": "k8s",
|
||||||
|
"resources": {
|
||||||
|
"cpu_requests": "1",
|
||||||
|
"memory_requests": "512Mi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"webhook_caller": {
|
||||||
|
"executor": "k8s"
|
||||||
|
}
|
||||||
|
}
|
||||||
11
apps/comparisons/yc-k8s-test/kustomization.yaml
Normal file
11
apps/comparisons/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
- postgresql.yaml
|
||||||
|
patches:
|
||||||
|
- path: replicas.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
name: backend
|
||||||
121
apps/comparisons/yc-k8s-test/postgresql.yaml
Normal file
121
apps/comparisons/yc-k8s-test/postgresql.yaml
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: postgresql
|
||||||
|
namespace: comparisons
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
timeout: 2h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: postgresql-contour
|
||||||
|
version: "17.0.7"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
|
||||||
|
install:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
defaultStorageClass: local-path
|
||||||
|
postgresql:
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
image:
|
||||||
|
registry: cr.yandex/crp3ccidau046kdj8g9q
|
||||||
|
repository: contour/postgresql
|
||||||
|
tag: 17.0.7
|
||||||
|
pullPolicy: Always
|
||||||
|
metrics:
|
||||||
|
enabled: false
|
||||||
|
prometheusRule:
|
||||||
|
enabled: false
|
||||||
|
primary:
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
persistence:
|
||||||
|
storageClass: local-path
|
||||||
|
size: 20Gi
|
||||||
|
customLivenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customReadinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customStartupProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
nodeSelector:
|
||||||
|
dedicated: db
|
||||||
|
tolerations:
|
||||||
|
- key: dedicated
|
||||||
|
operator: Equal
|
||||||
|
value: db
|
||||||
|
effect: NoSchedule
|
||||||
|
contour:
|
||||||
|
enabled: true
|
||||||
|
adminUser: "postgres"
|
||||||
|
sharedPreloadLibraries: "pg_stat_statements,uuid-ossp"
|
||||||
|
vault:
|
||||||
|
enabled: true
|
||||||
|
role: postgresql
|
||||||
|
authPath: auth/kubernetes
|
||||||
|
secretPath: secrets/data/postgresql/admin
|
||||||
|
secretKey: postgres-password
|
||||||
|
usersSecretPath: secrets/data/postgresql/users
|
||||||
|
databases:
|
||||||
|
- name: comparisons_db
|
||||||
|
user: comparisons
|
||||||
|
passwordKey: comparisons
|
||||||
|
extensions: []
|
||||||
|
restoreFromDump: false
|
||||||
|
s3-proxy:
|
||||||
|
endpointUrl: "s3-proxy-service.postgresql.svc.cluster.local"
|
||||||
8
apps/comparisons/yc-k8s-test/replicas.yaml
Normal file
8
apps/comparisons/yc-k8s-test/replicas.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
namespace: comparisons
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
89
apps/contracts/base/deployment.yaml
Normal file
89
apps/contracts/base/deployment.yaml
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
namespace: contracts
|
||||||
|
labels:
|
||||||
|
app: backend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: backend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: backend
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: contracts
|
||||||
|
vault.hashicorp.com/agent-inject-secret-contracts-db: secrets/data/postgresql/apps/contracts
|
||||||
|
vault.hashicorp.com/agent-inject-template-contracts-db: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/contracts" -}}
|
||||||
|
DB_URL=postgresql://{{ index .Data.data "username" }}:{{ index .Data.data "password" }}@postgresql.contracts.svc.cluster.local:5432/contracts_db?sslmode=disable
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-contracts-jwt-public: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-contracts-jwt-public: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "public_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-contracts-rabbitmq: secrets/data/rabbitmq/apps/contracts
|
||||||
|
vault.hashicorp.com/agent-inject-template-contracts-rabbitmq: |-
|
||||||
|
{{- with secret "secrets/data/rabbitmq/apps/contracts" -}}
|
||||||
|
CONTRACTS_RABBITMQ_VHOST={{ index .Data.data "vhost" }}
|
||||||
|
CONTRACTS_RABBITMQ_USERNAME={{ index .Data.data "username" }}
|
||||||
|
CONTRACTS_RABBITMQ_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
CONTRACTS_RABBITMQ_HOST=rabbitmq.rabbitmq.svc.cluster.local
|
||||||
|
CONTRACTS_RABBITMQ_PORT=5672
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-contracts-s3: secrets/data/minio/apps/contracts
|
||||||
|
vault.hashicorp.com/agent-inject-template-contracts-s3: |-
|
||||||
|
{{- with secret "secrets/data/minio/apps/contracts" -}}
|
||||||
|
CONTRACTS_S3_ENDPOINT={{ index .Data.data.client "endpoint" }}
|
||||||
|
CONTRACTS_S3_REGION={{ index .Data.data.client "region" }}
|
||||||
|
CONTRACTS_S3_BUCKET=contracts
|
||||||
|
CONTRACTS_S3_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
|
||||||
|
CONTRACTS_S3_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-contracts-kafka: secrets/data/kafka/apps/contracts
|
||||||
|
vault.hashicorp.com/agent-inject-template-contracts-kafka: |-
|
||||||
|
{{- with secret "secrets/data/kafka/apps/contracts" -}}
|
||||||
|
CONTRACTS_KAFKA_BOOTSTRAP_SERVERS={{ index .Data.data.auth "bootstrap_servers" }}
|
||||||
|
CONTRACTS_KAFKA_SECURITY_PROTOCOL={{ index .Data.data.auth "security_protocol" }}
|
||||||
|
CONTRACTS_KAFKA_SASL_MECHANISM={{ index .Data.data.auth "sasl_mechanism" }}
|
||||||
|
CONTRACTS_KAFKA_USERNAME={{ index .Data.data "username" }}
|
||||||
|
CONTRACTS_KAFKA_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: contracts-vault
|
||||||
|
containers:
|
||||||
|
- name: backend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/contracts:prod_d3bbd9fc
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/sh", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/contracts-db ] && . /vault/secrets/contracts-db
|
||||||
|
[ -f /vault/secrets/contracts-jwt-public ] && export PUBLIC_KEY="$(cat /vault/secrets/contracts-jwt-public)"
|
||||||
|
[ -f /vault/secrets/contracts-rabbitmq ] && . /vault/secrets/contracts-rabbitmq
|
||||||
|
[ -f /vault/secrets/contracts-s3 ] && . /vault/secrets/contracts-s3
|
||||||
|
[ -f /vault/secrets/contracts-kafka ] && . /vault/secrets/contracts-kafka
|
||||||
|
set +a
|
||||||
|
exec /usr/local/bin/http
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: ADDRESS
|
||||||
|
value: ":8000"
|
||||||
|
- name: ENABLE_SSL
|
||||||
|
value: "false"
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
9
apps/contracts/base/kustomization.yaml
Normal file
9
apps/contracts/base/kustomization.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: contracts
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- serviceaccount.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
7
apps/contracts/base/namespace.yaml
Normal file
7
apps/contracts/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: contracts
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
15
apps/contracts/base/service.yaml
Normal file
15
apps/contracts/base/service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: backend-service
|
||||||
|
namespace: contracts
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: backend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 8000
|
||||||
|
targetPort: 8000
|
||||||
|
protocol: TCP
|
||||||
5
apps/contracts/base/serviceaccount.yaml
Normal file
5
apps/contracts/base/serviceaccount.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: contracts-vault
|
||||||
|
namespace: contracts
|
||||||
11
apps/contracts/yc-k8s-test/kustomization.yaml
Normal file
11
apps/contracts/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
- postgresql.yaml
|
||||||
|
patches: []
|
||||||
|
# - path: replicas.yaml
|
||||||
|
# target:
|
||||||
|
# kind: Deployment
|
||||||
|
# name: backend
|
||||||
121
apps/contracts/yc-k8s-test/postgresql.yaml
Normal file
121
apps/contracts/yc-k8s-test/postgresql.yaml
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: postgresql
|
||||||
|
namespace: contracts
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
timeout: 2h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: postgresql-contour
|
||||||
|
version: "17.0.7"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
|
||||||
|
install:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
defaultStorageClass: local-path
|
||||||
|
postgresql:
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
image:
|
||||||
|
registry: cr.yandex/crp3ccidau046kdj8g9q
|
||||||
|
repository: contour/postgresql
|
||||||
|
tag: 17.0.7
|
||||||
|
pullPolicy: Always
|
||||||
|
metrics:
|
||||||
|
enabled: false
|
||||||
|
prometheusRule:
|
||||||
|
enabled: false
|
||||||
|
primary:
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
persistence:
|
||||||
|
storageClass: local-path
|
||||||
|
size: 20Gi
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
customLivenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customReadinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customStartupProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
nodeSelector:
|
||||||
|
dedicated: db
|
||||||
|
tolerations:
|
||||||
|
- key: dedicated
|
||||||
|
operator: Equal
|
||||||
|
value: db
|
||||||
|
effect: NoSchedule
|
||||||
|
contour:
|
||||||
|
enabled: true
|
||||||
|
adminUser: "postgres"
|
||||||
|
sharedPreloadLibraries: "pg_stat_statements,uuid-ossp"
|
||||||
|
vault:
|
||||||
|
enabled: true
|
||||||
|
role: postgresql
|
||||||
|
authPath: auth/kubernetes
|
||||||
|
secretPath: secrets/data/postgresql/admin
|
||||||
|
secretKey: postgres-password
|
||||||
|
usersSecretPath: secrets/data/postgresql/users
|
||||||
|
databases:
|
||||||
|
- name: contracts_db
|
||||||
|
user: contracts
|
||||||
|
passwordKey: contracts
|
||||||
|
extensions: []
|
||||||
|
restoreFromDump: false
|
||||||
|
s3-proxy:
|
||||||
|
endpointUrl: "s3-proxy-service.postgresql.svc.cluster.local"
|
||||||
7
apps/contracts/yc-k8s-test/replicas.yaml
Normal file
7
apps/contracts/yc-k8s-test/replicas.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
29
apps/control-interface/base/deployment.yaml
Normal file
29
apps/control-interface/base/deployment.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: srx-admin
|
||||||
|
namespace: control-interface
|
||||||
|
labels:
|
||||||
|
app: srx-admin
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: srx-admin
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: srx-admin
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: srx-admin
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/srx-admin:prod_3b9cb250
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
|
|
||||||
8
apps/control-interface/base/kustomization.yaml
Normal file
8
apps/control-interface/base/kustomization.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: control-interface
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
7
apps/control-interface/base/namespace.yaml
Normal file
7
apps/control-interface/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: control-interface
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
14
apps/control-interface/base/service.yaml
Normal file
14
apps/control-interface/base/service.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: frontend-svc
|
||||||
|
namespace: control-interface
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: srx-admin
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
10
apps/control-interface/yc-k8s-test/kustomization.yaml
Normal file
10
apps/control-interface/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
patches:
|
||||||
|
- path: replicas.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
name: srx-admin
|
||||||
8
apps/control-interface/yc-k8s-test/replicas.yaml
Normal file
8
apps/control-interface/yc-k8s-test/replicas.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: srx-admin
|
||||||
|
namespace: control-interface
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
46
apps/cross-section/base/deployment.yaml
Normal file
46
apps/cross-section/base/deployment.yaml
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cross-section-static
|
||||||
|
namespace: cross-section
|
||||||
|
labels:
|
||||||
|
app: cross-section-static
|
||||||
|
spec:
|
||||||
|
replicas: 2
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: cross-section-static
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: cross-section-static
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: frontend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/cross-section-app:production_e09e648b
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ping
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 10
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /ping
|
||||||
|
port: 80
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 20
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 25m
|
||||||
|
memory: 100Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
8
apps/cross-section/base/kustomization.yaml
Normal file
8
apps/cross-section/base/kustomization.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: cross-section
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
7
apps/cross-section/base/namespace.yaml
Normal file
7
apps/cross-section/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: cross-section
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
15
apps/cross-section/base/service.yaml
Normal file
15
apps/cross-section/base/service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: cross-section-static
|
||||||
|
namespace: cross-section
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: cross-section-static
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
10
apps/cross-section/yc-k8s-test/kustomization.yaml
Normal file
10
apps/cross-section/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
patches:
|
||||||
|
- path: replicas.yaml
|
||||||
|
target:
|
||||||
|
kind: Deployment
|
||||||
|
name: cross-section-static
|
||||||
8
apps/cross-section/yc-k8s-test/replicas.yaml
Normal file
8
apps/cross-section/yc-k8s-test/replicas.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: cross-section-static
|
||||||
|
namespace: cross-section
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
216
apps/django/base/backend-deployment.yaml
Normal file
216
apps/django/base/backend-deployment.yaml
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: backend
|
||||||
|
namespace: django
|
||||||
|
labels:
|
||||||
|
app: backend
|
||||||
|
service: backend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: backend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: backend
|
||||||
|
service: backend
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: django
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-postgresql: secrets/data/postgresql/apps/django
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-postgresql: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/django" -}}
|
||||||
|
DJANGO_POSTGRES_HOST=postgresql.django.svc.cluster.local
|
||||||
|
DJANGO_POSTGRES_PORTS=5432
|
||||||
|
DJANGO_POSTGRES_DATABASE=sarex_db
|
||||||
|
DJANGO_POSTGRES_USER={{ index .Data.data "username" }}
|
||||||
|
DJANGO_POSTGRES_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-rabbitmq: secrets/data/rabbitmq/apps/django
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-rabbitmq: |-
|
||||||
|
{{- with secret "secrets/data/rabbitmq/apps/django" -}}
|
||||||
|
CELERY_RABBITMQ_HOST=rabbitmq.rabbitmq.svc.cluster.local
|
||||||
|
CELERY_RABBITMQ_USER={{ index .Data.data "username" }}
|
||||||
|
CELERY_RABBITMQ_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
CELERY_RABBITMQ_VHOST={{ index .Data.data "vhost" }}
|
||||||
|
DJANGO_RABBIT_HOSTNAME=rabbitmq.rabbitmq.svc.cluster.local
|
||||||
|
DJANGO_RABBIT_USER={{ index .Data.data "username" }}
|
||||||
|
DJANGO_RABBIT_PASS={{ index .Data.data "password" }}
|
||||||
|
DJANGO_RABBIT_VHOST={{ index .Data.data "vhost" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-s3: secrets/data/minio/apps/django
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-s3: |-
|
||||||
|
{{- with secret "secrets/data/minio/apps/django" -}}
|
||||||
|
AWS_S3_ENDPOINT_URL=https://minio.contour.infra.sarex.tech
|
||||||
|
S3_HOST=https://minio.contour.infra.sarex.tech
|
||||||
|
{{- $buckets := index .Data.data "buckets" }}
|
||||||
|
S3_BUCKET={{- if gt (len $buckets) 0 -}}{{ index (index $buckets 0) "name" }}{{- else -}}django{{- end -}}
|
||||||
|
S3_LOGIN={{ index .Data.data "access_key" }}
|
||||||
|
S3_PASSWORD={{ index .Data.data "secret_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-kafka: secrets/data/kafka/apps/django
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-kafka: |-
|
||||||
|
{{- with secret "secrets/data/kafka/apps/django" -}}
|
||||||
|
KAFKA_BOOTSTRAP_SERVERS="[\"{{ index .Data.data.auth "bootstrap_servers" }}\"]"
|
||||||
|
KAFKA_SECURITY_PROTOCOL={{ index .Data.data.auth "security_protocol" }}
|
||||||
|
KAFKA_SASL_MECHANISM={{ index .Data.data.auth "sasl_mechanism" }}
|
||||||
|
KAFKA_SASL_PLAIN_USERNAME={{ index .Data.data "username" }}
|
||||||
|
KAFKA_SASL_PLAIN_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-jwt-private: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-jwt-private: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "private_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-jwt-public: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-jwt-public: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "public_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-common: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-common: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
ZITADEL_ACCESS_TOKEN={{ index .Data.data "django_zitadel_access_token" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: django-vault
|
||||||
|
volumes:
|
||||||
|
- name: django-configmap
|
||||||
|
configMap:
|
||||||
|
name: django-configmap
|
||||||
|
items:
|
||||||
|
- key: production.py
|
||||||
|
path: production.py
|
||||||
|
defaultMode: 420
|
||||||
|
- name: uwsgi-configmap
|
||||||
|
configMap:
|
||||||
|
name: uwsgi-configmap
|
||||||
|
items:
|
||||||
|
- key: uwsgi.ini
|
||||||
|
path: uwsgi.ini
|
||||||
|
defaultMode: 420
|
||||||
|
containers:
|
||||||
|
- name: backend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/backend:production_a96dead0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/sh", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/django-postgresql ] && . /vault/secrets/django-postgresql
|
||||||
|
[ -f /vault/secrets/django-rabbitmq ] && . /vault/secrets/django-rabbitmq
|
||||||
|
[ -f /vault/secrets/django-s3 ] && . /vault/secrets/django-s3
|
||||||
|
[ -f /vault/secrets/django-kafka ] && . /vault/secrets/django-kafka
|
||||||
|
[ -f /vault/secrets/django-common ] && . /vault/secrets/django-common
|
||||||
|
[ -f /vault/secrets/django-jwt-private ] && export JWT_PRIVATE_KEY="$(cat /vault/secrets/django-jwt-private)"
|
||||||
|
[ -f /vault/secrets/django-jwt-public ] && export JWT_PUBLIC_KEY="$(cat /vault/secrets/django-jwt-public)"
|
||||||
|
set +a
|
||||||
|
exec /opt/sarex/entrypoint.sh
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: ALLOWED_HOSTS
|
||||||
|
value: '*'
|
||||||
|
- name: SERVER_USE_CHANGELOG
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_ZITADEL_ENABLED
|
||||||
|
value: "False"
|
||||||
|
- name: DJANGO_SETTINGS_MODULE
|
||||||
|
value: config.settings.production
|
||||||
|
- name: CELERY_REDIS_HOST
|
||||||
|
value: redis
|
||||||
|
- name: CELERY_REDIS_PORT
|
||||||
|
value: "6379"
|
||||||
|
- name: DJANGO_REDIS_HOST
|
||||||
|
value: redis
|
||||||
|
- name: DJANGO_REDIS_PORT
|
||||||
|
value: "6379"
|
||||||
|
- name: BIMV2_INTERNAL_HOST
|
||||||
|
value: http://bim-backend-v2-service.bim-api
|
||||||
|
- name: BIMV2_TIMEOUT
|
||||||
|
value: "60"
|
||||||
|
- name: JWT_KID
|
||||||
|
value: "1"
|
||||||
|
- name: PDM_SYNC
|
||||||
|
value: "1"
|
||||||
|
- name: KC_SYNC_ENABLE
|
||||||
|
value: "0"
|
||||||
|
- name: MEASUREMENTS_HOST
|
||||||
|
value: http://measurements-service.measurements.svc.cluster.local:8000/api
|
||||||
|
- name: MEASUREMENTS_USE_MEASUREMENTS
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_API_HOST
|
||||||
|
value: https://sarex.contour.infra.sarex.tech
|
||||||
|
- name: SERVER_HOST
|
||||||
|
value: https://sarex.contour.infra.sarex.tech
|
||||||
|
- name: WORKFLOWS_HOST
|
||||||
|
value: https://sarex.contour.infra.sarex.tech
|
||||||
|
- name: WORKFLOWS_BASE_HOST
|
||||||
|
value: https://sarex.contour.infra.sarex.tech
|
||||||
|
- name: WORKFLOWS_USE
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_S3_STREAM_IMPORT
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_SAVE_DIFF_DEM
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_USE_CLICKHOUSE
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_USE_CREATE_COMPARED_GEOTIFF_TASK
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_USE_DJANGO_STORAGE
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_USE_METASHAPE
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_CHANGELOG_MODE_SYSTEM_LOG
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_CHANGELOG_MODE
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_DJANGO_URLS
|
||||||
|
value: "1"
|
||||||
|
- name: CHECK_IMPORT_HASH
|
||||||
|
value: "1"
|
||||||
|
- name: EAV_ENABLE
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_CHECK_IMPORT_HASH
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_CHUNKED_PATH
|
||||||
|
value: /tmp/chunked_uploads/%Y/%m/%d
|
||||||
|
- name: SERVER_HIDE_USER_SCROLL_PERMISSIONS
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_USE_WRORKFLOW_STATUS
|
||||||
|
value: "1"
|
||||||
|
- name: ZITADEL_HOST
|
||||||
|
value: https://zitadel-srx.wb.ru
|
||||||
|
- name: SERVER_KAFKA_ENABLED
|
||||||
|
value: "False"
|
||||||
|
- name: KAFKA_TOPICS
|
||||||
|
value: '{"planning": "message-hub-stage", "ams-sync": "ams-sync"}'
|
||||||
|
- name: KAFKA_SSL_CAFILE
|
||||||
|
value: /usr/local/share/ca-certificates/kafka.crt
|
||||||
|
- name: KC_USE_REDIRECT_LOGOUT
|
||||||
|
value: "False"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
volumeMounts:
|
||||||
|
- name: django-configmap
|
||||||
|
mountPath: /opt/sarex/config/settings/production.py
|
||||||
|
subPath: production.py
|
||||||
|
- name: uwsgi-configmap
|
||||||
|
mountPath: /opt/sarex/uwsgi.ini
|
||||||
|
subPath: uwsgi.ini
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/django/base/backend-service.yaml
Normal file
15
apps/django/base/backend-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: backend-svc
|
||||||
|
namespace: django
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: backend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8000
|
||||||
|
protocol: TCP
|
||||||
204
apps/django/base/celery-deployment.yaml
Normal file
204
apps/django/base/celery-deployment.yaml
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: celery
|
||||||
|
namespace: django
|
||||||
|
labels:
|
||||||
|
app: celery
|
||||||
|
service: celery
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: celery
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: celery
|
||||||
|
service: celery
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: django
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-postgresql: secrets/data/postgresql/apps/django
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-postgresql: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/django" -}}
|
||||||
|
DJANGO_POSTGRES_HOST=postgresql.django.svc.cluster.local
|
||||||
|
DJANGO_POSTGRES_PORTS=5432
|
||||||
|
DJANGO_POSTGRES_DATABASE=sarex_db
|
||||||
|
DJANGO_POSTGRES_USER={{ index .Data.data "username" }}
|
||||||
|
DJANGO_POSTGRES_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-rabbitmq: secrets/data/rabbitmq/apps/django
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-rabbitmq: |-
|
||||||
|
{{- with secret "secrets/data/rabbitmq/apps/django" -}}
|
||||||
|
CELERY_RABBITMQ_HOST=rabbitmq.rabbitmq.svc.cluster.local
|
||||||
|
CELERY_RABBITMQ_USER={{ index .Data.data "username" }}
|
||||||
|
CELERY_RABBITMQ_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
CELERY_RABBITMQ_VHOST={{ index .Data.data "vhost" }}
|
||||||
|
DJANGO_RABBIT_HOSTNAME=rabbitmq.rabbitmq.svc.cluster.local
|
||||||
|
DJANGO_RABBIT_USER={{ index .Data.data "username" }}
|
||||||
|
DJANGO_RABBIT_PASS={{ index .Data.data "password" }}
|
||||||
|
DJANGO_RABBIT_VHOST={{ index .Data.data "vhost" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-s3: secrets/data/minio/apps/django
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-s3: |-
|
||||||
|
{{- with secret "secrets/data/minio/apps/django" -}}
|
||||||
|
AWS_S3_ENDPOINT_URL=https://minio.contour.infra.sarex.tech
|
||||||
|
S3_HOST=https://minio.contour.infra.sarex.tech
|
||||||
|
{{- $buckets := index .Data.data "buckets" }}
|
||||||
|
S3_BUCKET={{- if gt (len $buckets) 0 -}}{{ index (index $buckets 0) "name" }}{{- else -}}django{{- end -}}
|
||||||
|
S3_LOGIN={{ index .Data.data "access_key" }}
|
||||||
|
S3_PASSWORD={{ index .Data.data "secret_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-kafka: secrets/data/kafka/apps/django
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-kafka: |-
|
||||||
|
{{- with secret "secrets/data/kafka/apps/django" -}}
|
||||||
|
KAFKA_BOOTSTRAP_SERVERS="[\"{{ index .Data.data.auth "bootstrap_servers" }}\"]"
|
||||||
|
KAFKA_SECURITY_PROTOCOL={{ index .Data.data.auth "security_protocol" }}
|
||||||
|
KAFKA_SASL_MECHANISM={{ index .Data.data.auth "sasl_mechanism" }}
|
||||||
|
KAFKA_SASL_PLAIN_USERNAME={{ index .Data.data "username" }}
|
||||||
|
KAFKA_SASL_PLAIN_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-jwt-private: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-jwt-private: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "private_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-jwt-public: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-jwt-public: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "public_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-django-common: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-django-common: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
ZITADEL_ACCESS_TOKEN={{ index .Data.data "django_zitadel_access_token" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: django-vault
|
||||||
|
volumes:
|
||||||
|
- name: django-configmap
|
||||||
|
configMap:
|
||||||
|
name: django-configmap
|
||||||
|
items:
|
||||||
|
- key: production.py
|
||||||
|
path: production.py
|
||||||
|
defaultMode: 420
|
||||||
|
containers:
|
||||||
|
- name: celery
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/backend:production_a96dead0
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/sh", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/django-postgresql ] && . /vault/secrets/django-postgresql
|
||||||
|
[ -f /vault/secrets/django-rabbitmq ] && . /vault/secrets/django-rabbitmq
|
||||||
|
[ -f /vault/secrets/django-s3 ] && . /vault/secrets/django-s3
|
||||||
|
[ -f /vault/secrets/django-kafka ] && . /vault/secrets/django-kafka
|
||||||
|
[ -f /vault/secrets/django-common ] && . /vault/secrets/django-common
|
||||||
|
[ -f /vault/secrets/django-jwt-private ] && export JWT_PRIVATE_KEY="$(cat /vault/secrets/django-jwt-private)"
|
||||||
|
[ -f /vault/secrets/django-jwt-public ] && export JWT_PUBLIC_KEY="$(cat /vault/secrets/django-jwt-public)"
|
||||||
|
set +a
|
||||||
|
exec celery -A config worker -B -l info -E -Q default -n default_worker.%h --concurrency=2
|
||||||
|
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: ALLOWED_HOSTS
|
||||||
|
value: '*'
|
||||||
|
- name: SERVER_USE_CHANGELOG
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_ZITADEL_ENABLED
|
||||||
|
value: "False"
|
||||||
|
- name: DJANGO_SETTINGS_MODULE
|
||||||
|
value: config.settings.production
|
||||||
|
- name: CELERY_REDIS_HOST
|
||||||
|
value: redis
|
||||||
|
- name: CELERY_REDIS_PORT
|
||||||
|
value: "6379"
|
||||||
|
- name: DJANGO_REDIS_HOST
|
||||||
|
value: redis
|
||||||
|
- name: DJANGO_REDIS_PORT
|
||||||
|
value: "6379"
|
||||||
|
- name: BIMV2_INTERNAL_HOST
|
||||||
|
value: http://bim-backend-v2-service.bim-api
|
||||||
|
- name: BIMV2_TIMEOUT
|
||||||
|
value: "60"
|
||||||
|
- name: JWT_KID
|
||||||
|
value: "1"
|
||||||
|
- name: PDM_SYNC
|
||||||
|
value: "1"
|
||||||
|
- name: KC_SYNC_ENABLE
|
||||||
|
value: "0"
|
||||||
|
- name: MEASUREMENTS_HOST
|
||||||
|
value: http://measurements-service.measurements.svc.cluster.local:8000/api
|
||||||
|
- name: MEASUREMENTS_USE_MEASUREMENTS
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_API_HOST
|
||||||
|
value: https://wb.sarex.io
|
||||||
|
- name: SERVER_HOST
|
||||||
|
value: https://wb.sarex.io
|
||||||
|
- name: WORKFLOWS_HOST
|
||||||
|
value: https://wb.sarex.io
|
||||||
|
- name: WORKFLOWS_BASE_HOST
|
||||||
|
value: https://wb.sarex.io
|
||||||
|
- name: WORKFLOWS_USE
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_S3_STREAM_IMPORT
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_SAVE_DIFF_DEM
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_USE_CLICKHOUSE
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_USE_CREATE_COMPARED_GEOTIFF_TASK
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_USE_DJANGO_STORAGE
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_USE_METASHAPE
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_CHANGELOG_MODE_SYSTEM_LOG
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_CHANGELOG_MODE
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_DJANGO_URLS
|
||||||
|
value: "1"
|
||||||
|
- name: CHECK_IMPORT_HASH
|
||||||
|
value: "1"
|
||||||
|
- name: EAV_ENABLE
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_CHECK_IMPORT_HASH
|
||||||
|
value: "1"
|
||||||
|
- name: SERVER_CHUNKED_PATH
|
||||||
|
value: /tmp/chunked_uploads/%Y/%m/%d
|
||||||
|
- name: SERVER_HIDE_USER_SCROLL_PERMISSIONS
|
||||||
|
value: "0"
|
||||||
|
- name: SERVER_USE_WRORKFLOW_STATUS
|
||||||
|
value: "1"
|
||||||
|
- name: ZITADEL_HOST
|
||||||
|
value: https://zitadel-srx.wb.ru
|
||||||
|
- name: SERVER_KAFKA_ENABLED
|
||||||
|
value: "False"
|
||||||
|
- name: KAFKA_TOPICS
|
||||||
|
value: '{"planning": "message-hub-stage", "ams-sync": "ams-sync"}'
|
||||||
|
- name: KAFKA_SSL_CAFILE
|
||||||
|
value: /usr/local/share/ca-certificates/kafka.crt
|
||||||
|
- name: KC_USE_REDIRECT_LOGOUT
|
||||||
|
value: "False"
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
volumeMounts:
|
||||||
|
- name: django-configmap
|
||||||
|
mountPath: /opt/sarex/config/settings/production.py
|
||||||
|
subPath: production.py
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
321
apps/django/base/django-configmap.yaml
Normal file
321
apps/django/base/django-configmap.yaml
Normal file
@ -0,0 +1,321 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: django-configmap
|
||||||
|
namespace: django
|
||||||
|
data:
|
||||||
|
production.py: |
|
||||||
|
import ast
|
||||||
|
import os
|
||||||
|
from .base import *
|
||||||
|
from logging.handlers import SysLogHandler
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
|
def _load_env_file(path):
|
||||||
|
try:
|
||||||
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
|
for raw_line in f:
|
||||||
|
line = raw_line.strip()
|
||||||
|
if not line or line.startswith("#") or "=" not in line:
|
||||||
|
continue
|
||||||
|
key, value = line.split("=", 1)
|
||||||
|
key = key.strip()
|
||||||
|
value = value.strip()
|
||||||
|
if len(value) >= 2 and value[0] == value[-1] and value[0] in ("'", '"'):
|
||||||
|
try:
|
||||||
|
value = ast.literal_eval(value)
|
||||||
|
except (ValueError, SyntaxError):
|
||||||
|
value = value[1:-1]
|
||||||
|
if key and key not in os.environ:
|
||||||
|
os.environ[key] = value
|
||||||
|
except FileNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def _read_secret_file(path, default=""):
|
||||||
|
try:
|
||||||
|
with open(path, "r", encoding="utf-8") as f:
|
||||||
|
return f.read().strip()
|
||||||
|
except FileNotFoundError:
|
||||||
|
return default
|
||||||
|
|
||||||
|
# Fallback for manage.py launched via `kubectl exec` (outside entrypoint),
|
||||||
|
# so Django can still read DB/JWT values from Vault-injected files.
|
||||||
|
_load_env_file("/vault/secrets/django-postgresql")
|
||||||
|
_load_env_file("/vault/secrets/django-rabbitmq")
|
||||||
|
_load_env_file("/vault/secrets/django-s3")
|
||||||
|
_load_env_file("/vault/secrets/django-kafka")
|
||||||
|
_load_env_file("/vault/secrets/django-common")
|
||||||
|
|
||||||
|
if not os.environ.get("JWT_PRIVATE_KEY"):
|
||||||
|
os.environ["JWT_PRIVATE_KEY"] = _read_secret_file("/vault/secrets/django-jwt-private")
|
||||||
|
if not os.environ.get("JWT_PUBLIC_KEY"):
|
||||||
|
os.environ["JWT_PUBLIC_KEY"] = _read_secret_file("/vault/secrets/django-jwt-public")
|
||||||
|
|
||||||
|
ALLOWED_HOSTS = ["*"]
|
||||||
|
FILE_UPLOAD_PERMISSIONS = 0o644
|
||||||
|
DEBUG = False
|
||||||
|
CSRF_COOKIE_SECURE = True
|
||||||
|
CSRF_TRUSTED_ORIGINS = ["https://sarex.contour.infra.sarex.tech", "http://sarex.contour.infra.sarex.tech"]
|
||||||
|
SESSION_COOKIE_SECURE = True
|
||||||
|
SECURE_SSL_REDIRECT = False
|
||||||
|
|
||||||
|
SECRET_KEY = 't2=9+($2f%7ptsdy4!rby$)mcfl1l%o2e@vs^d(g&(wwi&%k1v'
|
||||||
|
|
||||||
|
CORS_ORIGIN_ALLOW_ALL = True
|
||||||
|
SERVERSETTINGS.cache_enabled = True
|
||||||
|
INSTALLED_APPS = list(INSTALLED_APPS) + ['corsheaders']
|
||||||
|
|
||||||
|
CORS_ALLOW_METHODS = (
|
||||||
|
'DELETE',
|
||||||
|
'GET',
|
||||||
|
'OPTIONS',
|
||||||
|
'PATCH',
|
||||||
|
'POST',
|
||||||
|
'PUT',
|
||||||
|
)
|
||||||
|
BASIC_USER_ID = 2
|
||||||
|
|
||||||
|
CORS_ALLOW_HEADERS = (
|
||||||
|
'accept',
|
||||||
|
'accept-encoding',
|
||||||
|
'authorization',
|
||||||
|
'content-type',
|
||||||
|
'user-agent',
|
||||||
|
'x-csrftoken',
|
||||||
|
'x-requested-with',
|
||||||
|
'x-token',
|
||||||
|
'Bearer',
|
||||||
|
)
|
||||||
|
|
||||||
|
HOST = "https://sarex.contour.infra.sarex.tech"
|
||||||
|
|
||||||
|
POSTGRES_DATABASE = os.environ.get('DJANGO_POSTGRES_DATABASE')
|
||||||
|
POSTGRES_USER = os.environ.get('DJANGO_POSTGRES_USER')
|
||||||
|
POSTGRES_PASSWORD = os.environ.get('DJANGO_POSTGRES_PASSWORD')
|
||||||
|
POSTGRES_HOST = os.environ.get('DJANGO_POSTGRES_HOST')
|
||||||
|
POSTGRES_PORTS = os.environ.get('DJANGO_POSTGRES_PORTS', "5432")
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django_prometheus.db.backends.postgresql',
|
||||||
|
'NAME': POSTGRES_DATABASE,
|
||||||
|
'USER': POSTGRES_USER,
|
||||||
|
'PASSWORD': POSTGRES_PASSWORD,
|
||||||
|
'HOST': POSTGRES_HOST,
|
||||||
|
'PORT': POSTGRES_PORTS,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
LOGGING = {
|
||||||
|
'version': 1,
|
||||||
|
'disable_existing_loggers': False,
|
||||||
|
'filters': {
|
||||||
|
'require_debug_false': {
|
||||||
|
'()': 'django.utils.log.RequireDebugFalse',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'formatters': {
|
||||||
|
'verbose': {
|
||||||
|
'format': '[contactor] %(levelname)s %(asctime)s %(message)s',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'handlers': {
|
||||||
|
'console': {
|
||||||
|
'level': 'DEBUG',
|
||||||
|
'class': 'logging.StreamHandler',
|
||||||
|
},
|
||||||
|
'sentry': {
|
||||||
|
'level': 'ERROR',
|
||||||
|
'filters': ['require_debug_false'],
|
||||||
|
'class': 'logging.StreamHandler',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'loggers': {
|
||||||
|
'': {
|
||||||
|
'handlers': ['console', 'sentry'],
|
||||||
|
'level': 'INFO',
|
||||||
|
'propagate': False,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
COMPARATOR_JWT = os.environ.get("COMPARATOR_JWT", "default_jwt")
|
||||||
|
COMPARATOR_URL = os.environ.get("COMPARATOR_URL", "https://wb.sarex.io/comparator")
|
||||||
|
COMPARATOR_SECTION = os.environ.get("COMPARATOR_SECTION", "sarex-production-storage")
|
||||||
|
|
||||||
|
SIMPLE_JWT = {
|
||||||
|
'ACCESS_TOKEN_LIFETIME': timedelta(hours=1),
|
||||||
|
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
|
||||||
|
'ROTATE_REFRESH_TOKENS': False,
|
||||||
|
'BLACKLIST_AFTER_ROTATION': True,
|
||||||
|
'UPDATE_LAST_LOGIN': False,
|
||||||
|
'ALGORITHM': 'RS512',
|
||||||
|
'SIGNING_KEY': os.environ.get("JWT_PRIVATE_KEY", "").replace("\\n", "\n"),
|
||||||
|
'VERIFYING_KEY': os.environ.get("JWT_PUBLIC_KEY", "").replace("\\n", "\n"),
|
||||||
|
'AUDIENCE': None,
|
||||||
|
'ISSUER': os.environ.get('SIMPLE_JWT_ISSUER', 'default_issuer'),
|
||||||
|
'AUTH_HEADER_TYPES': ('Bearer',),
|
||||||
|
'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
|
||||||
|
'USER_ID_FIELD': 'id',
|
||||||
|
'USER_ID_CLAIM': 'user_id',
|
||||||
|
'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
|
||||||
|
'TOKEN_TYPE_CLAIM': 'token_type',
|
||||||
|
'JTI_CLAIM': 'jti',
|
||||||
|
'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
|
||||||
|
'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
|
||||||
|
'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
|
||||||
|
}
|
||||||
|
|
||||||
|
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
|
||||||
|
DEFAULT_FILE_STORAGE = 'sarex.core.storages.CustomS3Boto3Storage'
|
||||||
|
DATA_UPLOAD_MAX_MEMORY_SIZE = 268435456
|
||||||
|
|
||||||
|
if not os.environ.get('ISOLATED', False):
|
||||||
|
import sentry_sdk
|
||||||
|
from sentry_sdk.integrations.django import DjangoIntegration
|
||||||
|
|
||||||
|
sentry_sdk.init(
|
||||||
|
dsn="https://3df2f4b8d3d14595a06c92e9d7c562cb@sentry.io/1501541",
|
||||||
|
integrations=[DjangoIntegration()],
|
||||||
|
environment=os.environ.get('SENTRY_ENVIRONMENT', 'production'),
|
||||||
|
send_default_pii=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
COMPARISON_API_URL = f"{os.environ.get('WORKFLOWSSETTINGS_HOST')}/comparisons"
|
||||||
|
DOCUMENTATION_API_URL = f"{os.environ.get('WORKFLOWSSETTINGS_HOST')}/documentations"
|
||||||
|
PDM_FILES_API_URL = f"{os.environ.get('WORKFLOWSSETTINGS_HOST')}/files"
|
||||||
|
|
||||||
|
WORKFLOWS_TASKS = {
|
||||||
|
"update_orthomosaic_data": {
|
||||||
|
"image": f"{os.environ.get('WORKFLOWSSETTINGS_REGISTRY')}/update-orthomosaic-data:dev",
|
||||||
|
"service_requests": ["django-auth"],
|
||||||
|
"backoff_limit": 3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': (
|
||||||
|
'rest_framework.pagination.LimitOffsetPagination' ),
|
||||||
|
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
|
||||||
|
'PAGE_SIZE': 1000, 'DEFAULT_FILTER_BACKENDS': [
|
||||||
|
'django_filters.rest_framework.DjangoFilterBackend' ],
|
||||||
|
'DEFAULT_AUTHENTICATION_CLASSES': [
|
||||||
|
# 'sarex.authentication.backends.ZitadelJWTAuthentication',
|
||||||
|
'rest_framework.authentication.RemoteUserAuthentication',
|
||||||
|
'rest_framework_simplejwt.authentication.JWTAuthentication',
|
||||||
|
'rest_framework.authentication.BasicAuthentication',
|
||||||
|
'rest_framework.authentication.SessionAuthentication',
|
||||||
|
'sarex.authentication.backends.JWTAuthentication' ],
|
||||||
|
'DEFAULT_PERMISSION_CLASSES': [
|
||||||
|
'rest_framework.permissions.IsAuthenticated', ] }
|
||||||
|
|
||||||
|
AUTHENTICATION_BACKENDS = [
|
||||||
|
'sarex.authentication.backends.CustomRemoteUserBackend',
|
||||||
|
'django.contrib.auth.backends.ModelBackend',
|
||||||
|
'guardian.backends.ObjectPermissionBackend',
|
||||||
|
]
|
||||||
|
|
||||||
|
MIDDLEWARE = [
|
||||||
|
'django_prometheus.middleware.PrometheusBeforeMiddleware',
|
||||||
|
'django.middleware.security.SecurityMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
|
#'django_keycloak.middlewares.AuthorizationHeaderMiddleware',
|
||||||
|
#'django_keycloak.middlewares.KeycloakSessionMiddleware',
|
||||||
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
#'django.contrib.auth.middleware.RemoteUserMiddleware',
|
||||||
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
'django_user_agents.middleware.UserAgentMiddleware',
|
||||||
|
'simple_history.middleware.HistoryRequestMiddleware',
|
||||||
|
'django_prometheus.middleware.PrometheusAfterMiddleware', ]
|
||||||
|
|
||||||
|
|
||||||
|
class KeyCloakSettings(BaseSettings):
|
||||||
|
client_id: str = "client_id"
|
||||||
|
client_secret: str = "client_secret"
|
||||||
|
discovery_url: str = "https://login.wb.sarex.io/realms/sarex/.well-known/openid-configuration"
|
||||||
|
staff: Optional[str] = "Sarex staff"
|
||||||
|
superuser: Optional[str] = "Sarex superusers"
|
||||||
|
sync_with_django: bool = True
|
||||||
|
sync_admin: bool = False
|
||||||
|
group_prefix: str = 'Sarex-Role'
|
||||||
|
company_prefix: str = 'Sarex-Company'
|
||||||
|
department_prefix: str = 'Sarex-Department'
|
||||||
|
position_prefix: str = 'Sarex-Position'
|
||||||
|
separator: str = '__'
|
||||||
|
sync_user_groups: bool = False
|
||||||
|
sync_user_positions: bool = False
|
||||||
|
sync_user_departments: bool = False
|
||||||
|
sync_user_companies: bool = False
|
||||||
|
use_redirect_logout: bool = False
|
||||||
|
logout_redirect_uri: str = "/"
|
||||||
|
default_group_name: Optional[str] = 'Тест'
|
||||||
|
default_company_name: Optional[str] = 'Брусника'
|
||||||
|
trusted_uri: List[str] = ['/api/core/orthophotos/', '/api/token', '/api/token/me']
|
||||||
|
trusted_uri: List[str] = []
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
env_prefix = "KC_"
|
||||||
|
|
||||||
|
|
||||||
|
KEYCLOAKSETTINGS = KeyCloakSettings()
|
||||||
|
|
||||||
|
REMOTE_USER_DEFAULT_COMPANY_ID = 1
|
||||||
|
SAREX_MODULES = [
|
||||||
|
{
|
||||||
|
"name": "Замечания",
|
||||||
|
"uri": "/remarks"
|
||||||
|
},
|
||||||
|
# {
|
||||||
|
# "name": "Управление проектами",
|
||||||
|
# "uri": "/management/projects",
|
||||||
|
# },
|
||||||
|
{
|
||||||
|
"name": "Замечания V2",
|
||||||
|
"uri": "/issues"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Документация",
|
||||||
|
"uri": "/documentations",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Согласование документов",
|
||||||
|
"uri": "/reviews"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Рабочие процессы",
|
||||||
|
"uri": "/processes"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Запросы",
|
||||||
|
"uri": "/rfi"
|
||||||
|
},
|
||||||
|
# {
|
||||||
|
# "name": "Обзор",
|
||||||
|
# "uri": "/projects"
|
||||||
|
# },
|
||||||
|
{
|
||||||
|
"name": "Передача документации",
|
||||||
|
"uri": "/transmittal"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
AUTH_SETTINGS = {
|
||||||
|
"refresh_token": False,
|
||||||
|
"refresh_token_uri": "/api/token/me",
|
||||||
|
"refresh_oauth_token": True,
|
||||||
|
"refresh_oauth_token_uri": "/oauth/token",
|
||||||
|
"refresh_time": 240,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DEBUG=True
|
||||||
|
WEB_APP_AUTH_MODE='jwt-session-based'
|
||||||
|
|
||||||
|
|
||||||
|
SAREX_MODULES_SETTINGS = {
|
||||||
|
"aero": {
|
||||||
|
"enable_new_media": True
|
||||||
|
},
|
||||||
|
"sso_logout_redirect": True
|
||||||
|
}
|
||||||
44
apps/django/base/frontend-deployment.yaml
Normal file
44
apps/django/base/frontend-deployment.yaml
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: frontend
|
||||||
|
namespace: django
|
||||||
|
labels:
|
||||||
|
app: frontend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: frontend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: frontend
|
||||||
|
spec:
|
||||||
|
volumes:
|
||||||
|
- name: nginx-configmap
|
||||||
|
configMap:
|
||||||
|
name: nginx-configmap
|
||||||
|
items:
|
||||||
|
- key: nginx.conf
|
||||||
|
path: nginx.conf
|
||||||
|
defaultMode: 420
|
||||||
|
containers:
|
||||||
|
- name: frontend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/sarex-frontend-dev:contour_0b579274
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 25m
|
||||||
|
memory: 100Mi
|
||||||
|
volumeMounts:
|
||||||
|
- name: nginx-configmap
|
||||||
|
mountPath: /etc/nginx/nginx.conf
|
||||||
|
subPath: nginx.conf
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/django/base/frontend-service.yaml
Normal file
15
apps/django/base/frontend-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: frontend-svc
|
||||||
|
namespace: django
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: frontend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
17
apps/django/base/kustomization.yaml
Normal file
17
apps/django/base/kustomization.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: django
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- serviceaccount.yaml
|
||||||
|
- backend-deployment.yaml
|
||||||
|
- celery-deployment.yaml
|
||||||
|
- frontend-deployment.yaml
|
||||||
|
- backend-service.yaml
|
||||||
|
- frontend-service.yaml
|
||||||
|
- django-configmap.yaml
|
||||||
|
- srx-admin-deployment.yaml
|
||||||
|
- srx-admin-service.yaml
|
||||||
|
- nginx-configmap.yaml
|
||||||
|
- uwsgi-configmap.yaml
|
||||||
7
apps/django/base/namespace.yaml
Normal file
7
apps/django/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: django
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
116
apps/django/base/nginx-configmap.yaml
Normal file
116
apps/django/base/nginx-configmap.yaml
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: nginx-configmap
|
||||||
|
namespace: django
|
||||||
|
data:
|
||||||
|
nginx.conf: |
|
||||||
|
worker_processes auto;
|
||||||
|
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
use epoll;
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
|
||||||
|
# Basic Settings
|
||||||
|
large_client_header_buffers 8 128k;
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 300;
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
client_max_body_size 5000M;
|
||||||
|
client_header_buffer_size 5M;
|
||||||
|
# server_tokens off;
|
||||||
|
# server_names_hash_bucket_size 64;
|
||||||
|
# server_name_in_redirect off;
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
# Logging Settings
|
||||||
|
access_log /var/log/nginx/access.log;
|
||||||
|
error_log /var/log/nginx/error.log;
|
||||||
|
|
||||||
|
# GZIP Settings
|
||||||
|
gzip on;
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_proxied any;
|
||||||
|
gzip_comp_level 6;
|
||||||
|
gzip_buffers 16 8k;
|
||||||
|
gzip_http_version 1.1;
|
||||||
|
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
|
||||||
|
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
root /opt/react_client/;
|
||||||
|
|
||||||
|
add_header 'Access-Control-Allow-Origin' '*' always;
|
||||||
|
add_header 'Access-Control-Allow-Methods' '*' always;
|
||||||
|
add_header 'Access-Control-Allow-Headers' '*' always;
|
||||||
|
|
||||||
|
location = /static/index.bundle.js {
|
||||||
|
add_header Cache-Control 'no-store no-cache, must-revalidate, proxy-revalidate, max-age=0';
|
||||||
|
if_modified_since off;
|
||||||
|
expires off;
|
||||||
|
}
|
||||||
|
location ~^/api/pm/ {
|
||||||
|
#rewrite /api/(.+) /$1 break;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_pass http://backend-svc.pm.svc.cluster.local:8000;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~^/api/v1/documents/ {
|
||||||
|
#rewrite /api/(.+) /$1 break;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_pass http://backend-filestream-svc.documentations.svc.cluster.local:80;
|
||||||
|
}
|
||||||
|
|
||||||
|
# location ~^/(api|admin)/ {
|
||||||
|
# proxy_set_header Host $host;
|
||||||
|
# proxy_pass http://backend-svc.django.svc.cluster.local:80;
|
||||||
|
# }
|
||||||
|
|
||||||
|
location ~^/workspaces-v2/(.+).js {
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Connection "";
|
||||||
|
rewrite /workspaces-v2/(.+) /$1 break;
|
||||||
|
proxy_pass http://frontend-svc.workspaces.svc.cluster.local:80;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~^/workspaces-v2/(.+)\.wasm$ {
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Connection "";
|
||||||
|
rewrite ^/workspaces-v2/(.+) /$1 break;
|
||||||
|
proxy_pass http://frontend-svc.workspaces.svc.cluster.local:80;
|
||||||
|
}
|
||||||
|
|
||||||
|
location @index {
|
||||||
|
add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
|
||||||
|
if_modified_since off;
|
||||||
|
expires off;
|
||||||
|
try_files /static/index.html =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
# location ~^/workflows/(.+).js {
|
||||||
|
# rewrite /workflows/(.+) /$1 break;
|
||||||
|
# proxy_pass http://frontend-svc.processing.svc.cluster.local:80;
|
||||||
|
# }
|
||||||
|
location /service-worker.js {
|
||||||
|
try_files /static/$uri @index;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri @index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
5
apps/django/base/serviceaccount.yaml
Normal file
5
apps/django/base/serviceaccount.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: django-vault
|
||||||
|
namespace: django
|
||||||
32
apps/django/base/srx-admin-deployment.yaml
Normal file
32
apps/django/base/srx-admin-deployment.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: srx-admin-frontend
|
||||||
|
namespace: django
|
||||||
|
labels:
|
||||||
|
app: srx-admin-frontend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: srx-admin-frontend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: srx-admin-frontend
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: srx-admin-frontend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/srx-admin:prod_3b9cb250
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 25m
|
||||||
|
memory: 100Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/django/base/srx-admin-service.yaml
Normal file
15
apps/django/base/srx-admin-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: srx-admin-svc
|
||||||
|
namespace: django
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: srx-admin
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
30
apps/django/base/uwsgi-configmap.yaml
Normal file
30
apps/django/base/uwsgi-configmap.yaml
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: uwsgi-configmap
|
||||||
|
namespace: django
|
||||||
|
data:
|
||||||
|
uwsgi.ini: |
|
||||||
|
[uwsgi]
|
||||||
|
module = config.wsgi:application
|
||||||
|
DJANGO_SETTINGS_MODULE = config.settings.production
|
||||||
|
http = 0.0.0.0:8000
|
||||||
|
processes = 16
|
||||||
|
master = true
|
||||||
|
vacuum = true
|
||||||
|
enable-threads = true
|
||||||
|
buffer-size = 65535
|
||||||
|
stats = :3031
|
||||||
|
stats-http = true
|
||||||
|
memory-report = true
|
||||||
|
lazy-apps = true
|
||||||
|
listen = 128
|
||||||
|
disable-write-exception= 0
|
||||||
|
harakiri = 300
|
||||||
|
socket-timeout = 300
|
||||||
|
chunked-input-timeout = 300
|
||||||
|
http-timeout = 300
|
||||||
|
worker-reload-mercy = 240
|
||||||
|
mule-reload-mercy = 240
|
||||||
|
static-map = /static=/opt/sarex/sarex/static/
|
||||||
|
static-map = /media=/media/
|
||||||
9
apps/django/yc-k8s-test/kustomization.yaml
Normal file
9
apps/django/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
- postgresql.yaml
|
||||||
|
- redis-deployment.yaml
|
||||||
|
- redis-service.yaml
|
||||||
|
patches: []
|
||||||
122
apps/django/yc-k8s-test/postgresql.yaml
Normal file
122
apps/django/yc-k8s-test/postgresql.yaml
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: postgresql
|
||||||
|
namespace: django
|
||||||
|
spec:
|
||||||
|
interval: 5m
|
||||||
|
timeout: 2h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: postgresql-contour
|
||||||
|
version: "17.0.7"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: yc-oci-charts
|
||||||
|
namespace: flux-system
|
||||||
|
|
||||||
|
install:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
upgrade:
|
||||||
|
timeout: 2h
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
values:
|
||||||
|
global:
|
||||||
|
security:
|
||||||
|
allowInsecureImages: true
|
||||||
|
defaultStorageClass: local-path
|
||||||
|
postgresql:
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
auth:
|
||||||
|
username: ""
|
||||||
|
database: ""
|
||||||
|
secretKeys:
|
||||||
|
userPasswordKey: "postgres-password"
|
||||||
|
image:
|
||||||
|
registry: cr.yandex/crp3ccidau046kdj8g9q
|
||||||
|
repository: contour/postgresql
|
||||||
|
tag: 17.0.7
|
||||||
|
pullPolicy: Always
|
||||||
|
metrics:
|
||||||
|
enabled: false
|
||||||
|
prometheusRule:
|
||||||
|
enabled: false
|
||||||
|
primary:
|
||||||
|
containerSecurityContext:
|
||||||
|
readOnlyRootFilesystem: false
|
||||||
|
persistence:
|
||||||
|
storageClass: local-path
|
||||||
|
size: 20Gi
|
||||||
|
customLivenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customReadinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
customStartupProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- exec pg_isready -U "postgres" -d postgres -h 127.0.0.1 -p 5432
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
successThreshold: 1
|
||||||
|
failureThreshold: 6
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 128Mi
|
||||||
|
nodeSelector:
|
||||||
|
dedicated: db
|
||||||
|
tolerations:
|
||||||
|
- key: dedicated
|
||||||
|
operator: Equal
|
||||||
|
value: db
|
||||||
|
effect: NoSchedule
|
||||||
|
contour:
|
||||||
|
enabled: true
|
||||||
|
adminUser: "postgres"
|
||||||
|
sharedPreloadLibraries: "pg_stat_statements"
|
||||||
|
vault:
|
||||||
|
enabled: true
|
||||||
|
role: postgresql
|
||||||
|
authPath: auth/kubernetes
|
||||||
|
secretPath: secrets/data/postgresql/admin
|
||||||
|
secretKey: postgres-password
|
||||||
|
usersSecretPath: secrets/data/postgresql/users
|
||||||
|
databases:
|
||||||
|
- name: sarex_db
|
||||||
|
user: sarex
|
||||||
|
passwordKey: sarex
|
||||||
|
extensions:
|
||||||
|
- pg_stat_statements
|
||||||
|
restoreFromDump: false
|
||||||
|
s3-proxy:
|
||||||
|
endpointUrl: "s3-proxy-service.postgresql.svc.cluster.local"
|
||||||
27
apps/django/yc-k8s-test/redis-deployment.yaml
Normal file
27
apps/django/yc-k8s-test/redis-deployment.yaml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: redis
|
||||||
|
namespace: django
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: redis
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: redis
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: redis
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/redis:latest
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- containerPort: 6379
|
||||||
|
protocol: TCP
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
13
apps/django/yc-k8s-test/redis-service.yaml
Normal file
13
apps/django/yc-k8s-test/redis-service.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: redis
|
||||||
|
namespace: django
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app: redis
|
||||||
|
ports:
|
||||||
|
- port: 6379
|
||||||
|
targetPort: 6379
|
||||||
|
protocol: TCP
|
||||||
33
apps/document-link/base/deployment.yaml
Normal file
33
apps/document-link/base/deployment.yaml
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: frontend
|
||||||
|
namespace: document-link
|
||||||
|
labels:
|
||||||
|
app: frontend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: frontend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: frontend
|
||||||
|
version: stable
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: frontend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/document-link-frontend:wb_cb2027ce
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 25m
|
||||||
|
memory: 100Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
8
apps/document-link/base/kustomization.yaml
Normal file
8
apps/document-link/base/kustomization.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: document-link
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- deployment.yaml
|
||||||
|
- service.yaml
|
||||||
7
apps/document-link/base/namespace.yaml
Normal file
7
apps/document-link/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: document-link
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
15
apps/document-link/base/service.yaml
Normal file
15
apps/document-link/base/service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: frontend-service
|
||||||
|
namespace: document-link
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: frontend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
10
apps/document-link/yc-k8s-test/kustomization.yaml
Normal file
10
apps/document-link/yc-k8s-test/kustomization.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ../base
|
||||||
|
patches: []
|
||||||
|
# - path: replicas.yaml
|
||||||
|
# target:
|
||||||
|
# kind: Deployment
|
||||||
|
# name: frontend
|
||||||
8
apps/document-link/yc-k8s-test/replicas.yaml
Normal file
8
apps/document-link/yc-k8s-test/replicas.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: frontend
|
||||||
|
namespace: document-link
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
173
apps/documentations/base/api-deployment.yaml
Normal file
173
apps/documentations/base/api-deployment.yaml
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: documentations-api
|
||||||
|
namespace: documentations
|
||||||
|
labels:
|
||||||
|
app: documentations-api
|
||||||
|
service: documentations-api
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: documentations-api
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: documentations-api
|
||||||
|
service: documentations-api
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: documentations
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-postgresql: secrets/data/postgresql/apps/documentations
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-postgresql: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/documentations" -}}
|
||||||
|
POSTGRES_ADDRESS=postgresql.documentations.svc.cluster.local
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_DB=documentations_db
|
||||||
|
POSTGRES_USER={{ index .Data.data "username" }}
|
||||||
|
POSTGRES_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-common: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-common: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
DJANGO_BASIC_AUTH={{ index .Data.data "key" }}
|
||||||
|
DJANGO_BASIC_AUTH_FOR_GET_USER={{ index .Data.data "key" }}
|
||||||
|
DOCUMENT_PUBLIC_LINK_JWT_SECRET={{ index .Data.data "documentations_public_link_jwt_secret" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-s3-account-json: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-s3-account-json: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
{{ index .Data.data "documentations_s3_service_account_json" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-zitadel-account-json: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-zitadel-account-json: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
{{ index .Data.data "documentations_zitadel_account_json" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-rsa-public: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-rsa-public: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "public_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: documentations-vault
|
||||||
|
containers:
|
||||||
|
- name: documentations-api
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/documentations:prod_a9990430
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/sh", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/documentations-postgresql ] && . /vault/secrets/documentations-postgresql
|
||||||
|
[ -f /vault/secrets/documentations-common ] && . /vault/secrets/documentations-common
|
||||||
|
[ -f /vault/secrets/documentations-rsa-public ] && export PUBLIC_KEY="$(cat /vault/secrets/documentations-rsa-public)"
|
||||||
|
set +a
|
||||||
|
exec /app/entrypoint.sh
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: POSTGRES_POOL_SIZE
|
||||||
|
value: "20"
|
||||||
|
- name: ZITADEL_ACCOUNT
|
||||||
|
value: /vault/secrets/documentations-zitadel-account-json
|
||||||
|
- name: ZITADEL_DOMAIN
|
||||||
|
value: zitadel-srx.wb.ru
|
||||||
|
- name: USE_ZITADEL
|
||||||
|
value: "0"
|
||||||
|
- name: FLOWS_URL
|
||||||
|
value: http://backend-svc.flows.svc.cluster.local:80
|
||||||
|
- name: LAST_MASTER_BIM
|
||||||
|
value: "36311"
|
||||||
|
- name: API_ADDRESS
|
||||||
|
value: 0.0.0.0:8080
|
||||||
|
- name: API_ADDRESS_FILE
|
||||||
|
value: 0.0.0.0:8080
|
||||||
|
- name: DOCUMENT_PUBLIC_LINK_JWT_EXPIRATION_MINUTES
|
||||||
|
value: "5"
|
||||||
|
- name: ENABLE_SQL_QUERY
|
||||||
|
value: "0"
|
||||||
|
- name: ENABLE_SSL
|
||||||
|
value: "0"
|
||||||
|
- name: WORKSPACE_V2_EXTERNAL_URL
|
||||||
|
value: https://sarex.contour.infra.sarex.tech/workspaces-v2/
|
||||||
|
- name: ENABLE_S3
|
||||||
|
value: "1"
|
||||||
|
- name: CONTAINER_REGISTRY
|
||||||
|
value: cr.yandex/crp3ccidau046kdj8g9q
|
||||||
|
- name: ENVIRONMENT
|
||||||
|
value: production
|
||||||
|
- name: LAST_SLAVE_1_BIM
|
||||||
|
value: "1000000"
|
||||||
|
- name: HOST
|
||||||
|
value: http://backend-api-svc.documentations.svc.cluster.local:80
|
||||||
|
- name: FILE_STREAM_HOST
|
||||||
|
value: sarex.contour.infra.sarex.tech
|
||||||
|
- name: DOCUMENTATION_URL
|
||||||
|
value: http://documentations-api.documentations.svc.cluster.local:80/
|
||||||
|
- name: WORKFLOW_URL
|
||||||
|
value: http://backend-svc.processing.svc.cluster.local:80/
|
||||||
|
- name: WORKSPACE_URL
|
||||||
|
value: http://backend-svc.workspaces.svc.cluster.local:80/
|
||||||
|
- name: BIM_API_URL
|
||||||
|
value: http://bim-api-service.bim.svc.cluster.local:8080/
|
||||||
|
- name: BIM_API_V2_URL
|
||||||
|
value: http://backend-service.bim.svc.cluster.local:8000/
|
||||||
|
- name: WORKSPACE_BUNDLE_VERSION
|
||||||
|
value: v1
|
||||||
|
- name: SYSTEM_LOG_URL
|
||||||
|
value: http://backend-svc.system-log.svc.cluster.local:80
|
||||||
|
- name: DJANGO_HOST
|
||||||
|
value: http://backend-svc.django.svc.cluster.local:80
|
||||||
|
- name: MARKS_PROCESSING_URL
|
||||||
|
value: http://marks-service:8000
|
||||||
|
- name: PUBLIC_LINK_HOST
|
||||||
|
value: https://document-link-srx.wb.ru
|
||||||
|
- name: NAMESPACE
|
||||||
|
value: documentations
|
||||||
|
- name: DJANGO_ORIGINATOR
|
||||||
|
value: docs_prod
|
||||||
|
- name: WORKFLOW_IMAGES_VERSION
|
||||||
|
value: master
|
||||||
|
- name: WORKFLOWS_IMAGES_VERSION
|
||||||
|
value: master
|
||||||
|
- name: S3_SERVICE_ACCOUNT
|
||||||
|
value: /vault/secrets/documentations-s3-account-json
|
||||||
|
- name: READ_WRITE_TIMEOUT_FILE_STREAM
|
||||||
|
value: 6h
|
||||||
|
- name: CACHE_DEFAULT_EXPIRATION
|
||||||
|
value: 60s
|
||||||
|
- name: ENABLE_SMTP
|
||||||
|
value: "True"
|
||||||
|
- name: ENABLE_MAILGUN
|
||||||
|
value: "False"
|
||||||
|
- name: CACHE_CLEANUP_INTERVAL
|
||||||
|
value: 60s
|
||||||
|
- name: ENABLE_AUTH_JWT_IN_URL
|
||||||
|
value: "true"
|
||||||
|
- name: ENABLE_SIGNATURE_IN_URL
|
||||||
|
value: "false"
|
||||||
|
- name: USE_CACHE_IN_FILE_STREAMER
|
||||||
|
value: "0"
|
||||||
|
- name: VALKEY_ADDR
|
||||||
|
value: redis:6379
|
||||||
|
- name: VALKEY_HOST
|
||||||
|
value: redis
|
||||||
|
- name: VALKEY_PORT
|
||||||
|
value: "6379"
|
||||||
|
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/documentations/base/api-service.yaml
Normal file
15
apps/documentations/base/api-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: backend-api-svc
|
||||||
|
namespace: documentations
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: documentations-api
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8080
|
||||||
|
protocol: TCP
|
||||||
173
apps/documentations/base/filestream-deployment.yaml
Normal file
173
apps/documentations/base/filestream-deployment.yaml
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: documentations-filestream
|
||||||
|
namespace: documentations
|
||||||
|
labels:
|
||||||
|
app: documentations-filestream
|
||||||
|
service: documentations-filestream
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: documentations-filestream
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: documentations-filestream
|
||||||
|
service: documentations-filestream
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: documentations
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-postgresql: secrets/data/postgresql/apps/documentations
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-postgresql: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/documentations" -}}
|
||||||
|
POSTGRES_ADDRESS=postgresql.documentations.svc.cluster.local
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_DB=documentations_db
|
||||||
|
POSTGRES_USER={{ index .Data.data "username" }}
|
||||||
|
POSTGRES_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-common: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-common: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
DJANGO_BASIC_AUTH={{ index .Data.data "key" }}
|
||||||
|
DJANGO_BASIC_AUTH_FOR_GET_USER={{ index .Data.data "key" }}
|
||||||
|
DOCUMENT_PUBLIC_LINK_JWT_SECRET={{ index .Data.data "documentations_public_link_jwt_secret" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-s3-account-json: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-s3-account-json: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
{{ index .Data.data "documentations_s3_service_account_json" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-zitadel-account-json: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-zitadel-account-json: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
{{ index .Data.data "documentations_zitadel_account_json" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-rsa-public: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-rsa-public: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "public_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: documentations-vault
|
||||||
|
containers:
|
||||||
|
- name: documentations-filestream
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/documentations-api-files:prod_a9990430
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/sh", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/documentations-postgresql ] && . /vault/secrets/documentations-postgresql
|
||||||
|
[ -f /vault/secrets/documentations-common ] && . /vault/secrets/documentations-common
|
||||||
|
[ -f /vault/secrets/documentations-rsa-public ] && export PUBLIC_KEY="$(cat /vault/secrets/documentations-rsa-public)"
|
||||||
|
set +a
|
||||||
|
exec /app/file_entrypoint.sh
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: POSTGRES_POOL_SIZE
|
||||||
|
value: "20"
|
||||||
|
- name: ZITADEL_ACCOUNT
|
||||||
|
value: /vault/secrets/documentations-zitadel-account-json
|
||||||
|
- name: ZITADEL_DOMAIN
|
||||||
|
value: zitadel-srx.wb.ru
|
||||||
|
- name: USE_ZITADEL
|
||||||
|
value: "0"
|
||||||
|
- name: FLOWS_URL
|
||||||
|
value: http://backend-svc.flows.svc.cluster.local:80
|
||||||
|
- name: LAST_MASTER_BIM
|
||||||
|
value: "36311"
|
||||||
|
- name: API_ADDRESS
|
||||||
|
value: 0.0.0.0:8080
|
||||||
|
- name: API_ADDRESS_FILE
|
||||||
|
value: 0.0.0.0:8080
|
||||||
|
- name: DOCUMENT_PUBLIC_LINK_JWT_EXPIRATION_MINUTES
|
||||||
|
value: "5"
|
||||||
|
- name: ENABLE_SQL_QUERY
|
||||||
|
value: "0"
|
||||||
|
- name: ENABLE_SSL
|
||||||
|
value: "0"
|
||||||
|
- name: WORKSPACE_V2_EXTERNAL_URL
|
||||||
|
value: https://srx.wb.ru/workspaces-v2/
|
||||||
|
- name: ENABLE_S3
|
||||||
|
value: "1"
|
||||||
|
- name: CONTAINER_REGISTRY
|
||||||
|
value: cr.yandex/crp3ccidau046kdj8g9q
|
||||||
|
- name: ENVIRONMENT
|
||||||
|
value: production
|
||||||
|
- name: LAST_SLAVE_1_BIM
|
||||||
|
value: "1000000"
|
||||||
|
- name: HOST
|
||||||
|
value: http://backend-api-svc.documentations.svc.cluster.local:80
|
||||||
|
- name: FILE_STREAM_HOST
|
||||||
|
value: srx.wb.ru
|
||||||
|
- name: DOCUMENTATION_URL
|
||||||
|
value: http://backend-api-svc.documentations.svc.cluster.local:80/
|
||||||
|
- name: WORKFLOW_URL
|
||||||
|
value: http://workflows-api-service.workflow.svc.cluster.local:8000/
|
||||||
|
- name: WORKSPACE_URL
|
||||||
|
value: http://backend-svc.workspaces.svc.cluster.local:80/
|
||||||
|
- name: BIM_API_URL
|
||||||
|
value: http://bim-api-service.bim.svc.cluster.local:8080/
|
||||||
|
- name: BIM_API_V2_URL
|
||||||
|
value: http://backend-service.bim.svc.cluster.local:8000/
|
||||||
|
- name: WORKSPACE_BUNDLE_VERSION
|
||||||
|
value: v1
|
||||||
|
- name: SYSTEM_LOG_URL
|
||||||
|
value: http://api-service.system-log.svc.cluster.local:8000
|
||||||
|
- name: DJANGO_HOST
|
||||||
|
value: http://backend-svc.django.svc.cluster.local:80
|
||||||
|
- name: MARKS_PROCESSING_URL
|
||||||
|
value: http://marks-service:8000
|
||||||
|
- name: PUBLIC_LINK_HOST
|
||||||
|
value: https://document-link-srx.wb.ru
|
||||||
|
- name: NAMESPACE
|
||||||
|
value: documentations
|
||||||
|
- name: DJANGO_ORIGINATOR
|
||||||
|
value: docs_prod
|
||||||
|
- name: WORKFLOW_IMAGES_VERSION
|
||||||
|
value: master
|
||||||
|
- name: WORKFLOWS_IMAGES_VERSION
|
||||||
|
value: master
|
||||||
|
- name: S3_SERVICE_ACCOUNT
|
||||||
|
value: /vault/secrets/documentations-s3-account-json
|
||||||
|
- name: READ_WRITE_TIMEOUT_FILE_STREAM
|
||||||
|
value: 6h
|
||||||
|
- name: CACHE_DEFAULT_EXPIRATION
|
||||||
|
value: 60s
|
||||||
|
- name: ENABLE_SMTP
|
||||||
|
value: "True"
|
||||||
|
- name: ENABLE_MAILGUN
|
||||||
|
value: "False"
|
||||||
|
- name: CACHE_CLEANUP_INTERVAL
|
||||||
|
value: 60s
|
||||||
|
- name: ENABLE_AUTH_JWT_IN_URL
|
||||||
|
value: "false"
|
||||||
|
- name: ENABLE_SIGNATURE_IN_URL
|
||||||
|
value: "true"
|
||||||
|
- name: USE_CACHE_IN_FILE_STREAMER
|
||||||
|
value: "0"
|
||||||
|
- name: VALKEY_ADDR
|
||||||
|
value: redis:6379
|
||||||
|
- name: VALKEY_HOST
|
||||||
|
value: redis
|
||||||
|
- name: VALKEY_PORT
|
||||||
|
value: "6379"
|
||||||
|
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/documentations/base/filestream-service.yaml
Normal file
15
apps/documentations/base/filestream-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: backend-filestream-svc
|
||||||
|
namespace: documentations
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: documentations-filestream
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8080
|
||||||
|
protocol: TCP
|
||||||
32
apps/documentations/base/frontend-deployment.yaml
Normal file
32
apps/documentations/base/frontend-deployment.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: frontend
|
||||||
|
namespace: documentations
|
||||||
|
labels:
|
||||||
|
app: frontend
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: frontend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: frontend
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: frontend
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/documentation-frontend-app:brusnika_ae1bb076
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 25m
|
||||||
|
memory: 100Mi
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
15
apps/documentations/base/frontend-service.yaml
Normal file
15
apps/documentations/base/frontend-service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: frontend-svc
|
||||||
|
namespace: documentations
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: frontend
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 80
|
||||||
|
protocol: TCP
|
||||||
15
apps/documentations/base/kustomization.yaml
Normal file
15
apps/documentations/base/kustomization.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
namespace: documentations
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- serviceaccount.yaml
|
||||||
|
- api-deployment.yaml
|
||||||
|
- pdm-deployment.yaml
|
||||||
|
- filestream-deployment.yaml
|
||||||
|
- frontend-deployment.yaml
|
||||||
|
- api-service.yaml
|
||||||
|
- pdm-service.yaml
|
||||||
|
- filestream-service.yaml
|
||||||
|
- frontend-service.yaml
|
||||||
7
apps/documentations/base/namespace.yaml
Normal file
7
apps/documentations/base/namespace.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: documentations
|
||||||
|
labels:
|
||||||
|
istio-injection: enabled
|
||||||
181
apps/documentations/base/pdm-deployment.yaml
Normal file
181
apps/documentations/base/pdm-deployment.yaml
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: pdm-api
|
||||||
|
namespace: documentations
|
||||||
|
labels:
|
||||||
|
app: pdm-api
|
||||||
|
service: pdm-api
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: pdm-api
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: pdm-api
|
||||||
|
service: pdm-api
|
||||||
|
annotations:
|
||||||
|
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"
|
||||||
|
vault.hashicorp.com/agent-init-first: "true"
|
||||||
|
vault.hashicorp.com/agent-inject: "true"
|
||||||
|
vault.hashicorp.com/agent-pre-populate-only: "true"
|
||||||
|
vault.hashicorp.com/auth-path: auth/kubernetes
|
||||||
|
vault.hashicorp.com/role: documentations
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-postgresql: secrets/data/postgresql/apps/documentations
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-postgresql: |-
|
||||||
|
{{- with secret "secrets/data/postgresql/apps/documentations" -}}
|
||||||
|
POSTGRES_ADDRESS=postgresql.documentations.svc.cluster.local
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_DB=documentations_db
|
||||||
|
POSTGRES_USER={{ index .Data.data "username" }}
|
||||||
|
POSTGRES_PASSWORD={{ index .Data.data "password" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-common: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-common: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
DJANGO_BASIC_AUTH={{ index .Data.data "key" }}
|
||||||
|
RELEASES_TOKEN={{ index .Data.data "documentations_releases_token" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-s3-account-json: secrets/data/vault/common/django_auth
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-s3-account-json: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/django_auth" -}}
|
||||||
|
{{ index .Data.data "documentations_s3_service_account_json" }}
|
||||||
|
{{- end -}}
|
||||||
|
vault.hashicorp.com/agent-inject-secret-documentations-rsa-public: secrets/data/vault/common/rsa_keys
|
||||||
|
vault.hashicorp.com/agent-inject-template-documentations-rsa-public: |-
|
||||||
|
{{- with secret "secrets/data/vault/common/rsa_keys" -}}
|
||||||
|
{{ index .Data.data "public_key" }}
|
||||||
|
{{- end -}}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: documentations-vault
|
||||||
|
containers:
|
||||||
|
- name: pdm-api
|
||||||
|
image: cr.yandex/crp3ccidau046kdj8g9q/pdmv2:prod_38958427
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["/bin/sh", "-ec"]
|
||||||
|
args:
|
||||||
|
- |
|
||||||
|
set -a
|
||||||
|
[ -f /vault/secrets/documentations-postgresql ] && . /vault/secrets/documentations-postgresql
|
||||||
|
[ -f /vault/secrets/documentations-common ] && . /vault/secrets/documentations-common
|
||||||
|
[ -f /vault/secrets/documentations-rsa-public ] && export PUBLIC_KEY="$(cat /vault/secrets/documentations-rsa-public)"
|
||||||
|
set +a
|
||||||
|
exec ./httpserver
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: USE_EXPERIMENTAL
|
||||||
|
value: "true"
|
||||||
|
- name: POSTGRES_POOL_SIZE
|
||||||
|
value: "20"
|
||||||
|
- name: TRANSMITTALS_BASE_URL
|
||||||
|
value: mock
|
||||||
|
- name: API_ADDRESS
|
||||||
|
value: 0.0.0.0:8080
|
||||||
|
- name: API_ADDRESS_FILE
|
||||||
|
value: 0.0.0.0:8080
|
||||||
|
- name: BUCKET_NAME
|
||||||
|
value: attachments-storage
|
||||||
|
- name: API_HOST_PREFIX
|
||||||
|
value: /
|
||||||
|
- name: APP_NAME
|
||||||
|
value: pdm_v2
|
||||||
|
- name: APP_VERSION
|
||||||
|
value: 0.0.1
|
||||||
|
- name: ENABLE_PERMISSIONS_FILTER
|
||||||
|
value: "1"
|
||||||
|
- name: PERMISSIONS_FILTER_COMPANIES
|
||||||
|
value: '[1]'
|
||||||
|
- name: TRANSMITTALS_ENABLE
|
||||||
|
value: "false"
|
||||||
|
- name: DRAWINGS_INTERNAL_URL
|
||||||
|
value: http://drawings-api-service.drawings.svc.cluster.local:80
|
||||||
|
- name: ATTACHMENTS_URL
|
||||||
|
value: http://attachments-service.attachments.svc.cluster.local:8000
|
||||||
|
- name: BIM_API_V2_URL
|
||||||
|
value: http://backend-service.bim.svc.cluster.local:8000/
|
||||||
|
- name: BIM_V2_HOST
|
||||||
|
value: http://backend-service.bim.svc.cluster.local:8000/
|
||||||
|
- name: CACHE_CLEANUP_INTERVAL
|
||||||
|
value: 60s
|
||||||
|
- name: CACHE_DEFAULT_EXPIRATION
|
||||||
|
value: 60s
|
||||||
|
- name: DJANGO_HOST
|
||||||
|
value: http://backend-svc.django.svc.cluster.local:80
|
||||||
|
- name: DJANGO_ORIGINATOR
|
||||||
|
value: docs_prod
|
||||||
|
- name: DOCUMENTATION_URL
|
||||||
|
value: http://backend-api-svc.documentations.svc.cluster.local:80/
|
||||||
|
- name: EAV_URL
|
||||||
|
value: http://backend-svc.eav.svc.cluster.local:80
|
||||||
|
- name: ENABLE_OBSERVABILITY
|
||||||
|
value: "false"
|
||||||
|
- name: ENABLE_S3
|
||||||
|
value: "1"
|
||||||
|
- name: ENABLE_SSL
|
||||||
|
value: "0"
|
||||||
|
- name: ENVIRONMENT
|
||||||
|
value: prod
|
||||||
|
- name: FLOWS_URL
|
||||||
|
value: http://backend-svc.flows.svc.cluster.local:80
|
||||||
|
- name: HEIGHT_THUMB_ATTACHMENTS
|
||||||
|
value: "300"
|
||||||
|
- name: HEIGHT_THUMB_STATES
|
||||||
|
value: "73"
|
||||||
|
- name: HTTP_PORT
|
||||||
|
value: "8080"
|
||||||
|
- name: INSPECTIONS_URL
|
||||||
|
value: http://inspections-service.inspections.svc.cluster.local:80
|
||||||
|
- name: LOG_LEVEL
|
||||||
|
value: INFO
|
||||||
|
- name: NOTES_URL
|
||||||
|
- name: OBSERVABILITY_COLLECTOR_ENDPOINT
|
||||||
|
value: temp
|
||||||
|
- name: READ_WRITE_TIMEOUT_FILE_STREAM
|
||||||
|
value: 6h
|
||||||
|
- name: RELEASES_URL
|
||||||
|
value: https://gitlab.com
|
||||||
|
- name: REMARKS_URL
|
||||||
|
value: http://remarks-static-service.remarks.svc.cluster.local:8080/remarks
|
||||||
|
- name: RESOURCES_URL
|
||||||
|
value: http://backend-svc.resources.svc.cluster.local:80
|
||||||
|
- name: S3_SERVICE_ACCOUNT
|
||||||
|
value: /vault/secrets/documentations-s3-account-json
|
||||||
|
- name: STATES_URL
|
||||||
|
value: http://backend-svc.workspaces.svc.cluster.local:80/
|
||||||
|
- name: SUBSCRIPTIONS_URL
|
||||||
|
value: http://backend-svc.subscriptions.svc.cluster.local:80
|
||||||
|
- name: SYSTEM_LOG_URL
|
||||||
|
value: http://api-service.system-log.svc.cluster.local:8000
|
||||||
|
- name: TARGET_URL
|
||||||
|
value: http://backend-svc.django.svc.cluster.local:80
|
||||||
|
- name: USE_CACHE_IN_FILE_STREAMER
|
||||||
|
value: "1"
|
||||||
|
- name: USE_SUBSCRIPTIONS
|
||||||
|
value: "false"
|
||||||
|
- name: WIDTH_THUMB_ATTACHMENTS
|
||||||
|
value: "300"
|
||||||
|
- name: WIDTH_THUMB_STATES
|
||||||
|
value: "120"
|
||||||
|
- name: WORKFLOWS_IMAGES_VERSION
|
||||||
|
value: master
|
||||||
|
- name: WORKFLOW_IMAGES_VERSION
|
||||||
|
value: master
|
||||||
|
- name: WORKFLOW_URL
|
||||||
|
value: http://backend-svc.processing.svc.cluster.local:80/
|
||||||
|
- name: WORKSPACE_BUNDLE_VERSION
|
||||||
|
value: v1
|
||||||
|
- name: WORKSPACE_URL
|
||||||
|
value: http://backend-svc.workspaces.svc.cluster.local:80/
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: "25m"
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user