Я пытаюсь развернуть службу по определенному URL-адресу в AKS. Следующий yaml позволяет мне получить доступ к службе по желаемому адресу, например xxxx.europe.cloudapp.azure.com/service-a. Это отлично работает, мне удалось скрыть всю службу по желаемому URL-адресу:
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: istio-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: istio
spec:
hosts:
- "*"
gateways:
- istio-gateway
http:
- match:
- uri:
prefix: /service-a
rewrite:
uri: /
route:
- destination:
host: service-a.default.svc.cluster.local
Однако, когда отображается страница приветствия, я вижу только текст. Файлы css / javascript / изображения не загружаются. Все, что эта страница пытается загрузить, по-прежнему имеет исходный URL-адрес без какой-либо перезаписи, сделанной моей конфигурацией шлюза. Итак, домашняя страница запрашивает это:
http://xxxxx.europe.cloudapp.azure.com/icon.jpg
вместо этого:
http://xxxxx.europe.cloudapp.azure.com/service-a/icon.jpg
Как лучше всего справиться с перезаписью URL-адресов для ресурсов и ссылок на странице? Нужно ли вручную изменять URL-адреса на домашней странице?
РЕДАКТИРОВАТЬ:
Чтобы было понятнее.
- Перезапись URL-адреса работает, как ожидалось, адрес именно такой, как я хочу (вся служба скрыта в «xxxx.europe.cloudapp.azure.com/service-a».
- Как только я ввожу "xxxx.europe.cloudapp.azure.com/service-a", я вижу страницу приветствия службы, но без загруженных css / jpegs / js. Также не работают ссылки на странице приветствия.
- например, «icon.jpg» не загружается. Страница хочет загрузить его с http://xxxx.europe.cloudapp.azure.com/icon.jpg, но его больше нет. Из-за переписывания он доступен по адресу http://xxxx.europe.cloudapp.azure.com/service-a/icon.jpg, что соответствует ожиданиям.
Я как бы ожидал, что http://xxxx.europe.cloudapp.azure.com/icon.jpg будет автоматически переписан на http://xxxx.europe.cloudapp.azure.com/service-a/icon.jpg. Но, очевидно, я ошибался. Поэтому мне интересно, как я могу управлять ссылками внутри самой службы управляемым способом - я имею в виду, что могу изменить каждую возможную ссылку в приложении, но что, если мы снова изменим URL-адрес (с / service-a на / service-b) . Служба написана с использованием ASP.NET Core, я буду искать какое-то внутреннее решение для перезаписи, которое можно было бы обслуживать.