Cell: Routing PoC: Istio
Overview
The routing layer is meant to offer a consistent user experience where all Cells are presented under a single domain (for example, gitlab.com), instead of navigating to separate domains.
We need to decide what technology the routing service is written in. The choice depends on the best-performing language and the routing layer's expected way and place of deployment. If it is required to make the service multi-cloud, it might be necessary to deploy it to the CDN provider. Then, the service needs to be written using a technology compatible with the CDN provider.
We also have a PoC from @andrewn https://gitlab.com/andrewn/stateless-router, see #408507 (comment 1379811355) from more context.
As an outcome of this issue, we expect:
- Evaluate Istio as the technology to implement the routing layer
- Document decisions in the Cells blueprint
- Create a plan with concrete issues to continue the development of the routing layer: discovery, single domain interaction, endpoints classification, GraphQL, etc.
Related to #408507.
Reference:
- Cells blueprint Routing layer
- Proposal: Stateless Router with buffering requests
- Proposal: Stateless Router with learning routes
Requirements:
See https://docs.gitlab.com/ee/architecture/blueprints/cells/routing-service.html#requirements
Resources
Results
We did not implement the PoC like we did for cloudflare workers, since we favored the Cloudflare workers implementation for the following reasons:
- Wasm Plugins are for filters: https://istio.io/latest/docs/reference/config/proxy_extensions/wasm-plugin/ so it's
- Cluster local service: The filters will in the cluster, so when we we want to redirect to another cell, we'll hit the penalty of reaching 2 k8s clusters instead of having this logic outside of the cluster
- Not running in Production: Istio is not running in production, which add one more dependency, a big one since deploying Istio is not easy.
- No easy caching: There is no easy way to have a distributed key/value store for caching.
- Not global: The Isito deployment will not be multi-regional out of the best and we'll have to handle that ourselves.
- No easy local development: You run local development you have a local k8s running with Istio.
Citations
- [CNCF [Cloud Native Computing Foundation]]. (2023, October 17). Extending and Customising Istio with Wasm - Shivanshu Raj Shrivastava [Video]. YouTube. https://www.youtube.com/watch?v=oAbyJILbRtI
- (n.d.). Wasm Plugin. Istio. Retrieved January 22, 2024, from https://istio.io/latest/docs/reference/config/proxy_extensions/wasm-plugin/