I am considering integrating Istio in order to replace our custom edge implementation. Our edge has a lot of custom pre/post processing request filters that append headers to requests and do some fallback logic for some endpoints.
How should I do this with Istio?
For example I would like to implement JWT token blacklisting. Some external service would populate redis with blacklisted tokens and filter needs to check that our current token is not present
If my understanding is correct there are a few ways that it could be done:
Using EnvoyFilter with custom lua code.
I suppose it would be tricky to access redis from lua code. Also there seems to be a problem with ordering multiple filters and at least from what I understood it is not recommended to use custom envoy filters because “there will not be any backward compatibility across different Istio releases”
Using mixer adapter
This seems possible for the JWT case, but I am struggling to understand if it is the right way to go. It seems like I would need to add some custom templates for other more complicated cases (for example if I need to return multiple values from adapter and append them to request headers). And there seems to be no way to implement custom logic for response handling.
Is there any other way to do this? Should I even bother implementing it using Istio? Am I missing something?