megaease / easemesh

A service mesh implementation for connecting, control, and observe services in spring-cloud.
https://megaease.com/easemesh
Apache License 2.0
507 stars 61 forks source link

Support EaseMesh for Canary deployment #10

Closed benja-wu closed 3 years ago

benja-wu commented 3 years ago

Background

  1. According to EaseMesh product requirement[1], one of EaseMesh's main traffic scheduling abilities is canary deployment.

Proposal

Canary Labels

Traffic

Data plane

EG-sidecar

  1. Support registering service instances with provided service instances labels by the Operator.
  2. Support creating a pipeline with a canary pool inside backend filter for handling colored traffic.
  3. Store global service's traffic HTTP header keys, and push it to the EaseAgent (with JMX over HTTP) every minutes with the version.

    EaseAgent

  4. Accept global service's traffic HTTP header keys, and inject them into RPC headers if exists.

References

  1. mesh requirements https://docs.google.com/document/d/19EiR-tyNJS75aotvLqYWjsYK7VqyjO7DCKrYjktfg-A/edit#
benja-wu commented 3 years ago

Already merged into branch with 89a35a6113fa8b9eda0c22f32b076ba7fee0c183