You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a service accepts both REST and gRPC requests on different port, and I am using host level canary rollout, so my virtual service looks like the below,
the REST is on 8000, and the gRPC is on 9000
when there is no canary, the weight for the stable destination is 100%
Now I plan to mirror 50% traffic to the canary replica set, so here is my rollout canary steps,
canary:
canaryService: my-service-canarystableService: my-servicestableMetadata:
labels:
role: stablecanaryMetadata:
labels:
role: canarytrafficRouting:
managedRoutes:
- name: mirror-routeistio:
virtualService:
name: the-virtual-service-nameroutes:
- rest-api-routes # <- this one will be pick to make the mirror-route
- grpc-api-routessteps:
- setCanaryScale:
weight: 100
- setMirrorRoute:
name: mirror-routepercentage: 50match: # based on the document, I cannot match by port??
- path:
prefix: /
- pause: { 20m } # warm up time
- setMirrorRoute:
name: mirror-route # removes mirror based traffic route
- setWeight: 100
It seem the Argo Rollout picks the rest-api-routes and adding the mirror and mirrorPercentage sections, then prepend it to my virtual service during the rollout, so there is a new http route looks like
1 - I lost all my gRPC requests, the newly added route just forward everything to my stable service regardless the port match, including the gRPC requests, and they won't be processed, because the port 8000 is for the REST
2 - use grpc-api-routes or rest-api-routes depends on the order I set in the Canary section, that is very undertimstic
I am thinking to add mirror-route-1 and mirror-route-2, but I don't think that would work, because I cannot specify the Port matching for the setMirrorRoute step.
Appreciate for any information, thoughts or suggestion.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Here is the background,
I have a service accepts both REST and gRPC requests on different port, and I am using host level canary rollout, so my virtual service looks like the below,
Now I plan to mirror 50% traffic to the canary replica set, so here is my rollout canary steps,
It seem the Argo Rollout picks the
rest-api-routes
and adding themirror
andmirrorPercentage
sections, then prepend it to my virtual service during the rollout, so there is a new http route looks likeThis cause some critical problems,
1 - I lost all my gRPC requests, the newly added route just forward everything to my stable service regardless the port match, including the gRPC requests, and they won't be processed, because the port 8000 is for the REST
2 - use
grpc-api-routes
orrest-api-routes
depends on the order I set in the Canary section, that is very undertimsticI am thinking to add
mirror-route-1
andmirror-route-2
, but I don't think that would work, because I cannot specify the Port matching for thesetMirrorRoute
step.Appreciate for any information, thoughts or suggestion.
Beta Was this translation helpful? Give feedback.
All reactions