From 3640bc8229dd4a533ade8f2d1110649f4b6ebc3b Mon Sep 17 00:00:00 2001 From: emelinda Date: Mon, 10 Aug 2026 01:05:37 +0300 Subject: [PATCH] =?UTF-8?q?Istio:=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=80=D1=88=D1=80=D1=83=D1=82=20/workflows/,=20?= =?UTF-8?q?=D0=BE=D0=BD=20=D0=BF=D0=B5=D1=80=D0=B5=D1=85=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D1=8B=D0=B2=D0=B0=D0=BB=20=D0=BD=D0=B0=D0=B2=D0=B8=D0=B3=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8E=20SPA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Адрес вида /workflows/ — это путь ВНУТРИ SPA платформы, который должна обработать она сама, отдав index.html. Маршрут /workflows/ на frontend-svc.processing уводил его в nginx микрофронтенда, где такого файла нет, и браузер получал 404 Not Found — nginx/1.19.6 Статика микрофронтенда доезжает и без этого маршрута: nginx платформы сам проксирует /workflows/*.js в processing (apps/django/aero/nginx-configmap). Это уже проверялось — 200, 282339 байт. Маршрут /workflows/api/ оставлен: его nginx платформы не обслуживает, а бандл ходит по нему относительным путём. --- .../istio-config/aero/istio-config.yaml | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/infrastructure/istio-config/aero/istio-config.yaml b/infrastructure/istio-config/aero/istio-config.yaml index fce92a4..a507ea5 100644 --- a/infrastructure/istio-config/aero/istio-config.yaml +++ b/infrastructure/istio-config/aero/istio-config.yaml @@ -111,29 +111,28 @@ spec: prefix: /media/ service: s3-proxy-svc.django.svc.cluster.local port: 80 - # Микрофронтенд workflows и его API. Порядок внутри пары - # значим: /workflows/api/ обязан идти перед /workflows/, иначе - # запросы к API уйдут в раздачу статики. + # API микрофронтенда workflows. Висит на домене платформы, а + # не на отдельном поддомене: адреса вшиты в JS-бандл на этапе + # сборки и указывают на тот же origin относительными путями. # - # Оба маршрута висят на домене платформы, а не на отдельном - # поддомене, потому что адреса бэкендов вшиты в JS-бандл на - # этапе сборки (константа __BUILD_ENV__) и указывают на тот же - # origin относительными путями. Отдельный поддомен означал бы - # пересборку образа. - # - # Маршруты живут в ЭТОМ VirtualService, а не в своём: Istio не + # Маршрут живёт в ЭТОМ VirtualService, а не в своём: Istio не # сливает несколько VirtualService, привязанных к одной паре # хост+gateway, — часть правил молча потерялась бы. + # + # ЗДЕСЬ НЕТ МАРШРУТА /workflows/ НА frontend-svc.processing, и + # это осознанно. Такой маршрут был и ломал навигацию: адрес + # вида /workflows/ — это путь ВНУТРИ SPA платформы, + # который должен отдать её index.html, а istio уводил его в + # nginx микрофронтенда, где такого файла нет: + # 404 Not Found — nginx/1.19.6 + # Статика микрофронтенда при этом доезжает и без него: nginx + # платформы сам проксирует /workflows/*.js в processing + # (apps/django/aero/nginx-configmap.yaml). Проверено — 200. - path: prefix: /workflows/api/ rewrite: /api/ service: backend-svc.processing.svc.cluster.local port: 80 - - path: - prefix: /workflows/ - rewrite: / - service: frontend-svc.processing.svc.cluster.local - port: 80 - path: prefix: /api/ service: backend-svc.django.svc.cluster.local