Развёрнут частично, и это осознанно:
* engine удалён — в base у него replicaCount 0, то есть он выключен и там,
а образ прибит к тегу с опечаткой в имени (workflows-endigne_prod);
* frontend удалён — адреса бэкендов зашиты в образ на этапе сборки через
__BUILD_ENV__, и ни один готовый профиль не смотрит на домен контура.
Подключать его имеет смысл только вместе с пересборкой образа.
Отключены смежные сервисы, которых в контуре нет: documentations (PDM,
filestream), resources, bim-api, workspace, issues, comparisons, mailgun,
SMTP. Оставлен только S3. Вместе с флагом ENABLE_SMTP убрана аннотация
инжекции secrets/vault/common/smtp_auth — секрета нет, и vault-agent-init
оставил бы под в Init:Error, не дойдя до флага.
S3 приезжает из Vault отдельным файлом: приложение читает по пути из
S3_SERVICE_ACCOUNT целый JSON, а не пару переменных. Набор ключей повторяет
engine/yc-s3-service-account.json из compose-стека, который так же смотрел
в MinIO.
Планирование подов задач: engine работает kubernetes-исполнителем и сам
создаёт Job'ы, подставляя им nodeSelector dedicated=processing. Выделенных
нод в контуре нет, поды висли бы в Pending — как это уже было у postgresql.
ENABLE_TOLERATION и DEFAULT_NODE_SELECTOR_* сняты.
Заодно у celery поправлены четыре адреса на wb.sarex.io — чужой контур,
недостижимый из aero. У backend те же переменные уже вели внутрь кластера;
при WORKFLOWS_USE=1 расхождение давало бы зависания вместо явной ошибки.
Патчи адресуются по индексу env, поэтому перед каждым replace стоит op: test
на имя переменной: смена порядка в base уронит сборку явно, а не перезапишет
соседнее значение.
206 lines
9.6 KiB
YAML
206 lines
9.6 KiB
YAML
---
|
||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||
kind: Kustomization
|
||
namespace: processing
|
||
resources:
|
||
- ../base
|
||
|
||
patches:
|
||
# --- Состав: только api и engine-low ---------------------------------------
|
||
# engine удалён: в base у него replicaCount 0, то есть он и там выключен, а
|
||
# образ прибит к тегу с опечаткой в имени (workflows-endigne_prod). Рабочий
|
||
# обработчик — engine-low, он же на более свежем образе contour_*.
|
||
- target: {kind: HelmRelease, name: engine}
|
||
patch: |
|
||
$patch: delete
|
||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||
kind: HelmRelease
|
||
metadata:
|
||
name: engine
|
||
namespace: processing
|
||
|
||
# frontend удалён: адреса бэкендов зашиты в образ на этапе сборки через
|
||
# __BUILD_ENV__, и ни один из готовых профилей не смотрит на домен контура.
|
||
# Подключать его имеет смысл только вместе с пересборкой образа под aero.
|
||
- target: {kind: HelmRelease, name: frontend}
|
||
patch: |
|
||
$patch: delete
|
||
apiVersion: helm.toolkit.fluxcd.io/v2
|
||
kind: HelmRelease
|
||
metadata:
|
||
name: frontend
|
||
namespace: processing
|
||
|
||
# --- workflows-api ----------------------------------------------------------
|
||
- target: {kind: HelmRelease, name: workflows-api}
|
||
patch: |
|
||
# S3 приезжает из Vault отдельным ФАЙЛОМ, а не парой переменных:
|
||
# приложение читает по этому пути целый JSON. В base путь ведёт в
|
||
# /etc/sarex/yc-s3/, куда в контуре ничего не смонтировано.
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/3/name
|
||
value: S3_SERVICE_ACCOUNT
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/3/value/_default
|
||
value: /vault/secrets/processing-s3
|
||
- op: add
|
||
path: /spec/values/services/backend/podAnnotations/_default/vault.hashicorp.com~1agent-inject-secret-processing-s3
|
||
value: secrets/data/minio/apps/processing
|
||
- op: add
|
||
path: /spec/values/services/backend/podAnnotations/_default/vault.hashicorp.com~1agent-inject-template-processing-s3
|
||
value: |-
|
||
{{- with secret "secrets/data/minio/apps/processing" -}}
|
||
{
|
||
"host": "{{ index .Data.data "host" }}",
|
||
"bucket": "{{ index .Data.data "bucket" }}",
|
||
"access_key_id": "{{ index .Data.data "access_key_id" }}",
|
||
"secret_access_key": "{{ index .Data.data "secret_access_key" }}",
|
||
"region": "{{ index .Data.data "region" }}",
|
||
"verify": false
|
||
}
|
||
{{- end -}}
|
||
|
||
# --- engine-low -------------------------------------------------------------
|
||
# Патчи адресуются по индексу, поэтому перед каждым replace идёт op: test на
|
||
# имя переменной. Если в base порядок envs изменится, сборка упадёт явно,
|
||
# вместо того чтобы молча перезаписать соседнее значение.
|
||
- target: {kind: HelmRelease, name: engine-low}
|
||
patch: |
|
||
# Sentry — внешний домен, из контура недостижим. Значение прокидывается
|
||
# ещё и в каждый под задачи, поэтому зануляем в одном месте.
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/2/name
|
||
value: WORKFLOWS_SENTRY_DSN
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/2/value/_default
|
||
value: ""
|
||
|
||
# В base адрес django неверный даже для кластеров, где он есть: сервис
|
||
# называется backend-svc и слушает 80, а не backend:8000. У api то же
|
||
# значение уже правильное.
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/5/name
|
||
value: DJANGO_HOST
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/5/value/_default
|
||
value: http://backend-svc.django.svc.cluster.local:80
|
||
|
||
# S3 — как у api выше.
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/6/name
|
||
value: S3_SERVICE_ACCOUNT
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/6/value/_default
|
||
value: /vault/secrets/processing-s3
|
||
|
||
# SMTP выключаем целиком: почтового релея в контуре нет. Вместе с флагом
|
||
# убираем аннотацию инжекции secrets/vault/common/smtp_auth — секрета в
|
||
# Vault нет, а vault-agent-init на несуществующем секрете не отрендерит
|
||
# шаблон и оставит под в Init:Error, до флага дело не дойдёт.
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/22/name
|
||
value: ENABLE_SMTP
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/22/value/_default
|
||
value: "0"
|
||
- op: remove
|
||
path: /spec/values/services/backend/podAnnotations/_default/vault.hashicorp.com~1agent-inject-secret-processing-smtp
|
||
- op: remove
|
||
path: /spec/values/services/backend/podAnnotations/_default/vault.hashicorp.com~1agent-inject-template-processing-smtp
|
||
|
||
# Смежные сервисы, которых в контуре нет: documentations (PDM,
|
||
# filestream), resources, bim-api, workspace, issues, comparisons,
|
||
# mailgun. Оставляем только S3 — единственное внешнее хранилище, которое
|
||
# в aero действительно есть.
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/21/name
|
||
value: ENABLE_PDM_STORAGE
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/21/value/_default
|
||
value: "0"
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/25/name
|
||
value: ENABLE_BIM_API_V2_DB
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/25/value/_default
|
||
value: "0"
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/26/name
|
||
value: ENABLE_WORKSPACE_API_DB
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/26/value/_default
|
||
value: "0"
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/27/name
|
||
value: ENABLE_ISSUE_API_DB
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/27/value/_default
|
||
value: "0"
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/28/name
|
||
value: ENABLE_RESOURCES_API
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/28/value/_default
|
||
value: "0"
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/30/name
|
||
value: ENABLE_PDM_API_DB
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/30/value/_default
|
||
value: "0"
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/31/name
|
||
value: ENABLE_COMPARISONS_API_DB
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/31/value/_default
|
||
value: "0"
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/32/name
|
||
value: ENABLE_MAIL_GUN
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/32/value/_default
|
||
value: "0"
|
||
|
||
# Планирование подов задач. engine работает kubernetes-исполнителем и сам
|
||
# создаёт Job'ы, подставляя им nodeSelector dedicated=processing и
|
||
# соответствующий toleration. Выделенных нод в контуре нет — все три
|
||
# равнозначны, — поэтому поды задач висли бы в Pending с
|
||
# didn't match Pod's node affinity/selector
|
||
# ровно как это было у postgresql (см. postRenderers в его релизе).
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/66/name
|
||
value: ENABLE_TOLERATION
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/66/value/_default
|
||
value: "0"
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/69/name
|
||
value: DEFAULT_NODE_SELECTOR_KEY
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/69/value/_default
|
||
value: ""
|
||
- op: test
|
||
path: /spec/values/services/backend/envs/70/name
|
||
value: DEFAULT_NODE_SELECTOR_VALUE
|
||
- op: replace
|
||
path: /spec/values/services/backend/envs/70/value/_default
|
||
value: ""
|
||
|
||
# S3 из Vault, как у api.
|
||
- op: add
|
||
path: /spec/values/services/backend/podAnnotations/_default/vault.hashicorp.com~1agent-inject-secret-processing-s3
|
||
value: secrets/data/minio/apps/processing
|
||
- op: add
|
||
path: /spec/values/services/backend/podAnnotations/_default/vault.hashicorp.com~1agent-inject-template-processing-s3
|
||
value: |-
|
||
{{- with secret "secrets/data/minio/apps/processing" -}}
|
||
{
|
||
"host": "{{ index .Data.data "host" }}",
|
||
"bucket": "{{ index .Data.data "bucket" }}",
|
||
"access_key_id": "{{ index .Data.data "access_key_id" }}",
|
||
"secret_access_key": "{{ index .Data.data "secret_access_key" }}",
|
||
"region": "{{ index .Data.data "region" }}",
|
||
"verify": false
|
||
}
|
||
{{- end -}}
|