argoproj / argo-rollouts

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

`get` command is slow with a large number of resources #1711

Open WillSewell opened 2 years ago

WillSewell commented 2 years ago

Summary

The running time of the kubectl argo rollouts get command is proportional to the number of Rollouts, ReplicaSets, Pods, Experiments, Analyses in the cluster. With a large number of these resources it can make the command inconvenient to run. For example with roughly 10,000 of these resources, the command takes 40 seconds to run in our cluster.

The get command calls controller.GetRolloutInfo. This method will fetch all resources mentioned above.

Diagnostics

What version of Argo Rollouts are you running?

kubectl-argo-rollouts: v1.1.0+ff3471a
  BuildDate: 2021-10-11T20:20:08Z
  GitCommit: ff3471a2fc3ccb90dbb1f370d7e399ff3064043a
  GitTreeState: clean
  GoVersion: go1.16.3
  Compiler: gc
  Platform: darwin/amd64

Message from the maintainers:

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

huikang commented 2 years ago

@jessesuen is there any reason to search by all the labels like in c.replicaSetLister.List(labels.Everything())? If we filter the pods/analysisrun/... only for that rollout, it can be faster to return the results.

jessesuen commented 2 years ago

I agree. This would be more performant

huikang commented 2 years ago

I agree. This would be more performant

I can take a stab on this one.

github-actions[bot] commented 1 year ago

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