argoproj / argo-rollouts

Progressive Delivery for Kubernetes
https://argo-rollouts.readthedocs.io/
Apache License 2.0
2.79k stars 876 forks source link

Traffic Management. Use equal Istio configuration for Experiment replicasets #2272

Open dmitrytretyakov opened 2 years ago

dmitrytretyakov commented 2 years ago

Summary

I'm trying to cover all of our pipeline requirements with ArgoCD Rollout and stuck on the next one: we want Experiment service canary and baseline configurations to be identical to canary and stable service configurations as much as possible. To be sure in releasing process a bit more.

We use Istio as a traffic management system and Istio is a big part of every service. For now, ArgoCD Rollout only controls labels and subsets in VS and DR. It's ok because you can manually provide required settings to stable/canary in VS or DR and Argo doesn't modify them.

But it's ok until you wanna have experiments: In that case, Argo just adds labels, subsets and nothing more for experiment replica sets:

apiVersion: v1
items:
- apiVersion: networking.istio.io/v1beta1
  kind: DestinationRule
  metadata:
    annotations:
      argo-rollouts.argoproj.io/managed-by-rollouts: istio-rollout
    name: rollout-destrule
  spec:
    host: istio-rollout
    subsets:
    - labels:
        app: istio-rollout
        rollouts-pod-template-hash: 654984c989
      name: canary
      trafficPolicy:
        connectionPool:
          tcp:
            maxConnections: 100
    - labels:
        app: istio-rollout
        rollouts-pod-template-hash: b8d7cfb8d
      name: stable
      trafficPolicy:
        connectionPool:
          tcp:
            maxConnections: 50
    - labels:
        rollouts-pod-template-hash: 54776dff4d
      name: istio-rollout-7ccf7b595c-8-2-experiment-baseline
    - labels:
        rollouts-pod-template-hash: 577c6bbcff
      name: istio-rollout-7ccf7b595c-8-2-experiment-canary

So, when you run Kayenta analysis - you don't cover network configuration at all and you can get unexpected results from the deployment process. It would be really great to cover network configuration as well (actually, we can't proceed without it)

As a total newbie with Argo Rollouts, I see only two options:

  1. Add switcher to copy or not VS and DR settings (except controlled by Argo) for baseline (from stable) and canary (from canary) experiment replica sets
  2. Add a switcher to preserve or not (current behavior is creating new hashes) rollouts-pod-hash-template for baseline and canary
  3. TBD

Use Cases

Relevant canary analysis results during rollout to the new version with Experiment step and Istio as a Traffic management Probably, it could be reasonable for other Traffic systems as well

Thanks in advance for any ideas/feedback!


Message from the maintainers:

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

github-actions[bot] commented 2 years ago

This issue is stale because it has been open 60 days with no activity.

github-actions[bot] commented 1 year ago

This issue is stale because it has been open 60 days with no activity.