Istio: убран маршрут /workflows/, он перехватывал навигацию SPA

Адрес вида /workflows/<uuid> — это путь ВНУТРИ 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 платформы не обслуживает, а
бандл ходит по нему относительным путём.
This commit is contained in:
emelinda 2026-08-10 01:05:37 +03:00
parent f3c2fa194b
commit 3640bc8229

View File

@ -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/<uuid> — это путь ВНУТРИ 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