Support EaseMesh for Canary deployment
benja-wu opened this issue · 1 comments
benja-wu commented
Background
- According to EaseMesh product requirement[1], one of EaseMesh's main traffic scheduling abilities is canary deployment.
Proposal
Canary Labels
Traffic
- Traffic in mesh is split into two kinds, the normal traffic and colored traffic.
- The colored traffic is recognized by carried with Mesh Service's canary rule's specified HTTP headers.
Service instances
- Mesh service instances are also split into two kinds, the normal instances and canary instances.
- The canary instances are recognized by no empty instance register records' Labels fields.
Control plane
- Already support canary rules spec CRUD operations.
Data plane
EG-sidecar
- Support registering service instances with provided service instances labels by the Operator.
- Support creating a pipeline with a canary pool inside backend filter for handling colored traffic.
- Store global service's traffic HTTP header keys, and push it to the EaseAgent (with JMX over HTTP) every minutes with the version.
EaseAgent
- Accept global service's traffic HTTP header keys, and inject them into RPC headers if exists.
References
benja-wu commented
Already merged into branch with 89a35a6113fa8b9eda0c22f32b076ba7fee0c183