argo-rollouts icon indicating copy to clipboard operation
argo-rollouts copied to clipboard

[argoproj / rollouts-demo] Internal host request route not base on weight but pod count

Open StyleTang opened this issue 1 year ago • 2 comments

Checklist:

  • [x] I've included steps to reproduce the bug.
  • [x] I've included the version of argo rollouts.

Describe the bug Canary strategy (subset) has traffic route issue.

  • For internal host it route base on pod count (has issue)
  • For external host it route base on weight (as expect)

To Reproduce

I tested argoproj/rollouts-demo:examples/istio-subset, it is a canary(subset) rollout.

Just follow the read me

make release IMAGE_NAMESPACE=argoproj DOCKER_PUSH=false
kustomize build examples/istio-subset | kubectl apply -f -

Assume I only have 1 replica.

if I go to step 1:

      steps:
      - setWeight: 10
      - pause: {}         # pause indefinitely

Then env is: canary pod count : 1 canary weight: 10 % stable pod count : 1 stable weight: 90 %

If I use internal host, like http://istio-rollout.rollouts-demo-istio.svc.cluster.local/color, then the issue happens, the real traffic is 50% vs 50%, not base on weight but pod count.

apiVersion: v1
kind: Service
metadata:
  name: istio-rollout
spec:
  ports:
  - port: 80
    targetPort: http
    protocol: TCP
    name: http
  selector:
    app: istio-rollout

======================================================================

But if I use external host, it has no issue, like http://istio-rollout.apps.argoproj.io/color, the traffic dispatch works well. canary 10% vs stable 90%

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: istio-rollout-vsvc
spec:
  gateways:
  - istio-rollout-gateway
  hosts:
  - istio-rollout.apps.argoproj.io
  - istio-rollout.local

Expected behavior

Even use internal host like http://istio-rollout.rollouts-demo-istio.svc.cluster.local/color, the weight based traffic routing should still work.

Screenshots

image image

Version

quay.io/argoproj/argo-rollouts:v1.6.4

Logs

rollout controller works, but traffic route has issue.

Message from the maintainers:

Impacted by this bug? Give it a 👍. We prioritize the issues with the most 👍.

StyleTang avatar Feb 20 '24 02:02 StyleTang

Could you have a look at this https://github.com/argoproj/rollouts-demo/pull/44 It fix the issue I mentioned before.

StyleTang avatar Feb 20 '24 02:02 StyleTang

Any one can help? Thanks!

StyleTang avatar Feb 28 '24 03:02 StyleTang