Compare commits

..

200 Commits

Author SHA1 Message Date
emelinda
ad7050ca7d Add audit collector HelmRelease for security-audit namespace to process and export kube-apiserver audit logs, including Kafka and Vault integration 2026-11-01 22:02:54 +03:00
emelinda
5525cc33ff Update CLAUDE.md to reflect revised cluster configurations, updated overlay conventions, and slice generation details. Clarify application, infrastructure, and routing specifics, including new clusters and template variables. 2026-11-01 21:35:44 +03:00
e4e5e06aec ++ camunda legacy wait 2026-10-31 17:45:29 +03:00
9f2c6932d7 ++ camunda timeout 30m 2026-10-31 15:21:43 +03:00
ivan
cd94931c76 ++ merge feat/zitadel-setup: sarex-installer machine user
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 13:53:12 +05:00
ivan
104bde49c4 ++ 2026-10-29 18:23:28 +05:00
ivan
b61571a858 ++ 2026-10-29 17:36:35 +05:00
13b9ca8a9f ++ stand chart repo from vars 2026-10-29 15:05:47 +03:00
ivan
31bdc74c80 ++ 2026-10-29 16:11:54 +05:00
ivan
9f4801af68 ++ contour zitadel: sarex-installer machine user for zitadel-setup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 15:32:27 +05:00
ivan
63b33aaafb ++ 2026-10-29 13:06:42 +05:00
ivan
fb52d422ca ++ 2026-10-29 12:37:46 +05:00
ivan
deb0d5f0eb ++ 2026-10-28 20:06:09 +05:00
1613172dd6 ++ contour kafka client sasl plaintext 2026-10-28 15:47:31 +03:00
b7c36a5348 ++ stand routing layer 2026-10-28 15:31:36 +03:00
0037411aae ++ stand camunda via vault 2026-10-28 15:18:25 +03:00
c23b51e2a5 infra: route GoAlert through VK Istio 2026-10-28 14:39:19 +03:00
448a994fd4 Merge branch 'master' of https://gitlab.sarex.io/infra/iac 2026-10-28 14:38:14 +03:00
Дмитрий Лавренчук
bfad13da2f Merge branch 'pdm/update-image-api-fix-copy' into 'master'
fix: image documentation updated

See merge request infra/iac!14
2026-10-28 10:36:26 +00:00
diamondrigido
f936f5ffb0 fix: image documentation updated 2026-10-28 12:31:00 +02:00
ivan
25b3536124 ++ 2026-10-28 14:51:22 +05:00
ivan
cdc2c34bca ++ 2026-10-28 14:39:15 +05:00
ivan
3b53a99371 ++ 2026-10-28 14:30:36 +05:00
ivan
aa3365cb0d ++ 2026-10-28 14:27:20 +05:00
ivan
7cf8b13f91 ++ 2026-10-28 14:00:45 +05:00
ivan
83bfd4e046 ++ 2026-10-28 13:32:52 +05:00
1c3525fc1b ++ stand platform layer zitadel 2026-10-28 11:15:41 +03:00
a3fa7ba4c0 ++ stand data layer 2026-10-28 10:37:30 +03:00
32e4cff59e ++ stand flux cancel stale health check 2026-10-28 10:33:19 +03:00
4a46bb6626 ++ contour cert-manager images 2026-10-28 10:33:19 +03:00
34cbe7c79e ++ stand mesh layer 2026-10-28 10:33:19 +03:00
ivan
ae911c7d38 ++ 2026-10-28 12:31:10 +05:00
ivan
bd4b6d4ea6 ++ 2026-10-28 12:02:22 +05:00
ivan
56ade56754 ++ 2026-10-28 11:48:59 +05:00
emelinda
8a3540ead7 Add CDE_API_ENABLED environment variable to api and filestream configurations 2026-10-28 08:32:37 +03:00
emelinda
3dadb7a87a Merge branch 'master' of gitlab.sarex.io:infra/iac 2026-10-28 08:30:59 +03:00
emelinda
fc8ddcb511 Add CDE_API_ENABLED environment variable to filestream and api configurations in d8-ugmk-prod 2026-10-28 08:30:40 +03:00
f5a217e793 ++ stand vault layer 2026-10-27 22:48:56 +03:00
eeb27c6e29 ++ slice jobs allow failure 2026-10-27 22:36:55 +03:00
0fb5374e06 ++ slice job per contour 2026-10-27 22:35:41 +03:00
0a81938175 ++ publish contour slices 2026-10-27 22:30:13 +03:00
84f2555494 ++ stand cluster and slicer 2026-10-27 22:30:13 +03:00
faa1dd2cac Merge branch 'task/PDM-2628_download_not_work_wb' into 'master'
fix: update image for filestream wb

See merge request infra/iac!13
2026-10-27 18:55:21 +00:00
diamondrigido
f4a19774a2 fix: update image for filestream wb 2026-10-27 20:11:28 +02:00
emelinda
f39a907a87 [Message]
Update `d8-ugmk-prod` frontend image to `workspaces-v2-frontend:contour_1b5d64e4` in patch configuration
2026-10-27 21:07:58 +03:00
c401cf0dcb Merge branch 'pdm/update_pdf_markings' into 'master'
fix: update pdf markings amqp

See merge request infra/iac!12
2026-10-27 14:16:42 +00:00
diamondrigido
1d349b1a8c fix: move bundle in documentations 2026-10-27 15:47:58 +02:00
ivan
f6d4c2face ++ 2026-10-27 18:07:06 +05:00
diamondrigido
6fda7834ce fix: incorect in asterus pdf markings amqp 2026-10-27 14:49:27 +02:00
diamondrigido
0d4befa985 fix: update pdf markings amqp 2026-10-27 14:48:29 +02:00
ivan
9f263a97f3 ++ 2026-10-27 16:51:18 +05:00
b6f164f85e ++ outline db secret from tf 2026-10-27 13:37:58 +03:00
5e10d54d67 ++ outline pg sslmode 2026-10-27 13:37:58 +03:00
f190a6efa5 Merge branch 'pdm/fix_env_and_doc' into 'master'
fix: output_topic

See merge request infra/iac!10
2026-10-27 10:01:08 +00:00
5bccce5815 Merge branch 'feature/outline-vk-infra' into 'master'
Outline в vk-infra

See merge request infra/iac!11
2026-10-27 09:36:50 +00:00
0c696d3a3e ++ valkey image override 2026-10-27 12:31:57 +03:00
Pavel Ershov
385abf1092
Outline в vk-infra
- infrastructure/outline/vk-infra: namespace, HelmRelease outline-valkey (valkey 0.1.0, standalone) и outline (outline 0.1.0, Outline 1.12.0)
- clusters/vk-infra: подключение outline/vk-infra
- istio-config/vk-infra: Certificate, Gateway и VirtualService для wiki.sarex.space

Секреты outline и outline-valkey созданы в кластере вручную.
2026-10-26 20:49:39 +03:00
diamondrigido
3f7628cc54 fix: output_topic 2026-10-26 18:35:40 +02:00
2182c09031 Merge branch 'feature/infra-3023-pm-wb-kafka-topics' into 'master'
wb/pm: явно задать KAFKA_TOPICS planning → message-hub-prod (INFRA-3023)

See merge request infra/iac!9
2026-10-26 14:33:35 +00:00
emelinda
e33eaa1db8 Merge branch 'master' of gitlab.sarex.io:infra/iac into feature/infra-3023-pm-wb-kafka-topics
# Conflicts:
#	apps/pm/wb/backend.yaml
#	apps/pm/wb/celery.yaml
2026-10-26 19:32:58 +05:00
emelinda
cb99195564 Merge remote-tracking branch 'origin/master' 2026-10-26 18:11:13 +05:00
emelinda
f5ea728d29 Add Kafka configuration to wb backend and Celery YAML files 2026-10-26 18:11:04 +05:00
f86336741b Merge branch 'pdm/fix_env_and_doc' into 'master'
fix: незначительные изменения

See merge request infra/iac!8
2026-10-26 13:07:53 +00:00
4448188464 wb/pm: pin KAFKA_TOPICS planning -> message-hub-prod (INFRA-3023)
pm on WB published to Kafka topic "pm" (stale .env mounted via subPath),
while message-hub consumes "message-hub-prod". PDF export of KSG hung in
PENDING because get_converted_file never reached message-hub.

Set KAFKA_TOPICS explicitly in backend and celery so env overrides .env,
same as prod, d8-ugmk-prod, uralkal and vad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01173KBT2kTwhxrzr2t3KutB
2026-10-26 12:49:31 +00:00
diamondrigido
af56004006 fix: незначительные изменения
1. Изменения базового образа для документации, чтоб копирование работало
2. output_navis env для wb engine
2026-10-26 13:49:08 +02:00
af112cfffe ++ srx ui kit pages 2026-10-26 14:42:34 +03:00
ivan
03eb83b362 ++ 2026-10-26 14:09:35 +05:00
ivan
a8716d51b3 ++ 2026-10-26 13:55:03 +05:00
ivan
a71b15ae18 ++ 2026-10-26 13:39:04 +05:00
ivan
a2f6a234cb ++ 2026-10-26 13:35:49 +05:00
ivan
6b5e2b7a1f ++ 2026-10-26 13:26:00 +05:00
ivan
5cbcdd4ff7 ++ 2026-10-26 13:07:14 +05:00
36b63ef189 ++ vk lb new fip 2026-10-26 10:56:02 +03:00
emelinda
4727e26c70 Update wb backend resource limits and service host references for consistency and performance 2026-10-26 11:48:24 +05:00
emelinda
91d6aa41d6 Add HelmRelease for pdf-markings-amqp in d8-ugmk-prod and update kustomization configuration 2026-10-26 09:53:21 +05:00
ivan
b3a1fe63c2 ++ 2026-10-24 12:53:11 +05:00
ivan
10d962dce5 ++ 2026-10-24 12:30:16 +05:00
ivan
3cfe74c301 ++ 2026-10-24 12:18:37 +05:00
ivan
c36406209f issues: SAREX_API from env, in-cluster Django in uralkal, vad, ugmk
The base production.py hardcoded SAREX_API = https://srx.wb.ru, ignoring the
env, so issue export (GET /api/core/users/<id>/) failed from closed contours
with CERTIFICATE_VERIFY_FAILED. Read it from SAREX_API with the old value as
default; wb keeps it.

uralkal, vad, d8-ugmk-prod: SAREX_API -> backend-svc.django:80 (server-side
calls, no TLS), and SAREX_HOST set to the contour's public host so links in
exports and notifications stay external.
2026-10-24 12:01:25 +05:00
emelinda
314d2103d0 Update wb Istio configuration: add CORS settings for https://srx.wb.ru and https://lk.srx.wb.ru 2026-10-23 18:13:26 +05:00
emelinda
ced8b7bc04 Update wb configurations: increase filestream resource limits, fix BIM_API_URL references, and add Istio routing for /bimv2/api/ 2026-10-23 18:09:28 +05:00
ivan
7d25e214cd ++ 2026-10-23 17:06:06 +05:00
ivan
934241a9b1 premises/d8-ugmk-prod: privileged pod-policy on the namespace
Deckhouse admission-policy-engine (baseline) rejected the pods because
istio-init needs NET_ADMIN and NET_RAW. Label the namespace
security.deckhouse.io/pod-policy=privileged like the other app namespaces in
ugmk.
2026-10-23 16:38:08 +05:00
ivan
54c036b23e premises in ugmk, inspections VS name fix, remarks contour image, debug pod sleep
premises: d8-ugmk-prod overlay (ugmk Kafka CA mounted, prod-sized requests
dropped), wired into the cluster, /premises/api/ routed on sarex.uralmine.com.
Terraform side is infra/terraform 856ab54.

istio-config d8-ugmk-prod, vad, uralkal: inspections-api reused the name
flows-api-virt-service, so two VirtualServices collided and one of
/flows/api/ and /inspections/api/ was lost. It is now
inspections-api-virt-service.

remarks base frontend image -> remarks-frontend:contour_013c5091.
psql-tools-debug in uralkal sleeps forever so it can be exec'd into.
2026-10-23 16:07:19 +05:00
ivan
7dbefd16c9 ++ 2026-10-22 22:19:52 +05:00
ivan
30eb5c554f mapper/uralkal: own env with in-cluster addresses
The overlay inherited SaaS prod hosts from base (api.sarex.io, lk.sarex.io),
which fail TLS verification from the closed contour. Point documentations,
flows, django and notes at their uralkal services; REDIS_USE and TIMEOUT
unchanged.
2026-10-22 21:32:36 +05:00
ivan
005e88d91e drawings/uralkal: workflow env for DWG export
drawings-api builds its workflows client from WORKFLOW_HOST, which no cluster
set, so POST /internal/v1/exports failed with 'unsupported protocol scheme'.
Add WORKFLOW_HOST and the other export settings from the drawings-api chart
with uralkal service addresses (processing, drawings, attachments).
2026-10-22 21:25:53 +05:00
3a62bd4792 ++ spicedb vk prod 2026-10-22 14:32:24 +03:00
ivan
7fec316147 ++ 2026-10-22 15:42:52 +05:00
ivan
5e87556471 ++ 2026-10-22 15:13:08 +05:00
ivan
bbe4d60705 notes/uralkal: own env with in-cluster addresses
The overlay inherited base env copied from SaaS prod: DJANGO_HOST
https://lk.sarex.io, workspaces/workflows on api.sarex.io and PG_SSL_MODE
verify-full. From the closed contour every request to django failed with
CERTIFICATE_VERIFY_FAILED. Point django, workspaces and workflows at their
uralkal services, attachments at its real port 8000, disable postgres SSL
(the uralkal server has none). FAAS_SERVICE and RESOURCE_URL stay as in base:
neither service exists in uralkal.
2026-10-22 14:41:39 +05:00
de5992a73a ++ vk business domains 2026-10-22 10:53:27 +03:00
ivan
d8ed05e07f attachments/uralkal: S3 endpoint straight to MinIO
YANDEX_S3_ENDPOINT_URL 10.133.0.245:9000 instead of s3-proxy, same as
documentations; the minioadmin credentials come from minio/apps/attachments
(terraform contour).
2026-10-22 12:41:35 +05:00
ivan
e0dcd7372c ++ 2026-10-22 11:26:49 +05:00
ivan
0c651d3d92 comparisons/uralkal: own tasks-execution-config
Overrides the base tasks-execution-config-comparisons-v2 ConfigMap (mounted
at /etc/app/tasks-execution-config.json) for uralkal: all 16 workflow tasks
run on the k8s executor with 2 CPU / 4Gi requests.
2026-10-22 00:55:17 +05:00
ivan
7a3d4740bc comparisons/uralkal: documentations external host -> internal service
comparisons-api-v2 calls GET /api/v1/bundles and /api/v1/workspaces on
DOCUMENTATIONS_EXTERNAL_HOST from inside the pod. sarex.local.uralkali.com
is signed by the customer's internal CA, which the image does not trust
(x509: unknown authority), so creating a comparison failed with 500. The
documentations service serves the same /api/v1 paths internally.
2026-10-22 00:14:15 +05:00
ivan
0c0f5c7f55 ++ 2026-10-21 20:32:59 +05:00
04b6381d95 ++ dns01 cloudflare issuer 2026-10-21 18:21:01 +03:00
ivan
ca9184405a ++ 2026-10-21 20:08:28 +05:00
957dc3aed1 ++ es processing via postrenderer 2026-10-21 17:29:09 +03:00
1b2469a6ea ++ es on processing node 2026-10-21 17:19:40 +03:00
d5ebf66329 ++ es heap and limits 2026-10-21 17:01:58 +03:00
0fc547c16f ++ optimize replicas via config 2026-10-21 16:52:28 +03:00
ac809510da ++ optimize zero replicas 2026-10-21 16:45:42 +03:00
ivan
f9325ca612 ++ 2026-10-21 18:44:23 +05:00
ivan
6bacdace28 ++ 2026-10-21 18:13:37 +05:00
ivan
ddb2fefdf0 pdm drawings URL, notes routes in uralkal, notes contour frontend image
documentations base: pdm-api pointed DRAWINGS_INTERNAL_URL at
drawings-api-service:80, which does not exist in the clusters inheriting
base (vad, d8-ugmk-prod, sarex-contour, uralkal, yc-k8s-test); their drawings
service is backend-service:8000. brusnika and wb keep their own pdm copies.

istio-config uralkal: /notes/api/ -> backend-service.notes:8000 (rewrite
/api/) and /notes/static/ -> frontend-service.notes:80.

notes base frontend image -> notes-frontend:contour_5ff34172.
2026-10-21 17:27:59 +05:00
ivan
91fed827b4 ++ 2026-10-21 17:07:52 +05:00
ivan
be78040179 cross-section: contour image in base, /cross-section/static/ route in uralkal
Base image moves to cross-section-app:contour_c5e5d476 for every cluster
inheriting it. istio-config uralkal routes /cross-section/static/ to
cross-section-static:80.
2026-10-21 16:35:01 +05:00
ivan
2e4879aa53 comparisons/uralkal: PGSSLMODE=disable
comparisons-api-v2 builds its postgres URI without sslmode, so both lib/pq
(migrations) and pgx (api) default to requiring TLS, which the uralkal
postgres does not serve.
2026-10-21 16:29:54 +05:00
ivan
86d8a066cd comparisons: v2 backend in uralkal, routes, contour frontend image
uralkal runs comparisons-api-v2:contour_9a2bab4e (built with bash so the
Vault Agent files can be sourced): migrations up before exec ./api, port 8080
behind the unchanged service port 8000, v2 env schema with uralkal service
addresses. istio-config uralkal routes /comparisons/api/ and
/comparisons/static/. Base frontend image moves to
comparisons-frontend:contour_0570a1f1 for every cluster using base.
2026-10-21 16:22:15 +05:00
ivan
03f6eef5b9 ++ 2026-10-21 15:41:09 +05:00
ivan
2c1ab636ef ++ 2026-10-21 14:10:59 +05:00
ce7d3f143a ++ gateway back to old fip 2026-10-21 12:09:45 +03:00
1b2232987d ++ gateway traffic policy cluster 2026-10-21 11:56:40 +03:00
3450e8fcfb ++ gateway fip test 2026-10-21 11:37:00 +03:00
ivan
cad5668b5b ++ 2026-10-21 13:31:39 +05:00
emelinda
f22d5cc773 **Update d8-ugmk-prod configurations to fix service references and ensure proper workflow and API integration**
- Replace incorrect `WORKFLOWS_HOST` and `WORKFLOWS_URL` references across multiple YAML files to point to `backend-svc.processing.svc.cluster.local`.
- Update `DOCUMENTATIONS_URL` to use the accurate service name `backend-api-svc.documentations.svc.cluster.local`.
- Adjust `SAREX_API` and related settings for consistency using `https://sarex.uralmine.com`.
- Refactor `production-configmap.yaml` to align environment variable overrides and remove obsolete hardcoded values.
- Resolve key INFRA-3005 issues to prevent Excel export and notification failures caused by invalid DNS and configuration.
2026-10-20 18:01:28 +03:00
emelinda
709985b4a6 **Update d8-ugmk-prod configuration: replace SAREX_API and related endpoints with sarex.uralmine.com and adjust production ConfigMap.** 2026-10-20 17:42:13 +03:00
c656984f3a ++ valkey clickhouse sts nodes 2026-10-20 15:40:55 +03:00
6ead15adff ++ valkey acl 2026-10-20 15:40:12 +03:00
b13c83e6b8 ++ clickhouse chart 0.2.1 2026-10-20 13:59:46 +03:00
12cc447017 ++ clickhouse databases 2026-10-20 13:40:08 +03:00
18e577fa7b ++ clickhouse bim v2 only 2026-10-20 13:29:28 +03:00
e994174b1e ++ clickhouse vk prod 2026-10-20 13:08:10 +03:00
b684295b0d ++ valkey vk prod 2026-10-20 11:47:40 +03:00
57f3b8bee2 ++ camunda public domains 2026-10-19 19:36:49 +03:00
0ad267ffb1 ++ camunda no rollback 2026-10-19 16:42:47 +03:00
6361da35ec ++ camunda vk chart 2026-10-19 15:59:19 +03:00
4ce31d94aa ++ camunda ha zones 2026-10-19 15:54:55 +03:00
2961d1cad4 ++ camunda node selector 2026-10-19 15:49:38 +03:00
0a397cb4ec ++ camunda domains vk 2026-10-19 15:47:40 +03:00
04e07394bc ++ camunda vk prod 2026-10-19 15:31:38 +03:00
7d6aa8592d ++ kafka client user 2026-10-19 11:53:14 +03:00
4117134461 ++ kafka cluster id 2026-10-19 11:32:22 +03:00
0f5a604624 ++ kafka fullname override 2026-10-19 11:27:01 +03:00
fe0fa4b0e0 ++ rmq k8s api host 2026-10-19 11:03:42 +03:00
163e70e292 ++ rmq admin user 2026-10-19 10:53:50 +03:00
077b7b6c7a ++ vk prod rabbitmq kafka 2026-10-19 10:53:29 +03:00
e5d9a364c6 ++ zitadel contract secret 2026-10-17 15:58:04 +03:00
93b66e96d9 ++ infra runner cluster admin 2026-10-17 15:28:19 +03:00
a9759c350b ++ runner cluster admin 2026-10-17 15:27:27 +03:00
8e366632a1 ++ runner chart 17.5.4 2026-10-17 14:44:07 +03:00
1120ed4411 ++ prod runner no pool 2026-10-17 14:33:10 +03:00
8c8a3b7cc2 Merge branch 'pdm/update_wb_fix_copy' into 'master'
fix: adding marks via rabbit value

See merge request infra/iac!7
2026-10-16 09:49:35 +00:00
diamondrigido
be58c1cddd fix: adding marks via rabbit value 2026-10-16 11:32:59 +02:00
ivan
8f03e59c97 ++ 2026-10-16 13:54:26 +05:00
ivan
41f2f2f539 ++ 2026-10-16 13:39:59 +05:00
ivan
fc78f0f145 ++ 2026-10-16 13:39:59 +05:00
emelinda
a30c689d50 Merge remote-tracking branch 'origin/master' 2026-10-15 18:37:31 +03:00
emelinda
be09be5067 Update SYSTEM_LOG_URL references to backend-svc.system-log in pdm and filestream configurations 2026-10-15 18:36:10 +03:00
84231c856e ++ nexus infra 2026-10-15 18:25:08 +03:00
ivan
7f8263ede6 ++ 2026-10-15 20:18:09 +05:00
ivan
2e6fd7bfe8 ++ 2026-10-15 20:15:38 +05:00
emelinda
1067163ef7 Merge remote-tracking branch 'origin/master' 2026-10-15 18:00:43 +03:00
emelinda
c29ad3284d Add HelmRelease configuration for worker in system-log for d8-ugmk-prod 2026-10-15 17:08:24 +03:00
ivan
96c594efe1 ++ 2026-10-15 18:18:38 +05:00
ivan
b36a349aff ++ 2026-10-15 16:58:22 +05:00
79d89bac13 ++ runner prod 2026-10-15 13:05:06 +03:00
25b327805f ++ runner on 2026-10-15 12:50:55 +03:00
fcc754d9f8 ++ pin prod lb ip 2026-10-15 12:31:21 +03:00
20e5a08e75 ++ vk prod istio 2026-10-15 12:21:40 +03:00
97451d6628 ++ flux ha prod 2026-10-15 12:18:20 +03:00
Flux
230184bc37 Add Flux sync manifests 2026-10-15 12:16:21 +03:00
Flux
e7e0dac1ca Add Flux v2.8.5 component manifests 2026-10-15 12:15:36 +03:00
ivan
fd78c1bc0b ++ 2026-10-15 13:48:11 +05:00
ivan
ff27b79765 ++ 2026-10-15 13:30:21 +05:00
ca94c91084 ++ vault unseal sidecar 2026-10-14 18:33:28 +03:00
41c7219486 ++ runner off 2026-10-14 17:50:28 +03:00
145afeb702 ++ vk infra vault kb runner 2026-10-14 17:35:05 +03:00
da1c83ef59 ++ zitadel rollout strategy 2026-10-14 16:48:53 +03:00
e62e78c273 ++ zitadel 4.19.4 2026-10-14 16:42:40 +03:00
54b430c48d ++ zitadel 3.4.15 2026-10-14 16:37:18 +03:00
0b3d1b8aec ++ zitadel 2.71.19 2026-10-14 15:17:29 +03:00
79d614ee0e ++ zitadel init off 2026-10-14 15:17:29 +03:00
ivan
7f48b1ad0d django: take HOST from DJANGO_HOST
The base django-configmap hardcoded HOST to the yc-k8s-test domain, and every
cluster inheriting it got that value. HOST now reads DJANGO_HOST with the old
value as the default; backend in vad, uralkal and d8-ugmk-prod sets its own
public host. celery is left on the default.
2026-10-14 16:25:11 +05:00
653a95cd6b ++ zitadel init job 2026-10-14 14:14:56 +03:00
eb33446997 ++ zitadel sslmode prefer 2026-10-14 14:05:40 +03:00
09d49a334f ++ fix issuer key and kubectl image 2026-10-14 13:51:19 +03:00
7f3658078c ++ issuer via istio config 2026-10-14 13:46:27 +03:00
c43ffe5bcc ++ vk infra cert zitadel 2026-10-14 13:42:14 +03:00
ivan
9a373f670c brusnika-stage: manage orchestrator and documentations hasher/pdf-markings-amqp in git
Manifests exported from the live cluster with server-side and Helm/Lens
metadata stripped; selectors and pod labels kept as they are so Flux takes
the objects over without restarting pods.

orchestrator: cde API, its Service and ServiceAccount, the v1 workers
installed by the old helm release cde and the v2 workers rolled out today.
documentations: hasher and pdf-markings-amqp. Secrets (cde-secret,
hasher-*, postgres-secret, rabbitmq, yc-s3, dockerhub, regcred) stay in the
cluster only. The old apps/cde/brusnika-stage overlay (namespace contracts,
HelmRelease cde) was never wired; its kustomization now lists only these
manifests.
2026-10-14 15:27:23 +05:00
ivan
e4d145ec95 ++ 2026-10-14 14:49:18 +05:00
ivan
e85bf3800e premises: add app (base + vad) and route /premises/api/ in vad
New service on universal-chart with Vault Agent: role premises, SA
premises-vault, creds for its own postgres, kafka and S3 plus the five
neighbour databases the sync script reads. The vad overlay mounts the Kafka CA
and drops the prod-sized resource requests; istio-config routes
sarex.vadroad.ru/premises/api/ to backend-svc.premises.
2026-10-14 14:48:51 +05:00
ivan
ce64374b4c brusnika-stage: orchestrator routes like vad
/orchestrator/api/process/, /orchestrator/api/sign and /orchestrator/ are
rewritten to /api/... before reaching cde.orchestrator:8080, same rules as
the cde-api virtual service in vad. Replaces the single prefix route that
passed the path through unchanged.
2026-10-14 14:48:42 +05:00
5d5884a1e0 ++ pin lb ip 2026-10-14 12:12:59 +03:00
6ba8444272 ++ flux zone antiaffinity 2026-10-14 12:03:29 +03:00
601ac84079 ++ flux ha patches 2026-10-14 11:59:51 +03:00
Flux
5fdf3c1e32 Add Flux sync manifests 2026-10-14 11:51:24 +03:00
ab0a052db2 ++ drop flux patches 2026-10-14 11:19:11 +03:00
Flux
5fb9d9731e Add Flux v2.8.5 component manifests 2026-10-14 11:18:23 +03:00
831aa2ad28 ++ vk infra istio 1.30.5 2026-10-14 10:49:58 +03:00
6ef56742d7 ++ vk infra istio 2026-10-14 10:36:18 +03:00
ivan
d816a80776 ++ 2026-10-09 14:54:57 +05:00
ivan
ae2c5b5a62 ++ 2026-10-09 14:48:27 +05:00
53987611fa Merge branch 'pdm/update_wb_fix_copy' into 'master'
update image for wb 2

See merge request infra/iac!6
2026-10-09 08:37:06 +00:00
diamondrigido
a4d7dda8c1 update image for wb 2 2026-10-08 23:00:21 +02:00
4a9b8a75b8 Merge branch 'pdm/update_wb_fix_copy' into 'master'
update image for wb

See merge request infra/iac!5
2026-10-08 20:18:22 +00:00
diamondrigido
a7077fb9ae update image for wb 2026-10-08 21:25:03 +02:00
ivan
b6aca0dc88 istio-config: route /orchestrator/ to cde in vad and uralkal
Same cde-api virtual service as d8-ugmk-prod: /orchestrator/api/process/,
/orchestrator/api/sign and /orchestrator/ are rewritten to /api/... and sent
to cde-svc.cde.svc.cluster.local:80.
2026-10-08 19:02:55 +05:00
248 changed files with 29773 additions and 421 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@ -4,6 +4,8 @@ include:
stages:
- build
- slices
- slices-publish
variables:
RELEASE_NAME: iac-offline
@ -33,3 +35,31 @@ build_offline_mirror:
- docker push ${IMAGE_NAME}
- docker push ${CR}/${RELEASE_NAME}:latest
timeout: 30m
generate_slice_jobs:
stage: slices
image: ${CR}/infra/slice-builder:1.0.0
tags:
- build
rules:
- if: $CI_COMMIT_TAG =~ /^v?(?:\d+\.){2}\d+$/
variables:
GIT_DEPTH: "1"
script:
- python3 ci/publish-slice.py generate --release "$CI_COMMIT_TAG" --commit "$CI_COMMIT_SHA" --out slices-pipeline.yml
- cat slices-pipeline.yml
artifacts:
paths:
- slices-pipeline.yml
publish_contour_slices:
stage: slices-publish
rules:
- if: $CI_COMMIT_TAG =~ /^v?(?:\d+\.){2}\d+$/
needs:
- generate_slice_jobs
trigger:
include:
- artifact: slices-pipeline.yml
job: generate_slice_jobs
strategy: depend

View File

@ -25,11 +25,13 @@
| Путь | Что |
|---|---|
| `clusters/` | 10 точек входа Flux — **источник истины «что где раскатано»** |
| `infrastructure/` | 36 платформенных компонентов |
| `apps/` | 37 прикладных сервисов |
| `docs/apps/` | 35 mermaid-диаграмм по сервисам + `README.md` с доменной группировкой |
| `clusters/` | 17 точек входа Flux + шаблон `contour` — **источник истины «что где раскатано»** |
| `infrastructure/` | 44 платформенных компонента |
| `apps/` | 39 прикладных сервисов |
| `docs/apps/` | 34 mermaid-диаграммы по сервисам + `README.md` с доменной группировкой |
| `docs/architecture/` | модель контура в ArchiMate + скрипты-сканеры (`scan_calls.py`, `scan_contour.py`) и сборка (`build_archimate.py`); реальные значения инсталляций сюда не кладутся, только `*.example.json` |
| `docs/closed-contour-deployment.md` | ранбук поднятия закрытого контура |
| `ci/`, `.gitlab-ci.yml`, `Dockerfile` | на тег `vX.Y.Z`: образ офлайн-зеркала `iac-offline` и публикация «слайсов» контуров (см. ниже) |
| `README.md` | mermaid-мегакарта платформы, структура репозитория, инструкции по добавлению app / infra / кластера |
| `IAC-CATALOG.md` | каталог всего `infra/*`; §5 — про этот репозиторий |
| `inventory.yaml` | сгенерированный снимок прода: 59 namespace → kind → имена |
@ -38,15 +40,18 @@
**Кластер.** `clusters/<cluster>/kustomization.yaml` — плоский список `../../apps/<app>/<cluster>`. Инфраструктура подключается двумя разными способами:
- `d8-ugmk-prod` — прямо в корневом kustomization как `../../infrastructure/<comp>/d8-ugmk-prod`;
- `brusnika-prod`, `brusnika-stage` — через `clusters/<c>/infrastructure/kustomization.yaml`, который ссылается на оверлеи `../../../infrastructure/<comp>/<c>` (`base` + патч HelmRelease + сопутствующие манифесты компонента);
- `wb` — через `clusters/wb/infrastructure/kustomization.yaml`, который ссылается на `../../../infrastructure/<comp>` (резолвится в `base`), а различия лежат в `clusters/wb/infrastructure/patches/*.yaml`.
- `d8-ugmk-prod`, `sarex-contour`, `ugok`, `uralkal`, `vad` — прямо в корневом kustomization как `../../infrastructure/<comp>/<c>`;
- `brusnika-prod`, `brusnika-stage`, `vk-infra`, `vk-prod` — через `clusters/<c>/infrastructure/kustomization.yaml`, который ссылается на оверлеи `../../../infrastructure/<comp>/<c>` (`base` + патч HelmRelease + сопутствующие манифесты компонента);
- `wb`, `yc-cps-prod`, `yc-infra-prod`, `yc-k8s-test-02` — через `clusters/<c>/infrastructure/kustomization.yaml`, который ссылается на `../../../infrastructure/<comp>` (резолвится в `base`), а различия лежат в `clusters/<c>/infrastructure/patches/*.yaml`;
- `stand` — послойно: `layers.yaml` объявляет Flux-`Kustomization` `00-vault → 10-mesh → 20-data → 30-platform → 40-routing` (каталоги `clusters/stand/<NN>-<layer>/`). Слои ссылаются на оверлеи `infrastructure/<comp>/contour-template`, а значения контура (`${STORAGE_CLASS}`, `${HOST_*}`, `${GATEWAY_REPLICAS}`) Flux подставляет через `postBuild.substituteFrom` из ConfigMap `contour-vars`.
Кластеры: `brusnika-prod`, `brusnika-stage`, `d8-ugmk-prod`, `wb`, `yc-cps-prod`, `yc-ecp`, `yc-infra-prod`, `yc-k8s-test`, `yc-k8s-test-02`, `contour`.
Кластеры с приложениями: `asterus`, `brusnika-prod`, `brusnika-stage`, `d8-ugmk-prod`, `sarex-contour`, `ugok`, `uralkal`, `vad`, `wb`, `yc-ecp`, `yc-k8s-test`. Только инфраструктура: `stand`, `vk-infra`, `vk-prod`, `yc-cps-prod`, `yc-infra-prod`, `yc-k8s-test-02`. Шаблон: `contour`.
**Приложение.** `apps/<app>/base/` — по одному `.yaml` на процесс (`backend.yaml`, `celery.yaml`, `frontend.yaml`) плюс `namespace.yaml`; оверлеи в `apps/<app>/<cluster>/`. Namespace = имя приложения. Рядом с манифестами лежит документация: `CONFIGURATION.md` (все env-переменные и откуда берутся), `ENDPOINTS.md` (исходящие HTTP-вызовы), `openapi.yaml` (входящий контракт), `.env.example`. Если процессов несколько — файлы с префиксом процесса: `api.ENDPOINTS.md`, `pdm.CONFIGURATION.md`, `frontend.CONFIGURATION.md`.
**Инфра-компонент.** `infrastructure/<comp>/base/` + оверлеи `<comp>/<cluster>/`. Корневой `infrastructure/<comp>/kustomization.yaml` всегда указывает просто на `base`. Чарты идут с суффиксом контура: `vault-contour`, `keycloak-contour`, `postgresql-contour` и — внимание — `idp-contour` это Zitadel.
**Инфра-компонент.** `infrastructure/<comp>/base/` + оверлеи `<comp>/<cluster>/`. Корневой `infrastructure/<comp>/kustomization.yaml` всегда указывает просто на `base`. Оверлей `contour-template` (есть у vault, istio-*, cert-manager, postgresql, kafka, rabbitmq, zitadel, camunda, istio-config) — параметризованный `${VAR}`, а не привязанный к конкретному кластеру. Чарты идут с суффиксом контура: `vault-contour`, `keycloak-contour`, `postgresql-contour` и — внимание — `idp-contour` это Zitadel.
**Слайсы.** На тег `vX.Y.Z` `ci/publish-slice.py generate` создаёт child-pipeline с отдельной джобой на каждый `clusters/*/kustomization.yaml`. Джоба вызывает `ci/build-slice.py`: тот обходит дерево Kustomize от `clusters/<c>` и упаковывает только нужные файлы в tar. Результат публикуется как OCI-артефакт `cr.yandex/crpct2b2lsmao4nm0cjk/<c>-iac:<tag>` (media type `application/vnd.sarex.slice.config.v1+json`). Так закрытый контур получает только свой срез. Тесты — `ci/tests/test_build_slice.py`.
## Где искать конкретное
@ -62,18 +67,23 @@
| Тег образа в контуре | `apps/<app>/<cluster>/*.yaml`, поле `image.tag` |
| Что реально в проде по namespace | `inventory.yaml` |
| Где лежит исходный код приложения | `IAC-CATALOG.md` §5.3.8 |
| Что попадёт в слайс контура | `python3 ci/build-slice.py` по `clusters/<c>` (логика сбора — там же) |
| Переменные шаблонного контура | `${...}` в `infrastructure/*/contour-template`; значения — ConfigMap `contour-vars` в кластере, не в репозитории |
## Ловушки
- **`dsinv/`** — оверлей есть у 25 приложений, но `clusters/dsinv/` не существует. Это материализованный снимок живого контура WB, а не источник деплоя. Развёрнутым не считать.
- **Две несовместимые конвенции оверлеев** (`IAC-CATALOG.md` §5.3.4). `d8-ugmk-prod`, `yc-k8s-test`, `dsinv` наследуют `base` и патчат его. `brusnika-prod`, `brusnika-stage`, `yc-ecp` — полные копии HelmRelease, которые молча дрейфуют от base. Правка `base` на них не влияет.
- **Две несовместимые конвенции оверлеев** (`IAC-CATALOG.md` §5.3.4). `d8-ugmk-prod`, `yc-k8s-test`, `vad`, `uralkal`, `sarex-contour`, `dsinv` наследуют `base` и патчат его. `brusnika-prod`, `brusnika-stage`, `yc-ecp`, `asterus` — полные копии HelmRelease, которые молча дрейфуют от base. Правка `base` на них не влияет. **`wb` (4 из 27) и `ugok` (9 из 33) смешанные** — проверяйте `resources:` конкретного оверлея; в `ugok` причина обычно указана комментарием в его `kustomization.yaml`.
- **`asterus` подключён почти пустым**: оверлеи есть у 26 приложений, но в `clusters/asterus/kustomization.yaml` активен только `auth-flow`, остальные закомментированы. Инфраструктуры в кластере нет.
- **Слайс публикуется для каждого `clusters/*/kustomization.yaml`** — в том числе для тестовых и инфраструктурных кластеров. Новая папка в `clusters/` с этим файлом автоматически станет слайсом на следующем теге. У `contour` такого файла нет, поэтому для него слайс не собирается.
- **`IAC-CATALOG.md` — снимок на 05.08.2026** и по составу приложений на контур уже расходится с реальностью (там у `wb` ноль приложений, фактически 26 оверлеев). Всегда сверяться с `clusters/*/kustomization.yaml`.
- **Мегадиаграмма в `README.md` идеализирована** — рисована руками, показывает все приложения на одной Postgres и все фронтенды за `control-interface`. Проверяемые источники — env-переменные и istio-config.
- **`clusters/contour/` — не кластер, а шаблон**: в нём нет `flux-system`, только `apps.yaml`, `infrastructure.yaml`, `helm-repositories.yaml`.
- **Path-роутинг виден в репозитории только у `d8-ugmk-prod` и `yc-ecp`.** В Brusnika и WB весь прикладной трафик уходит одним правилом в `nginx-service.global-ingress` / `yet-another-nginx-service.global-ingress`, а разводка по путям происходит вне репозитория. Через Istio там публикуются только платформенные UI (Gitea, Grafana, OpenObserve, Superset, Vault, Zitadel, Camunda, MinIO).
- **Имена namespace расходятся между источниками**: `inventory.yaml` использует суффикс (`flows-prod`), `apps/` — голое имя (`flows`).
- **17 оверлеев приложений не подключены ни к одному кластеру** — мёртвый код.
- **Нет диаграмм** в `docs/apps/` для `iam`, `auth-flow`, `ams-sync`.
- **Path-роутинг лежит в `infrastructure/istio-config/<c>/` у большинства контуров, но не у WB.** В `clusters/wb/infrastructure/patches/istio-config.yaml` через Istio публикуются только платформенные UI (Gitea, Grafana, OpenObserve, Superset, Vault, GoAlert), а прикладной трафик разводится вне репозитория. В Brusnika схема смешанная: часть путей идёт напрямую в сервисы, остальное — одним правилом в `yet-another-nginx-service.global-ingress`.
- **`vk-prod` маршрутизирует в namespace с суффиксом `-prod`** (`eav-prod`, `pm-prod`, `inspections-prod`), а приложений из `apps/` в этом кластере нет: сервисы раскатываются не этим репозиторием.
- **Имена namespace расходятся между источниками**: `inventory.yaml` и `vk-prod` используют суффикс (`flows-prod`), `apps/` — голое имя (`flows`).
- **66 оверлеев приложений не подключены ни к одному кластеру**: 25 — `dsinv`, 25 — закомментированные в `asterus`, остальные 16 — мёртвый код (в основном `brusnika-prod`, плюс `bi`/`iam` в `wb` и `yc-k8s-test`).
- **Нет диаграмм** в `docs/apps/` для `ams-sync`, `auth-flow`, `bi`, `iam`, `premises`.
- **Чистые фронтенды без бэкенда в этом репозитории**: `auth-flow`, `control-interface`, `cross-section`, `document-link`, `prescriptions`, `projects`, `remarks`, `reviews`, `stamp-verification`. Бэкенд `projects` живёт в `planning/projects-backend`.
- Самые центральные сервисы по числу входящих ссылок: `documentations` (~85), `processing` / `workflow` (~76), `django` (~53), `eav` (~47), `resources` (~44), `bim` (~39), `flows` (~38). Менять их конфигурацию — дороже всего.

BIN
apps/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -35,7 +35,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/attachments:production_6dbb4dce
_default: cr.yandex/crp3ccidau046kdj8g9q/att9:dev
pullPolicy:
_default: IfNotPresent

View File

@ -24,7 +24,7 @@ spec:
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=s3-proxy.s3-proxy.svc.cluster.local
YANDEX_S3_ENDPOINT_URL=10.133.0.245: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

View File

@ -37,7 +37,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/bi-backend:production_37902c73
_default: cr.yandex/crp3ccidau046kdj8g9q/bi-backend:production_e607dcc6
pullPolicy:
_default: IfNotPresent
@ -119,6 +119,10 @@ spec:
_default: regcred
envs:
- name: SUPERSET_HOST
value:
_default: "https://superset.test.sarex.brusnika.tech"
- name: SETTINGS_DEBUG
value:
_default: "0"

View File

@ -35,7 +35,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/bim-backend-v2:donstroi1
_default: cr.yandex/crp3ccidau046kdj8g9q/bim-backend-v2:prod_2bde8e0a
pullPolicy:
_default: IfNotPresent

View File

@ -0,0 +1,40 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde-flowscallback
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-flowscallback
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-flowscallback
template:
metadata:
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-flowscallback
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: IS_CONTOUR
value: 'True'
- name: S3_IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/flowscallback-worker:preprod_0986a572
imagePullPolicy: Always
name: cde-worker-flowscallback
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,40 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde-splitpdf
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-splitpdf
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-splitpdf
template:
metadata:
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-splitpdf
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: S3_IS_CONTOUR
value: 'true'
- name: IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/splitpdf-worker:prod_4.4.1
imagePullPolicy: Always
name: cde-worker-splitpdf
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,35 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde-worker-alert
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-alert
app.kubernetes.io/version: 0.0.1
spec:
replicas: 0
selector:
matchLabels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-alert
template:
metadata:
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-alert
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/orchestrator:latest
imagePullPolicy: Always
name: cde-worker-alert
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,40 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde-worker-copy
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-copy
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-copy
template:
metadata:
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-copy
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: IS_CONTOUR
value: 'True'
- name: S3_IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/copy-worker:preprod_0986a572
imagePullPolicy: Always
name: cde-worker-copy
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,41 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde-worker-copyv2
namespace: orchestrator
labels:
app.kubernetes.io/instance: name
app.kubernetes.io/name: cde-worker-copyv2
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: name
app.kubernetes.io/name: cde-worker-copy
template:
metadata:
labels:
app.kubernetes.io/instance: name
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-copy
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: S3_IS_CONTOUR
value: 'true'
- name: IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/copyv2-worker:prod_4.0.2
imagePullPolicy: Always
name: cde-worker-copy
securityContext: {}
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,40 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde-worker-markings
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-markings
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-markings
template:
metadata:
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-markings
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: IS_CONTOUR
value: 'True'
- name: S3_IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/markings-worker:preprod_eb50f30e
imagePullPolicy: Always
name: cde-worker-markings
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,40 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde-worker-sign
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-sign
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-sign
template:
metadata:
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-sign
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: IS_CONTOUR
value: 'True'
- name: S3_IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/sign-worker:preprod_0986a572
imagePullPolicy: Always
name: cde-worker-sign
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,40 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde-worker-update-bundles
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-updatebundles
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde-worker-updatebundles
template:
metadata:
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-updatebundles
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: IS_CONTOUR
value: 'True'
- name: S3_IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/updatebundles-worker:preprod_0986a572
imagePullPolicy: Always
name: cde-worker-update-bundles
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,55 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cde
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde
template:
metadata:
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/cde:production_e5316bd0
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 8080
timeoutSeconds: 1
name: cde
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 15
periodSeconds: 10
successThreshold: 1
tcpSocket:
port: 8080
timeoutSeconds: 1
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,41 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: createversionsv2-worke
namespace: orchestrator
labels:
app.kubernetes.io/instance: name
app.kubernetes.io/name: cde-worker-createversions
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: name
app.kubernetes.io/name: cde-worker-createversions
template:
metadata:
labels:
app.kubernetes.io/instance: name
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-createversions
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: S3_IS_CONTOUR
value: 'true'
- name: IS_CONTOUR
value: 'true'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/createversionsv2-worker:preprod_90202b78
imagePullPolicy: Always
name: createversionsv2-worke
securityContext: {}
imagePullSecrets:
- name: dockerhub

View File

@ -1,6 +1,19 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: contracts
namespace: orchestrator
resources:
- helmrelease.yaml
- serviceaccount.yaml
- service.yaml
- cde.yaml
- cde-flowscallback.yaml
- cde-splitpdf.yaml
- cde-worker-alert.yaml
- cde-worker-copy.yaml
- cde-worker-markings.yaml
- cde-worker-sign.yaml
- cde-worker-update-bundles.yaml
- cde-worker-copyv2.yaml
- createversionsv2-worke.yaml
- markingsv2-worker.yaml
- signv2-worker.yaml

View File

@ -0,0 +1,41 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: markingsv2-worker
namespace: orchestrator
labels:
app.kubernetes.io/instance: name
app.kubernetes.io/name: cde-worker-markings
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: name
app.kubernetes.io/name: cde-worker-markings
template:
metadata:
labels:
app.kubernetes.io/instance: name
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-markings
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: S3_IS_CONTOUR
value: 'true'
- name: IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/markingsv2-worker:prod_4.0.2
imagePullPolicy: Always
name: cde-worker-markings
securityContext: {}
imagePullSecrets:
- name: dockerhub

View File

@ -0,0 +1,19 @@
---
apiVersion: v1
kind: Service
metadata:
name: cde
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde
spec:
type: ClusterIP
selector:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080

View File

@ -0,0 +1,10 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: cde
namespace: orchestrator
labels:
app.kubernetes.io/instance: cde
app.kubernetes.io/name: cde
app.kubernetes.io/version: 0.0.1

View File

@ -0,0 +1,41 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: signv2-worker
namespace: orchestrator
labels:
app.kubernetes.io/instance: name
app.kubernetes.io/name: cde-worker-sign
app.kubernetes.io/version: 0.0.1
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: name
app.kubernetes.io/name: cde-worker-sign
template:
metadata:
labels:
app.kubernetes.io/instance: name
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: cde-worker-sign
app.kubernetes.io/version: 0.0.1
helm.sh/chart: cde-0.1.0
spec:
serviceAccountName: cde
containers:
- env:
- name: S3_IS_CONTOUR
value: 'true'
- name: IS_CONTOUR
value: 'True'
envFrom:
- secretRef:
name: cde-secret
image: cr.yandex/crp3ccidau046kdj8g9q/signv2-worker:prod_4.0.2
imagePullPolicy: Always
name: cde-worker-sign
securityContext: {}
imagePullSecrets:
- name: dockerhub

View File

@ -36,7 +36,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/comparisons-frontend:prod_6dc6e0c2
_default: cr.yandex/crp3ccidau046kdj8g9q/comparisons-frontend:contour_0570a1f1
pullPolicy:
_default: IfNotPresent

View File

@ -8,8 +8,105 @@ spec:
values:
services:
backend:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/comparisons-api-v2:contour_9a2bab4e
deployment:
port:
_default: 8080
args:
_default:
- |
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
cd /opt/comparisons
./migrations up
exec ./api
resources:
requests:
cpu: null
memory: null
probes:
liveness:
httpGet:
port:
_default: 8080
readiness:
httpGet:
port:
_default: 8080
service:
targetPort:
_default: 8080
envs:
- name: APP_NAME
value:
_default: "comparisons-api-v2"
- name: APP_VERSION
value:
_default: "0.0.1"
- name: LOGGER_LOG_LEVEL
value:
_default: "info"
- name: DATABASE_NAME
value:
_default: "postgres"
- name: PGSSLMODE
value:
_default: "disable"
- name: HTTP_PORT
value:
_default: "8080"
- name: DOCUMENTATIONS_INTERNAL_HOST
value:
_default: "http://backend-api-svc.documentations.svc.cluster.local"
- name: DOCUMENTATIONS_EXTERNAL_HOST
value:
_default: "http://backend-api-svc.documentations.svc.cluster.local"
- name: WORKFLOWS_HOST
value:
_default: "http://backend-svc.processing.svc.cluster.local"
- name: WORKFLOWS_IMAGE_VERSION
value:
_default: "master"
- name: WORKFLOWS_DJANGO_HOST
value:
_default: "https://sarex.local.uralkali.com"
- name: WORKFLOWS_BIMV2_INTERNAL_HOST
value:
_default: "http://backend-svc.bim.svc.cluster.local"
- name: WORKSPACES_HOST
value:
_default: "http://backend-svc.workspaces.svc.cluster.local"
- name: EAV_HOST
value:
_default: "http://backend-svc.eav.svc.cluster.local"
- name: ABAP_FIXED_CONC
value:
_default: "0"
- name: WORKFLOWS_CONFIG_FILEPATH
value:
_default: "/etc/app/tasks-execution-config.json"

View File

@ -3,6 +3,10 @@ kind: Kustomization
resources:
- ../base
patches:
- path: tasks-execution-config.yaml
target:
kind: ConfigMap
name: tasks-execution-config-comparisons-v2
- path: backend.yaml
target:
kind: HelmRelease

View File

@ -0,0 +1,122 @@
---
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": "2",
"memory_requests": "4Gi"
}
},
"bim2bim_comparison": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"bim_api_metadata_inserter_v2": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"bim_api_metadata_inserter_v4": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"bim_abap_updater": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"build_ooc": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"calculate_deviation_job": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"cloud_to_cloud": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"cloud_to_surface": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"convert_to_potree": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"deviation_icp": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"las_to_tiff": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"pdf_cv_comparer": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"pdf_georeferencing": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"split_pdf_document": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
},
"webhook_caller": {
"executor": "k8s",
"resources": {
"cpu_requests": "2",
"memory_requests": "4Gi"
}
}
}

View File

@ -18,10 +18,8 @@ spec:
spec:
containers:
- name: debug
image: cr.yandex/crp3ccidau046kdj8g9q/zitadel-bpmn:cc_contour_5.22.3_ca40c204
image: cr.yandex/crp3ccidau046kdj8g9q/mc-files:dev5
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c"]
args:
- while true; do sleep 3600; done
command: ["/bin/sh", "-c", "while true; do sleep 3600; done"]
imagePullSecrets:
- name: regcred

View File

@ -37,7 +37,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/cross-section-app:production_e09e648b
_default: cr.yandex/crp3ccidau046kdj8g9q/cross-section-app:contour_c5e5d476
pullPolicy:
_default: IfNotPresent

View File

@ -87,7 +87,7 @@ data:
'Bearer',
)
HOST = "https://sarex.contour.infra.sarex.tech"
HOST = os.environ.get("DJANGO_HOST", "https://sarex.contour.infra.sarex.tech")
POSTGRES_DATABASE = os.environ.get('DJANGO_POSTGRES_DATABASE')
POSTGRES_USER = os.environ.get('DJANGO_POSTGRES_USER')
@ -305,6 +305,11 @@ data:
"uri": "/management/projects"
},
{
"name": "Справочники",
"uri": "/assets"
},
# {
# "name": "Обзор",
# "uri": "/projects"

View File

@ -29,7 +29,7 @@ spec:
enabled: true
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/sarex-frontend-dev:contour_5.22.3
_default: cr.yandex/crp3ccidau046kdj8g9q/sarex-frontend-dev:contour_5.30.1
pullPolicy:
_default: IfNotPresent
deployment:

View File

@ -101,7 +101,8 @@ data:
location = /static/pdf-runtime/assets/mupdf-wasm.wasm {
alias /opt/react_client/static/pdf-runtime/assets/mupdf-wasm.wasm;
add_header Content-Type application/wasm always;
types { }
default_type application/wasm;
add_header Cache-Control "public, max-age=31536000, immutable" always;
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
@ -110,7 +111,8 @@ data:
location = /workspaces-v2/worker/static/viewer-pdf/mupdf-wasm.js {
alias /opt/react_client/static/viewer-pdf/mupdf-wasm.js;
add_header Content-Type application/javascript always;
types { }
default_type application/javascript;
add_header Cache-Control "public, max-age=31536000, immutable" always;
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
@ -119,7 +121,8 @@ data:
location = /workspaces-v2/worker/mupdf.worker-3.3.9.js {
alias /opt/react_client/static/pdf-runtime/mupdf.worker-3.3.9.js;
add_header Content-Type application/javascript always;
types { }
default_type application/javascript;
add_header Cache-Control "public, max-age=31536000, immutable" always;
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
@ -128,7 +131,8 @@ data:
location = /workspaces-v2/worker/static/viewer-pdf/mupdf.js {
alias /opt/react_client/static/viewer-pdf/mupdf.js;
add_header Content-Type application/javascript always;
types { }
default_type application/javascript;
add_header Cache-Control "public, max-age=31536000, immutable" always;
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, OPTIONS" always;
@ -136,7 +140,8 @@ data:
}
location = /workspaces-v2/worker/static/viewer-pdf/mupdf-wasm.wasm {
add_header Content-Type application/wasm always;
types { }
default_type application/wasm;
alias /opt/react_client/static/viewer-pdf/mupdf-wasm.wasm;
}
@ -144,7 +149,8 @@ data:
rewrite /workspaces-v2/(.+) /$1 break;
proxy_pass http://workspaces-v2-frontend-static-service.workspaces.svc.cluster.local:8080;
add_header Content-Type application/wasm;
proxy_hide_header Content-Type;
add_header Content-Type application/wasm always;
proxy_set_header Accept application/wasm;
}

View File

@ -8,6 +8,9 @@ spec:
values:
services:
backend:
deployment:
replicaCount:
_default: 2
envs:
- name: ALLOWED_HOSTS
value:
@ -18,6 +21,9 @@ spec:
- name: SERVER_ZITADEL_ENABLED
value:
_default: "True"
- name: DJANGO_HOST
value:
_default: "https://sarex.uralmine.com"
- name: DJANGO_SETTINGS_MODULE
value:
_default: config.settings.production

File diff suppressed because one or more lines are too long

View File

@ -14,6 +14,10 @@ spec:
cpu: null
memory: null
envs:
- name: DJANGO_HOST
value:
_default: "https://sarex.local.uralkali.com"
- name: ALLOWED_HOSTS
value:
_default: "*"

View File

@ -9,6 +9,10 @@ spec:
services:
backend:
envs:
- name: DJANGO_HOST
value:
_default: "https://sarex.vadroad.ru"
- name: ALLOWED_HOSTS
value:
_default: "*"

View File

@ -36,7 +36,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/pdf-markings-amqp:prod_3ab263be
_default: cr.yandex/crp3ccidau046kdj8g9q/pdf-markings-amqp:prod_9dea5b64
pullPolicy:
_default: IfNotPresent

View File

@ -65,7 +65,7 @@ spec:
enabled: false
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/documentations:prod_179e518c
_default: cr.yandex/crp3ccidau046kdj8g9q/documentations:prod_89c8039a
pullPolicy:
_default: IfNotPresent
service:
@ -89,6 +89,9 @@ spec:
- name: POSTGRES_POOL_SIZE
value:
_default: "20"
- name: CDE_API_ENABLED
value:
_default: "false"
- name: USE_LEGACY_BIM_FLOW
value:
_default: "true"
@ -236,6 +239,9 @@ spec:
- name: VALKEY_PORT
value:
_default: "6379"
- name: CDE_API_ENABLED
value:
_default: "false"
podAnnotations:
_default:
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"

View File

@ -97,6 +97,9 @@ spec:
- name: PUBLIC_LINK_FOLDER_CONNECTOR_ENABLED
value:
_default: "true"
- name: CDE_API_ENABLED
value:
_default: "false"
- name: USE_ZITADEL
value:
_default: "1"
@ -223,6 +226,9 @@ spec:
- name: VALKEY_PORT
value:
_default: "6379"
- name: CDE_API_ENABLED
value:
_default: "false"
podAnnotations:
_default:
traffic.sidecar.istio.io/excludeOutboundPorts: "8200"

View File

@ -37,7 +37,7 @@ spec:
name:
_default: pdf-markings-amqp
replicaCount:
_default: 1
_default: 2
port:
_default: 8000
command:
@ -64,7 +64,7 @@ spec:
enabled: false
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/pdf-markings-amqp:prod_3ab263be
_default: cr.yandex/crp3ccidau046kdj8g9q/pdf-markings-amqp:prod_9dea5b64
pullPolicy:
_default: IfNotPresent
service:

View File

@ -123,7 +123,7 @@ spec:
_default: "false"
- name: DRAWINGS_INTERNAL_URL
value:
_default: http://drawings-api-service.drawings.svc.cluster.local:80
_default: http://backend-service.drawings.svc.cluster.local:8000
- name: ATTACHMENTS_URL
value:
_default: http://attachments-service.attachments.svc.cluster.local:8000
@ -210,7 +210,7 @@ spec:
_default: http://backend-svc.subscriptions.svc.cluster.local:80
- name: SYSTEM_LOG_URL
value:
_default: http://api-service.system-log.svc.cluster.local:80
_default: http://backend-svc.system-log.svc.cluster.local:80
- name: TARGET_URL
value:
_default: http://backend-svc.django.svc.cluster.local:80

View File

@ -37,7 +37,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/documentations:prod_179e518c
_default: cr.yandex/crp3ccidau046kdj8g9q/documentations:prod_98a23ef5
pullPolicy:
_default: IfNotPresent
@ -100,6 +100,10 @@ spec:
labels:
monitoring: prometheus
envs:
- name: PUBLIC_LINK_FOLDER_CONNECTOR_ENABLED
value:
_default: "true"
- name: POSTGRES_ADDRESS
value:
_default: "192.168.2.45"

View File

@ -0,0 +1,95 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hasher
namespace: documentations
labels:
app: hasher
service: normal
spec:
replicas: 1
selector:
matchLabels:
app: hasher
template:
metadata:
labels:
app: hasher
service: normal
spec:
containers:
- env:
- name: HASHER_APP__LOG_LEVEL
value: INFO
- name: HASHER_APP__NUM_WORKERS
value: '4'
- name: HASHER_AMQP__ROUTING__TASK_INPUT_QUEUE
value: hash.compute.normal.tasks
- name: HASHER_AMQP__ROUTING__TASK_INPUT_EXCHANGE
value: hash.compute
- name: HASHER_AMQP__ROUTING__TASK_INPUT_EXCHANGE_TYPE
value: direct
- name: HASHER_AMQP__ROUTING__TASK_INPUT_ROUTING_KEY
value: hash.compute.normal
- name: HASHER_S3__MAX_POOL_CONNECTIONS
value: '10'
- name: HASHER_S3__CONNECT_TIMEOUT
value: '10'
- name: HASHER_S3__READ_TIMEOUT
value: '30'
- name: HASHER_S3__REGION_NAME
value: ru-central1
- name: HASHER_S3__USE_SSL
value: 'true'
- name: HASHER_S3__VERIFY
value: 'true'
- name: HASHER_AMQP__USERNAME
valueFrom:
secretKeyRef:
key: user
name: hasher-rabbitmq-secret
- name: HASHER_AMQP__PASSWORD
valueFrom:
secretKeyRef:
key: password
name: hasher-rabbitmq-secret
- name: HASHER_AMQP__HOST
valueFrom:
secretKeyRef:
key: host
name: hasher-rabbitmq-secret
- name: HASHER_AMQP__PORT
valueFrom:
secretKeyRef:
key: port
name: hasher-rabbitmq-secret
- name: HASHER_AMQP__VHOST
valueFrom:
secretKeyRef:
key: vhost
name: hasher-rabbitmq-secret
- name: HASHER_S3__ENDPOINT
valueFrom:
secretKeyRef:
key: endpoint
name: hasher-s3-secret
- name: HASHER_S3__ACCESS_KEY
valueFrom:
secretKeyRef:
key: access_key
name: hasher-s3-secret
- name: HASHER_S3__SECRET_KEY
valueFrom:
secretKeyRef:
key: secret_key
name: hasher-s3-secret
image: cr.yandex/crp3ccidau046kdj8g9q/hasher:production_3f853d3a
imagePullPolicy: IfNotPresent
name: normal
ports:
- containerPort: 8080
name: http
protocol: TCP
imagePullSecrets:
- name: regcred

View File

@ -7,3 +7,5 @@ resources:
- pdm.yaml
- api.yaml
- filestream.yaml
- hasher.yaml
- pdf-markings-amqp.yaml

View File

@ -0,0 +1,125 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: pdf-markings-amqp
namespace: documentations
labels:
app: pdf-markings-amqp
service: api
spec:
replicas: 1
selector:
matchLabels:
app: pdf-markings-amqp
strategy:
rollingUpdate:
maxSurge: 3
maxUnavailable: 3
type: RollingUpdate
template:
metadata:
labels:
app: pdf-markings-amqp
service: api
spec:
containers:
- env:
- name: MARKS_APP__LOG_LEVEL
value: INFO
- name: MARKS_CRYPTO__HASHING_ALGO
value: md_gost12_256
- name: MARKS_DOCUMENTS_DB__HOST
value: 192.168.2.45
- name: MARKS_DOCUMENTS_DB__PORT
value: '5432'
- name: MARKS_DOCUMENTS_DB__DATABASE
value: documentations
- name: MARKS_DOCUMENTS_DB__SSLMODE
value: disable
- name: MARKS_QR__REDIRECT_URL
value: https://stamp-verification.test.sarex.brusnika.tech/
- name: MARKS_QR__BASE_DOCUMENT_URL
value: https://test.sarex.brusnika.tech
- name: MARKS_S3__USE_SSL
value: 'false'
- name: MARKS_S3__SSL_VERIFY
value: 'false'
- name: MARKS_S3__REGION
value: ru-central1
- name: MARKS_S3__DEFAULT_BUCKET
value: documentations-stage-1-sarex-new
- name: MARKS_RABBITMQ__ROUTING__INPUT_QUEUE
value: pdf_markings_input
- name: MARKS_DOCUMENTS_DB__USERNAME
valueFrom:
secretKeyRef:
key: username
name: postgres-secret
- name: MARKS_DOCUMENTS_DB__PASSWORD
valueFrom:
secretKeyRef:
key: password
name: postgres-secret
- name: MARKS_S3__URL
valueFrom:
secretKeyRef:
key: endpoint_url
name: yc-s3
- name: MARKS_S3__ACCESS_KEY
valueFrom:
secretKeyRef:
key: key_id
name: yc-s3
- name: MARKS_S3__SECRET_KEY
valueFrom:
secretKeyRef:
key: access_key
name: yc-s3
- name: MARKS_RABBITMQ__HOST
valueFrom:
secretKeyRef:
key: host
name: rabbitmq
- name: MARKS_RABBITMQ__PORT
valueFrom:
secretKeyRef:
key: port
name: rabbitmq
- name: MARKS_RABBITMQ__USERNAME
valueFrom:
secretKeyRef:
key: username
name: rabbitmq
- name: MARKS_RABBITMQ__PASSWORD
valueFrom:
secretKeyRef:
key: password
name: rabbitmq
- name: MARKS_RABBITMQ__VHOST
valueFrom:
secretKeyRef:
key: vhost
name: rabbitmq
- name: MARKS_RABBITMQ__HEARTBEAT_SECONDS
valueFrom:
secretKeyRef:
key: heartbeat
name: rabbitmq
image: cr.yandex/crp3ccidau046kdj8g9q/pdf-markings-amqp:prod_3ab263be
imagePullPolicy: IfNotPresent
name: api
ports:
- containerPort: 8000
name: http
protocol: TCP
volumeMounts:
- mountPath: /etc/sarex/yc-s3-storage
name: yc-s3
readOnly: true
volumes:
- name: yc-s3
secret:
secretName: yc-s3
imagePullSecrets:
- name: regcred

View File

@ -124,11 +124,11 @@ spec:
- name: TRANSMITTALS_BASE_URL
value:
_default: ""
_default: "http://transmittal-service.transmittal.svc.cluster.local:80"
- name: TRANSMITTALS_ENABLE
value:
_default: "false"
_default: "true"
- name: DRAWINGS_INTERNAL_URL
value:

View File

@ -156,3 +156,6 @@ spec:
- name: VALKEY_PORT
value:
_default: "6379"
- name: CDE_API_ENABLED
value:
_default: "false"

View File

@ -83,7 +83,7 @@ spec:
_default: v1
- name: SYSTEM_LOG_URL
value:
_default: http://api-service.system-log.svc.cluster.local:80
_default: http://backend-svc.system-log.svc.cluster.local:80
- name: DJANGO_HOST
value:
_default: http://backend-svc.django.svc.cluster.local:80
@ -144,3 +144,6 @@ spec:
- name: VALKEY_PORT
value:
_default: "6379"
- name: CDE_API_ENABLED
value:
_default: "false"

View File

@ -12,4 +12,8 @@ patches:
- path: filestream.yaml
target:
kind: HelmRelease
name: documentations-filestream
name: documentations-filestream
- path: pdf-markings-amqp.yaml
target:
kind: HelmRelease
name: documentations-pdf-markings-amqp

View File

@ -0,0 +1,62 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: documentations-pdf-markings-amqp
namespace: documentations
spec:
values:
services:
backend:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/pdf-markings:contour_ce9ed6d7
envs:
- name: MARKS_APP__LOG_LEVEL
value:
_default: INFO
- name: MARKS_CRYPTO__HASHING_ALGO
value:
_default: md_gost12_256
- name: MARKS_QR__REDIRECT_URL
value:
_default: "https://sarex-stamp-verification.uralmine.com/"
- name: MARKS_QR__BASE_DOCUMENT_URL
value:
_default: "https://sarex.uralmine.com"
- name: MARKS_S3__REGION
value:
_default: ru-central1
- name: MARKS_S3__USE_SSL
value:
_default: "true"
- name: MARKS_S3__SSL_VERIFY
value:
_default: "false"
- name: MARKS_S3__DEFAULT_BUCKET
value:
_default: documentations-marks
- name: MARKS_RABBITMQ__ROUTING__INPUT_QUEUE
value:
_default: pdf_markings_input
- name: MARKS_RABBITMQ__HOST
value:
_default: rabbitmq.rabbitmq.svc.cluster.local
- name: MARKS_RABBITMQ__PORT
value:
_default: "5672"
- name: MARKS_RABBITMQ__HEARTBEAT_SECONDS
value:
_default: "60"

View File

@ -36,7 +36,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/documentations:prod_179e518c
_default: cr.yandex/crp3ccidau046kdj8g9q/documentations:prod_0be18f51
pullPolicy:
_default: IfNotPresent
@ -134,6 +134,10 @@ spec:
- name: POSTGRES_POOL_SIZE
value:
_default: "20"
- name: CDE_API_ENABLED
value:
_default: "false"
- name: ZITADEL_ACCOUNT
value:
@ -215,9 +219,13 @@ spec:
value:
_default: "http://workspaces-service.workspaces.svc.cluster.local:8000/"
# Сервиса bim-api-service в контуре wb нет: в ns bim есть только
# backend-service:8000 (bim v2), на него же BIM_API_URL смотрит в
# brusnika-stage и asterus. Клиент bim-api (resty, retry 5 x 1s)
# на неразрешимом DNS отваливался ровно за ~5 с.
- name: BIM_API_URL
value:
_default: "http://bim-api-service.bim.svc.cluster.local:8080/"
_default: "http://backend-service.bim.svc.cluster.local:8000/"
- name: BIM_API_V2_URL
value:
@ -307,6 +315,23 @@ spec:
value:
_default: "6379"
- name: PUBLIC_LINK_FOLDER_CONNECTOR_ENABLED
value:
_default: "true"
- name: USE_MARKS_RABBITMQ
value:
_default: '1'
- name: MARKS_RABBITMQ_HOST
value:
_default: rabbitmq.rabbitmq.svc.cluster.local
- name: MARKS_RABBITMQ_PORT
value:
_default: '5672'
- name: MARKS_RABBITMQ_API
value:
_default: cde
secretEnvs:
- name: PUBLIC_KEY
secretName:
@ -338,6 +363,16 @@ spec:
_default: "django-auth"
secretKey: "key"
- name: MARKS_RABBITMQ_USER
secretName:
_default: "hasher-rabbitmq-secret"
secretKey: "user"
- name: MARKS_RABBITMQ_PASSWORD
secretName:
_default: "hasher-rabbitmq-secret"
secretKey: "password"
commitSha: ""
gitlabUri: ""
gitlabJobUrl: ""

View File

@ -36,7 +36,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/documentations-api-files:prod_3f19a21d
_default: cr.yandex/crp3ccidau046kdj8g9q/documentations-api-files:prod_fef3add2
pullPolicy:
_default: IfNotPresent
@ -56,13 +56,16 @@ spec:
limits:
cpu:
_default: 639m
# Range-отдача BIM-моделей идёт стримом, но поверх неё работает
# gorilla CompressHandler (gzip), и все поды регулярно уходили
# в OOMKilled (exit 137) на 198Mi.
memory:
_default: 198Mi
_default: 512Mi
requests:
cpu:
_default: 50m
memory:
_default: 85Mi
_default: 128Mi
probes:
liveness:
@ -134,6 +137,10 @@ spec:
- name: API_ADDRESS
value:
_default: "0.0.0.0:8080"
- name: CDE_API_ENABLED
value:
_default: "false"
- name: API_ADDRESS_FILE
value:
@ -191,9 +198,13 @@ spec:
value:
_default: "http://workspaces-service.workspaces.svc.cluster.local:8000/"
# Сервиса bim-api-service в контуре wb нет: в ns bim есть только
# backend-service:8000 (bim v2), на него же BIM_API_URL смотрит в
# brusnika-stage и asterus. Клиент bim-api (resty, retry 5 x 1s)
# на неразрешимом DNS отваливался ровно за ~5 с.
- name: BIM_API_URL
value:
_default: "http://bim-api-service.bim.svc.cluster.local:8080/"
_default: "http://backend-service.bim.svc.cluster.local:8000/"
- name: BIM_API_V2_URL
value:

View File

@ -36,7 +36,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/pdf-markings-amqp:prod_3ab263be
_default: cr.yandex/crp3ccidau046kdj8g9q/pdf-markings-amqp:prod_9dea5b64
pullPolicy:
_default: IfNotPresent

View File

@ -0,0 +1,46 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: backend
namespace: drawings
spec:
values:
services:
backend:
envs:
- name: POSTGRES_POOL_SIZE
value:
_default: "3"
- name: API_ADDRESS
value:
_default: "0.0.0.0:8000"
- name: ENABLE_SSL
value:
_default: "0"
- name: WORKFLOW_HOST
value:
_default: "http://backend-svc.processing.svc.cluster.local/"
- name: IMAGE_NAME_EXPORT_TO_DWG
value:
_default: "cross-sections-to-dwg"
- name: IMAGE_TAG
value:
_default: "develop"
- name: TASK_VERSION
value:
_default: "1"
- name: DRAWING_INTERNAL_URL
value:
_default: "http://backend-service.drawings.svc.cluster.local:8000/"
- name: ATTACHMENT_URL
value:
_default: "http://attachments-service.attachments.svc.cluster.local:8000"

View File

@ -2,3 +2,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
patches:
- path: backend.yaml
target:
kind: HelmRelease
name: backend

View File

@ -18,7 +18,7 @@ data:
# DEBUG SETTINGS START
# ---------------------------------------------------------------------------------------------------------------------
DEBUG = True
DEBUG = False
ALLOWED_HOSTS = ['*']
# ---------------------------------------------------------------------------------------------------------------------
# DEBUG SETTINGS END

View File

@ -55,14 +55,14 @@ spec:
resources:
limits:
cpu:
_default: 23m
_default: "1"
memory:
_default: 506Mi
_default: 1Gi
requests:
cpu:
_default: 12m
_default: 100m
memory:
_default: 330Mi
_default: 512Mi
probes:
liveness:
@ -97,23 +97,23 @@ spec:
envs:
- name: BASE_HOST
value:
_default: "https://srx.wb.ru"
_default: "http://frontend-service.django.svc.cluster.local:80"
- name: DJANGO_HOST
value:
_default: "https://srx.wb.ru"
_default: "http://backend.django.svc.cluster.local:8000"
- name: REVIEWS_HOST
value:
_default: "https://srx.wb.ru/flows"
_default: "http://backend-service.flows.svc.cluster.local:8000"
- name: GATEWAY_HOST
value:
_default: "https://srx.wb.ru/gateway"
_default: "http://pdm-api.documentations.svc.cluster.local:8080"
- name: DOCUMENTATIONS_HOST
value:
_default: "https://srx.wb.ru/documentations"
_default: "http://documentations-api.documentations.svc.cluster.local:8080"
- name: EAV_HOST
value:
@ -151,6 +151,10 @@ spec:
value:
_default: "180"
- name: GUNICORN_CMD_ARGS
value:
_default: "--timeout 3600 --graceful-timeout 30"
commitSha: ""
gitlabUri: ""
gitlabJobUrl: ""

View File

@ -35,7 +35,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/flows-backend_worker:production_e8a366a3
_default: cr.yandex/crp3ccidau046kdj8g9q/flows-backend_worker:production_81d0fa17
pullPolicy:
_default: IfNotPresent
@ -252,6 +252,26 @@ spec:
_default: "https://test.sarex.brusnika.tech"
secretEnvs:
- name: FLOWS_DB_DB
secretName:
_default: "postgres-secret"
secretKey: "database"
- name: FLOWS_DB_USERNAME
secretName:
_default: "postgres-secret"
secretKey: "username"
- name: FLOWS_DB_PASSWORD
secretName:
_default: "postgres-secret"
secretKey: "password"
- name: DJANGO_AUTH
secretName:
_default: "django-secret"
secretKey: "token"
- name: ADMIN_PANEL_SECRET_KEY
secretName:
_default: "admin-secret"

View File

@ -35,7 +35,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/flows-frontend:contour_ed219085
_default: cr.yandex/crp3ccidau046kdj8g9q/flows-frontend:contour_4652ff61
pullPolicy:
_default: IfNotPresent

View File

@ -1,11 +1,4 @@
---
# Патч backend для контура УГМК — подключение к Kafka.
#
# ВНИМАНИЕ: envs — список, kustomize заменяет его ЦЕЛИКОМ (JSON merge patch),
# поэтому здесь продублирован весь набор из apps/flows/base/backend.yaml.
# args — тоже список, продублирован весь скрипт с добавленным sourcing flows-kafka.
# podAnnotations — map, мержится по ключам, поэтому переопределён только
# один ключ agent-inject-template-flows-kafka; остальные vault-аннотации берутся из base.
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
@ -16,6 +9,8 @@ spec:
services:
backend:
deployment:
replicaCount:
_default: 2
args:
_default:
- |
@ -29,6 +24,19 @@ spec:
set +a
exec /opt/entrypoint.sh
volumes:
_default:
- name: authentication
mountPath:
_default: /opt/src/flow/admin/authentication.py
subPath:
_default: authentication.py
readOnly:
_default: true
configMap:
name:
_default: authentication
envs:
- name: LOG_LEVEL
value:
@ -98,6 +106,10 @@ spec:
value:
_default: "https://sarex.uralmine.com/flows/api/v1"
- name: PROXY_PATH_PREFIX
value:
_default: /flows
- name: SMTP_HOST
value:
_default: "post.uralmine.com"

View File

@ -35,7 +35,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/iams:contour_dada80a8
_default: cr.yandex/crp3ccidau046kdj8g9q/iams:contour_29754513
pullPolicy:
_default: IfNotPresent

View File

@ -0,0 +1,15 @@
---
apiVersion: v1
kind: Service
metadata:
name: iams
namespace: iam
spec:
type: ClusterIP
selector:
app: iam-backend
ports:
- name: http
port: 8080
targetPort: 8080
protocol: TCP

View File

@ -4,6 +4,7 @@ kind: Kustomization
namespace: iam
resources:
- ../base
- iams-service.yaml
patches:
- path: backend-s3.yaml
target:

View File

@ -0,0 +1,15 @@
---
apiVersion: v1
kind: Service
metadata:
name: iams
namespace: iam
spec:
type: ClusterIP
selector:
app: iam-backend
ports:
- name: http
port: 8080
targetPort: 8080
protocol: TCP

View File

@ -3,6 +3,7 @@ kind: Kustomization
namespace: iam
resources:
- ../base
- iams-service.yaml
patches:
- path: backend-s3.yaml
target:

View File

@ -42,7 +42,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/sarex-inspections:production_5fcce90d
_default: cr.yandex/crp3ccidau046kdj8g9q/inspections-backend:contour_32f00e42
pullPolicy:
_default: IfNotPresent

View File

@ -35,7 +35,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/sarex-inspections:production_1a33f6f4
_default: cr.yandex/crp3ccidau046kdj8g9q/sarex-inspections:production_5fcce90d
pullPolicy:
_default: IfNotPresent

View File

@ -122,7 +122,7 @@ data:
"PUT",
]
SAREX_API = "https://srx.wb.ru"
SAREX_API = os.getenv("SAREX_API", "https://srx.wb.ru")
AERO_PUBLIC_HOST = os.getenv("AERO_PUBLIC_HOST", default=SAREX_API)

View File

@ -176,9 +176,6 @@ spec:
- name: API_ADDRESS
value:
_default: "8000"
- name: RABBITMQ_HOSTNAME
value:
_default: "rabbitmq.rabbitmq.svc.cluster.local:5672"
secretEnvs:
- name: YC_S3_ACCESS_KEY_ID

View File

@ -64,27 +64,37 @@ spec:
- name: AERO_PUBLIC_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "https://sarex.uralmine.com"
- name: AERO_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "https://sarex.uralmine.com"
# server-to-server, не публичный хост: по коду issues-backend это
# базовый URL django (src/api/services.py, src/issues/notifications.py).
# Фактически значение всё равно берётся из production-configmap,
# где BASE_AERO_URL зашит на этот же адрес.
- name: BASE_AERO_URL
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: BASE_AUTH_URL
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
# INFRA-3005: namespace workflow в УГМК не существует, processing
# поставляется как backend-svc в namespace processing
# (apps/processing/base/api.yaml:74 + d8-ugmk-prod/namespace.yaml).
# Формат — базовый URL без пути и без слэша на конце: код сам
# добавляет /internal/v1/... (src/issues/mailing.py:122,
# src/api/services.py:616).
- name: WORKFLOWS_HOST
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: WORKFLOWS_URL
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: RESOURCES_API_HOST
value:
@ -94,13 +104,23 @@ spec:
value:
_default: "http://backend-svc.eav.svc.cluster.local:80"
# Внимание: реально действует значение из production-configmap —
# там SAREX_API переприсваивается после `from .base import *`.
# См. apps/issues/d8-ugmk-prod/production-configmap.yaml (INFRA-3005).
- name: SAREX_API
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: SAREX_HOST
value:
_default: "https://sarex.uralmine.com"
# Реальное имя сервиса — backend-api-svc (apps/documentations/base/api.yaml:74).
# Было documentations-api-svc — такого сервиса нет; не стреляло только
# потому, что production-configmap перетирает эту переменную хардкодом.
- name: DOCUMENTATIONS_URL
value:
_default: "http://documentations-api-svc.documentations.svc.cluster.local:80"
_default: "http://backend-api-svc.documentations.svc.cluster.local:80"
- name: DJANGO_SETTINGS_MODULE
value:

View File

@ -62,29 +62,35 @@ spec:
value:
_default: "production"
# AERO_PUBLIC_HOST участвует в сборке ссылок в уведомлениях
# (src/issues/notifications.py:324) — с чужим хостом в письмах УГМК
# уходили ссылки на srx.wb.ru.
- name: AERO_PUBLIC_HOST
value:
_default: "https://srx.wb.ru"
_default: "https://sarex.uralmine.com"
- name: AERO_HOST
value:
_default: "https://srx.wb.ru"
_default: "https://sarex.uralmine.com"
# server-to-server — внутренний django, см. backend-s3.yaml.
- name: BASE_AERO_URL
value:
_default: "https://srx.wb.ru"
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: BASE_AUTH_URL
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
# INFRA-3005: именно этот хост ронял celery-задачу экспорта в Excel
# и все уведомления. См. backend-s3.yaml и production-configmap.yaml.
- name: WORKFLOWS_HOST
value:
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: WORKFLOWS_URL
value:
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: RESOURCES_API_HOST
value:
@ -94,9 +100,14 @@ spec:
value:
_default: "http://backend-svc.eav.svc.cluster.local:80"
# Реально действует значение из production-configmap, см. там.
- name: SAREX_API
value:
_default: "https://srx.wb.ru"
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: SAREX_HOST
value:
_default: "https://sarex.uralmine.com"
- name: DOCUMENTATIONS_URL
value:

View File

@ -138,27 +138,29 @@ spec:
- name: AERO_PUBLIC_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "https://sarex.uralmine.com"
- name: AERO_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "https://sarex.uralmine.com"
# server-to-server — внутренний django, см. backend-s3.yaml.
- name: BASE_AERO_URL
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: BASE_AUTH_URL
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
# INFRA-3005: см. backend-s3.yaml и production-configmap.yaml.
- name: WORKFLOWS_HOST
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: WORKFLOWS_URL
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: RESOURCES_API_HOST
value:
@ -168,13 +170,15 @@ spec:
value:
_default: "http://backend-svc.eav.svc.cluster.local:80"
# Реально действует значение из production-configmap, см. там.
- name: SAREX_API
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "https://sarex.uralmine.com"
# Реальное имя сервиса — backend-api-svc, см. backend-s3.yaml.
- name: DOCUMENTATIONS_URL
value:
_default: "http://documentations-api-svc.documentations.svc.cluster.local:80"
_default: "http://backend-api-svc.documentations.svc.cluster.local:80"
- name: DJANGO_SETTINGS_MODULE
value:

View File

@ -18,3 +18,7 @@ patches:
target:
kind: HelmRelease
name: celery
- path: production-configmap.yaml
target:
kind: ConfigMap
name: production-configmap

View File

@ -0,0 +1,153 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: production-configmap
namespace: issues
data:
production.py: |
from datetime import timedelta
import os
from .base import *
# DEBUG SETTINGS START
# -----------------------------------------------------------------------------
DEBUG = True
# -----------------------------------------------------------------------------
TEST_MODE = False
# SECRETS SETTINGS START
# -----------------------------------------------------------------------------
SECRET_KEY = "FromToMuchLoveOfLiving" # Delete after Test
# -----------------------------------------------------------------------------
DJANGO_TOKEN = os.getenv("DJANGO_TOKEN")
# ALLOWED HOSTS START
# -----------------------------------------------------------------------------
ALLOWED_HOSTS = ["*"]
# -----------------------------------------------------------------------------
# APPS SETTINGS START
# -----------------------------------------------------------------------------
# INSTALLED_APPS += [
# "django_extensions",
# ]
# -----------------------------------------------------------------------------
# DEBUG SETTINGS START
# -----------------------------------------------------------------------------
DEBUG = False
# -----------------------------------------------------------------------------
REVIEW_HOST='http://backend-svc.flows.svc.cluster.local:80'
# -----------------------------------------------------------------------------
# EXTERNAL SERVICES END
# INFRA-3005: в base здесь хардкод workflows-api-service.workflow — такого
# сервиса в УГМК нет (DNS: "Name or service not known"), из-за чего падал
# POST {WORKFLOWS_HOST}/internal/v1/companies/{id}/workflows в
# issues/mailing.py:122 (WorkflowsMailer) — а это и рассылка уведомлений,
# и финальный шаг celery-задачи экспорта в Excel.
# В УГМК workflows (processing) живёт как backend-svc в namespace processing.
WORKFLOWS_HOST = os.getenv("WORKFLOWS_HOST", "http://backend-svc.processing.svc.cluster.local:80")
WORKFLOWS_URL = os.getenv("WORKFLOWS_URL", "http://backend-svc.processing.svc.cluster.local:80")
# backend-api-svc — реальное имя сервиса documentations (base/api.yaml:74).
DOCUMENTATIONS_URL = "http://backend-api-svc.documentations.svc.cluster.local:80"
RESOURCES_API_HOST = os.getenv("RESOURCES_API_HOST", default="http://resources-service.resources.svc.cluster:8000")
KAFKA_HOST = os.getenv("KAFKA_HOST")
KAFKA_USERNAME = os.getenv("KAFKA_USERNAME")
KAFKA_PASSWORD = os.getenv("KAFKA_PASSWORD")
KAFKA_SSL_CAFILE = os.getenv("KAFKA_SSL_CAFILE", "/usr/local/share/ca-certificates/kafka.crt")
KAFKA_EAV_ASSETS_TOPIC = os.getenv("KAFKA_EAV_ASSETS_TOPIC", "sarex")
KAFKA_ISSUES_TOPIC = os.getenv("KAFKA_ISSUES_TOPIC", "sarex-issues")
USE_ASYNC_FUNCTIONS = True
USE_NOTIFICATIONS = True
# JWT SETTINGS START
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")
# ---------------------------------------------------------------------------------------------------------------------
SIMPLE_JWT_ISSUER = os.getenv("SIMPLE_JWT_ISSUER", default="default_issuer")
SIMPLE_JWT = {
"ACCESS_TOKEN_LIFETIME": timedelta(minutes=5),
"REFRESH_TOKEN_LIFETIME": timedelta(days=1),
"ROTATE_REFRESH_TOKENS": False,
"UPDATE_LAST_LOGIN": False,
"ALGORITHM": "RS512",
"SIGNING_KEY": os.getenv("JWT_PRIVATE_KEY", default="").replace("\\n", "\n"),
"VERIFYING_KEY": os.getenv("JWT_PUBLIC_KEY").replace("\\n", "\n"),
"AUDIENCE": None,
"ISSUER": SIMPLE_JWT_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),
}
# ---------------------------------------------------------------------------------------------------------------------
CORS_ALLOWED_ORIGINS = [
"https://sarex.uralmine.com",
]
CORS_TRUSTED_ORIGINS = [
"https://sarex.uralmine.com",
]
CSRF_TRUSTED_ORIGINS = [
"https://sarex.uralmine.com",
]
CORS_ALLOW_ALL_ORIGINS = True
ENABLE_MAILGUN=False
SMTP_PORT=587
SMTP_HOST="post.uralmine.com"
EMAIL_FROM="sarex@uralmine.com"
CORS_ALLOW_METHODS = [
"DELETE",
"GET",
"OPTIONS",
"PATCH",
"POST",
"PUT",
]
SAREX_API = os.getenv("SAREX_API", "https://sarex.uralmine.com")
AERO_PUBLIC_HOST = os.getenv("AERO_PUBLIC_HOST", default=SAREX_API)
BASE_AERO_URL = "http://backend-svc.django.svc.cluster.local:80"
ENVIRONMENT = "production"
SESSION_COOKIE_NAME = "issues-sessionid"
CSRF_COOKIE_NAME = "issues-csrftoken"
STATIC_URL = "/static/"
STORAGES = {
'default': {
'BACKEND': "storages.backends.s3boto3.S3Boto3Storage",
},
'staticfiles': {
# Leave whatever setting you already have here, e.g.:
'BACKEND': "storages.backends.s3boto3.S3Boto3Storage",
}
}

View File

@ -1,149 +0,0 @@
---
# ВНИМАНИЕ: envs и args — списки, kustomize заменяет их ЦЕЛИКОМ (JSON merge patch),
# поэтому здесь продублирован весь набор из apps/issues/base/backend.yaml.
# podAnnotations — map, мержится по ключам.
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: backend
namespace: issues
spec:
values:
services:
backend:
deployment:
args:
_default:
- |
set -a
[ -f /vault/secrets/issues-db ] && . /vault/secrets/issues-db
[ -f /vault/secrets/issues-rabbitmq ] && . /vault/secrets/issues-rabbitmq
[ -f /vault/secrets/issues-s3 ] && . /vault/secrets/issues-s3
[ -f /vault/secrets/issues-django-auth ] && . /vault/secrets/issues-django-auth
[ -f /vault/secrets/issues-jwt-private ] && export JWT_PRIVATE_KEY="$(cat /vault/secrets/issues-jwt-private)"
[ -f /vault/secrets/issues-jwt-public ] && export JWT_PUBLIC_KEY="$(cat /vault/secrets/issues-jwt-public)"
[ -f /vault/secrets/issues-kafka ] && . /vault/secrets/issues-kafka
set +a
exec /src/entrypoint.sh
volumes:
_default:
- name: production-configmap
mountPath:
_default: /src/config/settings/production.py
subPath:
_default: production.py
readOnly:
_default: true
configMap:
name:
_default: production-configmap
items:
- key: production.py
path:
_default: production.py
- name: kafka-ca-cert
mountPath:
_default: /usr/local/share/ca-certificates/kafka.crt
subPath:
_default: kafka.crt
readOnly:
_default: true
secret:
secretName:
_default: kafka-kafka-contour-tls
items:
- key: ca.crt
path:
_default: kafka.crt
envs:
- name: ENVIRONMENT
value:
_default: "production"
- name: AERO_PUBLIC_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: AERO_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: BASE_AERO_URL
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: BASE_AUTH_URL
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: WORKFLOWS_HOST
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
- name: WORKFLOWS_URL
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
- name: RESOURCES_API_HOST
value:
_default: "http://iam-backend.iam.svc.cluster.local:8000"
- name: EAV_HOST
value:
_default: "http://backend-svc.eav.svc.cluster.local:80"
- name: SAREX_API
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: DOCUMENTATIONS_URL
value:
_default: "http://documentations-api-svc.documentations.svc.cluster.local:80"
- name: DJANGO_SETTINGS_MODULE
value:
_default: "config.settings.production"
- name: API_ADDRESS
value:
_default: "8000"
# Kafka — код (kafka_app/app.py) ждёт KAFKA_HOST единой строкой "host:port",
# KAFKA_SSL_CAFILE — путь к файлу (не PEM-текст, в отличие от flows-backend).
# Хост/порт/CA — те же проверенные значения, что у message-hub/pm/flows.
- name: KAFKA_HOST
value:
_default: "kafka-kafka-contour.kafka.svc.cluster.local:9092"
- name: KAFKA_SSL_CAFILE
value:
_default: "/usr/local/share/ca-certificates/kafka.crt"
# Топики совпадают с тем, что уже провижено на брокере (см. topics
# в секрете kafka/apps/pm) и с SETTINGS_TOPICS у message-hub.
- name: KAFKA_ISSUES_TOPIC
value:
_default: "issues_broadcast_prod"
- name: KAFKA_EAV_ASSETS_TOPIC
value:
_default: "assets_broadcast"
podAnnotations:
_default:
vault.hashicorp.com/agent-inject-secret-issues-s3: secrets/data/minio/apps/issues
vault.hashicorp.com/agent-inject-template-issues-s3: |-
{{- with secret "secrets/data/minio/apps/issues" -}}
YC_S3_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
YC_S3_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
YC_S3_BUCKET_NAME=issues
YC_S3_ENDPOINT_URL=http://s3-proxy.s3-proxy.svc.cluster.local
{{- end -}}
vault.hashicorp.com/agent-inject-secret-issues-kafka: secrets/data/kafka/apps/issues
vault.hashicorp.com/agent-inject-template-issues-kafka: |-
{{- with secret "secrets/data/kafka/apps/issues" -}}
KAFKA_USERNAME={{ index .Data.data "username" }}
KAFKA_PASSWORD={{ index .Data.data "password" }}
{{- end -}}

View File

@ -8,8 +8,145 @@ spec:
values:
services:
backend:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/issues:production_eb983275
deployment:
resources:
requests:
cpu: null
memory: null
args:
_default:
- |
set -a
[ -f /vault/secrets/issues-db ] && . /vault/secrets/issues-db
[ -f /vault/secrets/issues-rabbitmq ] && . /vault/secrets/issues-rabbitmq
[ -f /vault/secrets/issues-s3 ] && . /vault/secrets/issues-s3
[ -f /vault/secrets/issues-django-auth ] && . /vault/secrets/issues-django-auth
[ -f /vault/secrets/issues-jwt-private ] && export JWT_PRIVATE_KEY="$(cat /vault/secrets/issues-jwt-private)"
[ -f /vault/secrets/issues-jwt-public ] && export JWT_PUBLIC_KEY="$(cat /vault/secrets/issues-jwt-public)"
[ -f /vault/secrets/issues-kafka ] && . /vault/secrets/issues-kafka
set +a
exec /src/entrypoint.sh
volumes:
_default:
- name: production-configmap
mountPath:
_default: /src/config/settings/production.py
subPath:
_default: production.py
readOnly:
_default: true
configMap:
name:
_default: production-configmap
items:
- key: production.py
path:
_default: production.py
- name: kafka-ca-cert
mountPath:
_default: /usr/local/share/ca-certificates/kafka.crt
subPath:
_default: kafka.crt
readOnly:
_default: true
secret:
secretName:
_default: kafka-kafka-contour-tls
items:
- key: ca.crt
path:
_default: kafka.crt
envs:
- name: ENVIRONMENT
value:
_default: "production"
- name: AERO_PUBLIC_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: AERO_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: BASE_AERO_URL
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: BASE_AUTH_URL
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: WORKFLOWS_HOST
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
- name: WORKFLOWS_URL
value:
_default: "http://backend-svc.workflow.svc.cluster.local:80"
- name: RESOURCES_API_HOST
value:
_default: "http://iam-backend.iam.svc.cluster.local:8000"
- name: EAV_HOST
value:
_default: "http://backend-svc.eav.svc.cluster.local:80"
- name: SAREX_API
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: SAREX_HOST
value:
_default: "https://sarex.local.uralkali.com"
- name: DOCUMENTATIONS_URL
value:
_default: "http://documentations-api-svc.documentations.svc.cluster.local:80"
- name: DJANGO_SETTINGS_MODULE
value:
_default: "config.settings.production"
- name: API_ADDRESS
value:
_default: "8000"
- name: KAFKA_HOST
value:
_default: "kafka-kafka-contour.kafka.svc.cluster.local:9092"
- name: KAFKA_SSL_CAFILE
value:
_default: "/usr/local/share/ca-certificates/kafka.crt"
- name: KAFKA_ISSUES_TOPIC
value:
_default: "issues_broadcast_prod"
- name: KAFKA_EAV_ASSETS_TOPIC
value:
_default: "assets_broadcast"
podAnnotations:
_default:
vault.hashicorp.com/agent-inject-secret-issues-s3: secrets/data/minio/apps/issues
vault.hashicorp.com/agent-inject-template-issues-s3: |-
{{- with secret "secrets/data/minio/apps/issues" -}}
YC_S3_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
YC_S3_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
YC_S3_BUCKET_NAME=issues
YC_S3_ENDPOINT_URL=http://10.133.0.245:9000
{{- end -}}
vault.hashicorp.com/agent-inject-secret-issues-kafka: secrets/data/kafka/apps/issues
vault.hashicorp.com/agent-inject-template-issues-kafka: |-
{{- with secret "secrets/data/kafka/apps/issues" -}}
KAFKA_USERNAME={{ index .Data.data "username" }}
KAFKA_PASSWORD={{ index .Data.data "password" }}
{{- end -}}

View File

@ -1,145 +0,0 @@
---
# ВНИМАНИЕ: envs и args — списки, kustomize заменяет их ЦЕЛИКОМ (JSON merge patch),
# поэтому здесь продублирован весь набор из apps/issues/base/celery.yaml.
# podAnnotations — map, мержится по ключам.
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: celery
namespace: issues
spec:
values:
services:
celery:
deployment:
args:
_default:
- |
set -a
[ -f /vault/secrets/issues-db ] && . /vault/secrets/issues-db
[ -f /vault/secrets/issues-rabbitmq ] && . /vault/secrets/issues-rabbitmq
[ -f /vault/secrets/issues-s3 ] && . /vault/secrets/issues-s3
[ -f /vault/secrets/issues-django-auth ] && . /vault/secrets/issues-django-auth
[ -f /vault/secrets/issues-jwt-private ] && export JWT_PRIVATE_KEY="$(cat /vault/secrets/issues-jwt-private)"
[ -f /vault/secrets/issues-jwt-public ] && export JWT_PUBLIC_KEY="$(cat /vault/secrets/issues-jwt-public)"
[ -f /vault/secrets/issues-kafka ] && . /vault/secrets/issues-kafka
set +a
exec celery -A config worker -l info -E
volumes:
_default:
- name: production-configmap
mountPath:
_default: /src/config/settings/production.py
subPath:
_default: production.py
readOnly:
_default: true
configMap:
name:
_default: production-configmap
items:
- key: production.py
path:
_default: production.py
- name: kafka-ca-cert
mountPath:
_default: /usr/local/share/ca-certificates/kafka.crt
subPath:
_default: kafka.crt
readOnly:
_default: true
secret:
secretName:
_default: kafka-kafka-contour-tls
items:
- key: ca.crt
path:
_default: kafka.crt
envs:
- name: ENVIRONMENT
value:
_default: "production"
- name: AERO_PUBLIC_HOST
value:
_default: "https://srx.wb.ru"
- name: AERO_HOST
value:
_default: "https://srx.wb.ru"
- name: BASE_AERO_URL
value:
_default: "https://srx.wb.ru"
- name: BASE_AUTH_URL
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: WORKFLOWS_HOST
value:
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
- name: WORKFLOWS_URL
value:
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
- name: RESOURCES_API_HOST
value:
_default: "http://iam-backend.iam.svc.cluster.local:8000"
- name: EAV_HOST
value:
_default: "http://backend-svc.eav.svc.cluster.local:80"
- name: SAREX_API
value:
_default: "https://srx.wb.ru"
- name: DOCUMENTATIONS_URL
value:
_default: "http://backend-api-svc.documentations.svc.cluster.local:80"
- name: DJANGO_SETTINGS_MODULE
value:
_default: "config.settings.production"
- name: API_ADDRESS
value:
_default: "8000"
# См. подробные комментарии в apps/issues/d8-ugmk-prod/backend-s3.yaml.
- name: KAFKA_HOST
value:
_default: "kafka-kafka-contour.kafka.svc.cluster.local:9092"
- name: KAFKA_SSL_CAFILE
value:
_default: "/usr/local/share/ca-certificates/kafka.crt"
- name: KAFKA_ISSUES_TOPIC
value:
_default: "issues_broadcast_prod"
- name: KAFKA_EAV_ASSETS_TOPIC
value:
_default: "assets_broadcast"
podAnnotations:
_default:
vault.hashicorp.com/agent-inject-secret-issues-s3: secrets/data/minio/apps/issues
vault.hashicorp.com/agent-inject-template-issues-s3: |-
{{- with secret "secrets/data/minio/apps/issues" -}}
YC_S3_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
YC_S3_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
YC_S3_BUCKET_NAME=issues
YC_S3_ENDPOINT_URL=http://s3-proxy.s3-proxy.svc.cluster.local
{{- end -}}
vault.hashicorp.com/agent-inject-secret-issues-kafka: secrets/data/kafka/apps/issues
vault.hashicorp.com/agent-inject-template-issues-kafka: |-
{{- with secret "secrets/data/kafka/apps/issues" -}}
KAFKA_USERNAME={{ index .Data.data "username" }}
KAFKA_PASSWORD={{ index .Data.data "password" }}
{{- end -}}

View File

@ -13,3 +13,137 @@ spec:
requests:
cpu: null
memory: null
args:
_default:
- |
set -a
[ -f /vault/secrets/issues-db ] && . /vault/secrets/issues-db
[ -f /vault/secrets/issues-rabbitmq ] && . /vault/secrets/issues-rabbitmq
[ -f /vault/secrets/issues-s3 ] && . /vault/secrets/issues-s3
[ -f /vault/secrets/issues-django-auth ] && . /vault/secrets/issues-django-auth
[ -f /vault/secrets/issues-jwt-private ] && export JWT_PRIVATE_KEY="$(cat /vault/secrets/issues-jwt-private)"
[ -f /vault/secrets/issues-jwt-public ] && export JWT_PUBLIC_KEY="$(cat /vault/secrets/issues-jwt-public)"
[ -f /vault/secrets/issues-kafka ] && . /vault/secrets/issues-kafka
set +a
exec celery -A config worker -l info -E
volumes:
_default:
- name: production-configmap
mountPath:
_default: /src/config/settings/production.py
subPath:
_default: production.py
readOnly:
_default: true
configMap:
name:
_default: production-configmap
items:
- key: production.py
path:
_default: production.py
- name: kafka-ca-cert
mountPath:
_default: /usr/local/share/ca-certificates/kafka.crt
subPath:
_default: kafka.crt
readOnly:
_default: true
secret:
secretName:
_default: kafka-kafka-contour-tls
items:
- key: ca.crt
path:
_default: kafka.crt
envs:
- name: ENVIRONMENT
value:
_default: "production"
- name: AERO_PUBLIC_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: AERO_HOST
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: BASE_AERO_URL
value:
_default: "https://sarex.contour.infra.sarex.tech"
- name: BASE_AUTH_URL
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: WORKFLOWS_HOST
value:
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
- name: WORKFLOWS_URL
value:
_default: "http://workflows-api-service.workflow.svc.cluster.local:8000"
- name: RESOURCES_API_HOST
value:
_default: "http://iam-backend.iam.svc.cluster.local:8000"
- name: EAV_HOST
value:
_default: "http://backend-svc.eav.svc.cluster.local:80"
- name: SAREX_API
value:
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: SAREX_HOST
value:
_default: "https://sarex.local.uralkali.com"
- name: DOCUMENTATIONS_URL
value:
_default: "http://backend-api-svc.documentations.svc.cluster.local:80"
- name: DJANGO_SETTINGS_MODULE
value:
_default: "config.settings.production"
- name: API_ADDRESS
value:
_default: "8000"
- name: KAFKA_HOST
value:
_default: "kafka-kafka-contour.kafka.svc.cluster.local:9092"
- name: KAFKA_SSL_CAFILE
value:
_default: "/usr/local/share/ca-certificates/kafka.crt"
- name: KAFKA_ISSUES_TOPIC
value:
_default: "issues_broadcast_prod"
- name: KAFKA_EAV_ASSETS_TOPIC
value:
_default: "assets_broadcast"
podAnnotations:
_default:
vault.hashicorp.com/agent-inject-secret-issues-s3: secrets/data/minio/apps/issues
vault.hashicorp.com/agent-inject-template-issues-s3: |-
{{- with secret "secrets/data/minio/apps/issues" -}}
YC_S3_ACCESS_KEY_ID={{ index .Data.data "access_key" }}
YC_S3_SECRET_ACCESS_KEY={{ index .Data.data "secret_key" }}
YC_S3_BUCKET_NAME=issues
YC_S3_ENDPOINT_URL=http://10.133.0.245:9000
{{- end -}}
vault.hashicorp.com/agent-inject-secret-issues-kafka: secrets/data/kafka/apps/issues
vault.hashicorp.com/agent-inject-template-issues-kafka: |-
{{- with secret "secrets/data/kafka/apps/issues" -}}
KAFKA_USERNAME={{ index .Data.data "username" }}
KAFKA_PASSWORD={{ index .Data.data "password" }}
{{- end -}}

View File

@ -3,14 +3,6 @@ kind: Kustomization
resources:
- ../base
patches:
- path: backend-s3.yaml
target:
kind: HelmRelease
name: backend
- path: celery-s3.yaml
target:
kind: HelmRelease
name: celery
- path: backend.yaml
target:
kind: HelmRelease

View File

@ -96,7 +96,11 @@ spec:
- name: SAREX_API
value:
_default: "https://sarex.contour.infra.sarex.tech"
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: SAREX_HOST
value:
_default: "https://sarex.vadroad.ru"
- name: DOCUMENTATIONS_URL
value:

View File

@ -96,7 +96,11 @@ spec:
- name: SAREX_API
value:
_default: "https://srx.wb.ru"
_default: "http://backend-svc.django.svc.cluster.local:80"
- name: SAREX_HOST
value:
_default: "https://sarex.vadroad.ru"
- name: DOCUMENTATIONS_URL
value:

View File

@ -12,7 +12,6 @@ data:
# DEBUG SETTINGS START
# -----------------------------------------------------------------------------
DEBUG = True
# -----------------------------------------------------------------------------
TEST_MODE = False
@ -40,7 +39,7 @@ data:
# DEBUG SETTINGS START
# -----------------------------------------------------------------------------
DEBUG = True
DEBUG = False
# -----------------------------------------------------------------------------
REVIEW_HOST='http://backend-service.flows.svc.cluster.local:8000'

View File

@ -13,3 +13,28 @@ spec:
requests:
cpu: null
memory: null
envs:
- name: DOCUMENTATION_HOST
value:
_default: "http://backend-api-svc.documentations.svc.cluster.local/api/v1"
- name: FLOW_HOST
value:
_default: "http://backend-svc.flows.svc.cluster.local/api/v1"
- name: DJANGO_HOST
value:
_default: "http://backend-svc.django.svc.cluster.local/api"
- name: NOTE_HOST
value:
_default: "http://backend-service.notes.svc.cluster.local:8000/api/v1"
- name: REDIS_USE
value:
_default: "0"
- name: TIMEOUT
value:
_default: "120"

View File

@ -66,7 +66,7 @@ spec:
enabled: false
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/notes-backend:production_81366854
_default: cr.yandex/crp3ccidau046kdj8g9q/notes-backend:preprod_c00faf6e
pullPolicy:
_default: IfNotPresent
service:

View File

@ -48,7 +48,7 @@ spec:
enabled: false
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/notes-frontend:production_0cb0909f
_default: cr.yandex/crp3ccidau046kdj8g9q/notes-frontend:contour_5ff34172
pullPolicy:
_default: IfNotPresent
service:

View File

@ -35,7 +35,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/notes-backend:0.3.7
_default: cr.yandex/crp3ccidau046kdj8g9q/notes-backend:production_81366854
pullPolicy:
_default: IfNotPresent
@ -87,6 +87,14 @@ spec:
monitoring: prometheus
envs:
- name: SYNC_RESOURCE_ID
value:
_default: "0"
- name: ENABLE_ND
value:
_default: "0"
- name: DJANGO_HOST
value:
_default: "http://backend.django.svc.cluster.local:8000"

View File

@ -35,7 +35,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/notes-frontend:prod_55791cf6_relative
_default: cr.yandex/crp3ccidau046kdj8g9q/notes-frontend:production_0cb0909f
pullPolicy:
_default: IfNotPresent

View File

@ -13,3 +13,52 @@ spec:
requests:
cpu: null
memory: null
envs:
- name: PG_SSL_MODE
value:
_default: "disable"
- name: DJANGO_HOST
value:
_default: "http://backend-svc.django.svc.cluster.local"
- name: BASE_HOST
value:
_default: "https://sarex.local.uralkali.com/notes"
- name: TIMEOUT
value:
_default: "120"
- name: FAAS_SERVICE
value:
_default: "https://api.sarex.io/lambdas"
- name: WORKSPACE_URL
value:
_default: "http://backend-svc.workspaces.svc.cluster.local/api/v1"
- name: WORKFLOW_HOST
value:
_default: "http://backend-svc.processing.svc.cluster.local/api/v1"
- name: WORKFLOW_TAG
value:
_default: "stable"
- name: RESOURCE_URL
value:
_default: "https://api.sarex.io/resources/api/v1"
- name: SYNC_RESOURCE_ID
value:
_default: "0"
- name: ENABLE_ND
value:
_default: "0"
- name: ATTACHMENT_HOST
value:
_default: "http://attachments-service.attachments.svc.cluster.local:8000/api/v1"

View File

@ -37,7 +37,7 @@ spec:
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/pm-frontend:contour_7f125269
_default: cr.yandex/crp3ccidau046kdj8g9q/pm-frontend:contour_abfaba7c
pullPolicy:
_default: IfNotPresent

View File

@ -147,6 +147,28 @@ spec:
value:
_default: "/api/v1"
- name: KAFKA_ENABLE
value:
_default: "True"
- name: KAFKA_BOOTSTRAP_SERVERS
value:
_default: '["wb-prod-kafka-bootstrap.kafka.svc.cluster.local:9093"]'
- name: KAFKA_SECURITY_PROTOCOL
value:
_default: "SSL"
- name: KAFKA_SSL_CAFILE
value:
_default: "/usr/local/share/ca-certificates/kafka.crt"
# Обязан совпадать с SETTINGS_TOPICS["planning"] в
# apps/message-hub/wb/message-hub.yaml
- name: KAFKA_TOPICS
value:
_default: '{"planning": "message-hub-prod"}'
commitSha: ""
gitlabUri: ""
gitlabJobUrl: ""

View File

@ -141,6 +141,26 @@ spec:
value:
_default: "/api/v1"
- name: KAFKA_ENABLE
value:
_default: "True"
- name: KAFKA_BOOTSTRAP_SERVERS
value:
_default: '["wb-prod-kafka-bootstrap.kafka.svc.cluster.local:9093"]'
- name: KAFKA_SECURITY_PROTOCOL
value:
_default: "SSL"
- name: KAFKA_SSL_CAFILE
value:
_default: "/usr/local/share/ca-certificates/kafka.crt"
- name: KAFKA_TOPICS
value:
_default: '{"planning": "message-hub-prod"}'
commitSha: ""
gitlabUri: ""
gitlabJobUrl: ""

View File

@ -0,0 +1,313 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: backend
namespace: premises
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:
backend:
enabled: true
serviceAccount:
enabled:
_default: true
name:
_default: premises-vault
image:
name:
_default: cr.yandex/crp3ccidau046kdj8g9q/premises-backend:production_216148a9
pullPolicy:
_default: IfNotPresent
deployment:
enabled: true
name:
_default: premises-backend
replicaCount:
_default: 1
port:
_default: 8000
command:
_default: ["/bin/sh", "-ec"]
args:
_default:
- |
set -a
[ -f /vault/secrets/premises-db ] && . /vault/secrets/premises-db
[ -f /vault/secrets/premises-kafka ] && . /vault/secrets/premises-kafka
[ -f /vault/secrets/premises-s3 ] && . /vault/secrets/premises-s3
[ -f /vault/secrets/premises-issues-db ] && . /vault/secrets/premises-issues-db
[ -f /vault/secrets/premises-inspections-db ] && . /vault/secrets/premises-inspections-db
[ -f /vault/secrets/premises-checklists-db ] && . /vault/secrets/premises-checklists-db
[ -f /vault/secrets/premises-eav-db ] && . /vault/secrets/premises-eav-db
[ -f /vault/secrets/premises-sarex-db ] && . /vault/secrets/premises-sarex-db
[ -f /usr/local/share/ca-certificates/kafka.crt ] && export KAFKA_SSL_CERT="$(cat /usr/local/share/ca-certificates/kafka.crt)"
set +a
exec ./entrypoint.sh
resources:
requests:
cpu:
_default: "1"
memory:
_default: 1Gi
probes:
liveness:
enabled:
_default: true
httpGet:
path:
_default: /internal/healthz/live/
initialDelaySeconds:
_default: 10
periodSeconds:
_default: 60
readiness:
enabled:
_default: true
httpGet:
path:
_default: /internal/healthz/ready/
initialDelaySeconds:
_default: 10
periodSeconds:
_default: 30
service:
enabled: true
name:
_default: backend-svc
type:
_default: ClusterIP
port:
_default: 80
targetPort:
_default: 8000
portName:
_default: http
imagePullSecrets:
enabled:
_default: true
name:
_default: regcred
envs:
- name: DEBUG
value:
_default: "false"
- name: HTTP_ROOT_PATH
value:
_default: "/premises"
- name: JWT_AUTH_ENABLE
value:
_default: "true"
- name: GUNICORN_WORKERS
value:
_default: "3"
- name: FASTSTREAM_WORKERS
value:
_default: "3"
- name: DATABASE_POOL_SIZE
value:
_default: "5"
- name: KAFKA_EAV_ASSET_TOPIC_NAME
value:
_default: "assets_broadcast"
- name: KAFKA_SSL_CERT
value:
_default: ""
- name: S3_BUCKET
value:
_default: "premises"
- name: EXPORT_TTL_MINUTES
value:
_default: "30"
- name: EXPORT_MAX_WORKERS
value:
_default: "4"
- name: EXPORT_S3_KEY_PREFIX
value:
_default: "premise-export"
- name: ATTACHMENT_MAX_SIZE_BYTES
value:
_default: "314572800"
- name: ATTACHMENT_S3_KEY_PREFIX
value:
_default: "attachment/"
- name: OTEL_ENABLE
value:
_default: "false"
- name: OTEL_URL
value:
_default: "http://signoz-otel-collector-external.signoz.svc.cluster.local:4317"
- name: OTEL_SERVICE_NAME
value:
_default: "premises-backend"
- name: OTEL_INSECURE
value:
_default: "true"
- name: SRX_SDK_IAM_ENVIRONMENT
value:
_default: "production"
- name: WORKFLOWS_HOST
value:
_default: "http://backend-svc.processing.svc.cluster.local:80"
- name: WORKFLOWS_GENERATION_IMAGE
value:
_default: "cr.yandex/crp3ccidau046kdj8g9q/rendering-template:master"
- name: WORKFLOWS_DOCX_TO_PDF_IMAGE
value:
_default: "cr.yandex/crp3ccidau046kdj8g9q/docx-to-pdf:latest"
- name: WORKFLOWS_CALLBACK_IMAGE
value:
_default: "cr.yandex/crp3ccidau046kdj8g9q/webhook-caller:master"
- name: WORKFLOWS_CALLBACK_HOST
value:
_default: "http://backend-svc.premises.svc.cluster.local:80"
- name: WORKFLOWS_RESULT_PATH
value:
_default: "premises-prod"
podAnnotations:
_default:
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: premises
vault.hashicorp.com/agent-inject-secret-premises-db: secrets/data/apps/premises/postgres
vault.hashicorp.com/agent-inject-template-premises-db: |-
{{- with secret "secrets/data/apps/premises/postgres" -}}
DATABASE_HOST={{ index .Data.data "host" }}
DATABASE_PORT={{ index .Data.data "port" }}
DATABASE_NAME={{ index .Data.data "database" }}
DATABASE_USERNAME={{ index .Data.data "username" }}
DATABASE_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-premises-kafka: secrets/data/kafka/apps/premises
vault.hashicorp.com/agent-inject-template-premises-kafka: |-
{{- with secret "secrets/data/kafka/apps/premises" -}}
KAFKA_HOST={{ if .Data.data.auth }}{{ index .Data.data.auth "bootstrap_servers" }}{{ else }}{{ index .Data.data "bootstrap_servers" }}{{ end }}
KAFKA_USERNAME={{ index .Data.data "username" }}
KAFKA_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-premises-s3: secrets/data/minio/apps/premises
vault.hashicorp.com/agent-inject-template-premises-s3: |-
{{- with secret "secrets/data/minio/apps/premises" -}}
S3_HOST={{ index .Data.data.client "endpoint" }}
S3_ACCESS_KEY={{ index .Data.data "access_key" }}
S3_SECRET_KEY={{ index .Data.data "secret_key" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-premises-issues-db: secrets/data/apps/issues/postgres
vault.hashicorp.com/agent-inject-template-premises-issues-db: |-
{{- with secret "secrets/data/apps/issues/postgres" -}}
ISSUES_DATABASE_HOST={{ index .Data.data "host" }}
ISSUES_DATABASE_PORT={{ index .Data.data "port" }}
ISSUES_DATABASE_NAME={{ index .Data.data "database" }}
ISSUES_DATABASE_USERNAME={{ index .Data.data "username" }}
ISSUES_DATABASE_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-premises-inspections-db: secrets/data/apps/inspections/postgres
vault.hashicorp.com/agent-inject-template-premises-inspections-db: |-
{{- with secret "secrets/data/apps/inspections/postgres" -}}
INSPECTIONS_DATABASE_HOST={{ index .Data.data "host" }}
INSPECTIONS_DATABASE_PORT={{ index .Data.data "port" }}
INSPECTIONS_DATABASE_NAME={{ index .Data.data "database" }}
INSPECTIONS_DATABASE_USERNAME={{ index .Data.data "username" }}
INSPECTIONS_DATABASE_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-premises-checklists-db: secrets/data/apps/checklists/postgres
vault.hashicorp.com/agent-inject-template-premises-checklists-db: |-
{{- with secret "secrets/data/apps/checklists/postgres" -}}
CHECKLISTS_DATABASE_HOST={{ index .Data.data "host" }}
CHECKLISTS_DATABASE_PORT={{ index .Data.data "port" }}
CHECKLISTS_DATABASE_NAME={{ index .Data.data "database" }}
CHECKLISTS_DATABASE_USERNAME={{ index .Data.data "username" }}
CHECKLISTS_DATABASE_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-premises-eav-db: secrets/data/apps/eav/postgres
vault.hashicorp.com/agent-inject-template-premises-eav-db: |-
{{- with secret "secrets/data/apps/eav/postgres" -}}
EAV_DATABASE_HOST={{ index .Data.data "host" }}
EAV_DATABASE_PORT={{ index .Data.data "port" }}
EAV_DATABASE_NAME={{ index .Data.data "database" }}
EAV_DATABASE_USERNAME={{ index .Data.data "username" }}
EAV_DATABASE_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
vault.hashicorp.com/agent-inject-secret-premises-sarex-db: secrets/data/apps/django/postgres
vault.hashicorp.com/agent-inject-template-premises-sarex-db: |-
{{- with secret "secrets/data/apps/django/postgres" -}}
SAREX_DATABASE_HOST={{ index .Data.data "host" }}
SAREX_DATABASE_PORT={{ index .Data.data "port" }}
SAREX_DATABASE_NAME={{ index .Data.data "database" }}
SAREX_DATABASE_USERNAME={{ index .Data.data "username" }}
SAREX_DATABASE_PASSWORD={{ index .Data.data "password" }}
{{- end -}}
commitSha: ""
gitlabUri: ""
gitlabJobUrl: ""
owner: ""

View File

@ -0,0 +1,7 @@
---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: premises
resources:
- namespace.yaml
- backend.yaml

View File

@ -0,0 +1,7 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: premises
labels:
istio-injection: enabled

View File

@ -0,0 +1,31 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: backend
namespace: premises
spec:
values:
services:
backend:
deployment:
resources:
requests:
cpu: null
memory: null
volumes:
_default:
- name: kafka-ca-cert
mountPath:
_default: /usr/local/share/ca-certificates/kafka.crt
subPath:
_default: kafka.crt
readOnly:
_default: true
configMap:
name:
_default: kafka-ca-cert
items:
- key: kafka.crt
path:
_default: kafka.crt

View File

@ -0,0 +1,27 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kafka-ca-cert
namespace: premises
data:
kafka.crt: |
-----BEGIN CERTIFICATE-----
MIIDETCCAfmgAwIBAgIQI30u4fwgUnGBxyLicuU5EzANBgkqhkiG9w0BAQsFADAT
MREwDwYDVQQDEwhrYWZrYS1jYTAeFw0yNjA3MTMxNzQwNDJaFw0yNzA3MTMxNzQw
NDJaMBMxETAPBgNVBAMTCGthZmthLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAudTWG0AwdqIMqbqGwjf9CY0BMMQm+HDPRkzMnXqVCSqAYLBLuPBC
h4+qm+IKAIpiJrO5pCDxeU1mVqMgRnXcdYyuefCzlTAKMNuM1CVM4ou695B0zKiy
D+7NHsdhuoH/ne3jCa8VpylDfKWsxcq3tDCdtZ5drPK80g2o0eo2LHx4erJtSABV
tqCrcIuy1nClAwGY4ejO+psr+gIzrHdYzve6YRRFBqVp6sJHcW1Cj6wOpHax4pcM
Srh5EcZ4dk434UNOZy2Ebji/9Lwxn0CiXtPTHYGTgNLhujurylFM1nUx69QgsR3C
GRZSY3R8Kegd4bzzhHfoBMQvl5Py+0o85QIDAQABo2EwXzAOBgNVHQ8BAf8EBAMC
AqQwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQFMAMB
Af8wHQYDVR0OBBYEFKhTGCqho/YjUZK1ndypuYs970kcMA0GCSqGSIb3DQEBCwUA
A4IBAQBvIzVhkzib6LJxt3tUkDFy87Yf1gG+rRVZiL/ZGrOsQlvBt4eLzZIytAvL
QaZHY+imIyzURj57IFfyFM1fEPRhc9et0VaRYxGwapLljez0jqPedM8rCsunJmVP
KrQxAfvbmHvcZ8k51tpD+YydmoARjBmoRdRIuLTDsuLv0Szg45M/7I4px2ycGN2j
kF7jVwF56u2eIrUGybnsH2qg+MY7devv3rG1Y1YV7HEwMAAeN1n5JLxxuA1AIW/j
TyZD8hICp8OLzWGTG9b3GZJK9FXbDHSKXemJr0hyjoxsW27nHsXcmV5Oe2OkTKw8
fdA17/ibw6gFrH2b3vZKcx8D455V
-----END CERTIFICATE-----

View File

@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../base
- kafka-ca-configmap.yaml
patches:
- path: namespace.yaml
target:
kind: Namespace
name: premises
- path: backend.yaml
target:
kind: HelmRelease
name: backend

View File

@ -0,0 +1,8 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: premises
labels:
istio-injection: enabled
security.deckhouse.io/pod-policy: privileged

View File

@ -0,0 +1,31 @@
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: backend
namespace: premises
spec:
values:
services:
backend:
deployment:
resources:
requests:
cpu: null
memory: null
volumes:
_default:
- name: kafka-ca-cert
mountPath:
_default: /usr/local/share/ca-certificates/kafka.crt
subPath:
_default: kafka.crt
readOnly:
_default: true
configMap:
name:
_default: kafka-ca-cert
items:
- key: kafka.crt
path:
_default: kafka.crt

View File

@ -0,0 +1,27 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: kafka-ca-cert
namespace: premises
data:
kafka.crt: |
-----BEGIN CERTIFICATE-----
MIIDETCCAfmgAwIBAgIQNhHkZWgkcMSiuRD9FD3SKjANBgkqhkiG9w0BAQsFADAT
MREwDwYDVQQDEwhrYWZrYS1jYTAeFw0yNjA4MjYwOTM4MzFaFw0yNzA4MjYwOTM4
MzFaMBMxETAPBgNVBAMTCGthZmthLWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEA7Vvs1386xYZrKJ4qr/LwiibuhyoIHZm6AnjubChLKUSulP0+TIYC
tDgfSiEQsmASCkJKrvrpg2o0TGxj+LUTVnBCDWwBL3wXWSrbHTmpo9y2n0MH/SiN
h0n43/ReuXXGzuP+s4WF4Z6EkQyCqqGXZkqYx3PsiqQv2DYmnU/s6jdEqXBhDyU9
k6KGjMGxCmDN07E8iElfZp58KvZSISFNi2X5QWa3CIiPo7EKOyW20Hw8xVyQ8/SX
GE/Rt2I4G/LC+EhUBKrRB4UgHY1UcifO0EMvKeh8lLRBT5+yqQvkA2/cXYKmeEKc
zICZw5ve1DiImjQKvHoM257t6lf5yj9h+wIDAQABo2EwXzAOBgNVHQ8BAf8EBAMC
AqQwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA8GA1UdEwEB/wQFMAMB
Af8wHQYDVR0OBBYEFAANdtqbrWPSSQqiCh1Wii2jxHO5MA0GCSqGSIb3DQEBCwUA
A4IBAQBJOea+5wxUNQuWX+E1m3GA5WJz+mAyt8J37w1ZpFVSpOX9r/ptSjyGoNY2
vgP0G8bJH30s25D4kRHuvvPeeCGnOR3PKPceeNIa4CQYvHnYT2bf7WBP8rLd0TyS
OV/ApxvxipKjl0OQc+95xAxm2z0qWIeOh1dkurvyhdLasIhqyhuUguW8APB2U3dU
fIvJ/R992Hy/MYvW7cw1CMWoaoBX90TEl6JNCHQvfBxaQzvPRvSEWwnRgbGwSZwz
ZS6GaNGN7C70WCxP4gmmkWfUC9lphnFb0IMGxXr/nTu5Ez5PKqRG56THkW5vd45i
0FC16VuidLG0HUCCawFjRiAg9rIA
-----END CERTIFICATE-----

Some files were not shown because too many files have changed in this diff Show More