Мне интересно, является ли Istio хорошим инструментом для поддержки конкретной ситуации маршрутизации, и если нет (или даже если она есть), какие другие подходы доступны.
- У меня есть два микросервиса, X и Y, с некоторым количеством реплик для каждого.
- X отправляет запросы Y.
- X отправляет запросы как определенный пользователь, скажем "bob".
- Некоторое подмножество реплик Y (не все!) Может обрабатывать запросы для пользователя «bob».
- Подмножество Y, которое может обрабатывать запросы к «bob», не является статическим, но изменяется со временем в зависимости отв некотором состоянии, хранящемся в реплике, которая является эфемерной.
Поэтому, когда X отправляет запросы, он должен определить для пользователя, что отправляет запрос ("bob"), какое подмножество Y может это конкретноезапрос будет отправлен на?
В Istio есть примеры правила маршрутизации, связанного с пользователем при просмотре заголовков HTTP.С другой стороны, Y, я хотел бы просто иметь код в Y, который вызывает API k8s для добавления и удаления меток в репликах Pod?
например,
Service-Y.Pod-1.Labels = {
"user-bob": "true",
"user-jane": "true",
...
}
Неясно, насколько хорошо метки справляются с этим или нужно ли поднимать этот тип маршрутизации до уровня приложений, а не пытаться кодировать его в основном прозрачном слое сервисной сетки.