From cf691d8152f73fd7727313be121f9885fe37d6db Mon Sep 17 00:00:00 2001 From: Raj Nishtala Date: Mon, 21 Oct 2024 14:47:40 -0400 Subject: [PATCH] feat(k8s_tagger): Added pagination when fetching pods from the k8s API --- .changelog/1687.added.txt | 1 + pkg/processor/k8sprocessor/kube/informer.go | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 .changelog/1687.added.txt diff --git a/.changelog/1687.added.txt b/.changelog/1687.added.txt new file mode 100644 index 0000000000..caacd9544b --- /dev/null +++ b/.changelog/1687.added.txt @@ -0,0 +1 @@ +feat(k8s_tagger): Added pagination when fetching pods from the k8s API \ No newline at end of file diff --git a/pkg/processor/k8sprocessor/kube/informer.go b/pkg/processor/k8sprocessor/kube/informer.go index 1ecfcd6526..5738ddefce 100644 --- a/pkg/processor/k8sprocessor/kube/informer.go +++ b/pkg/processor/k8sprocessor/kube/informer.go @@ -55,9 +55,23 @@ func newSharedInformer( func informerListFuncWithSelectors(client kubernetes.Interface, namespace string, ls labels.Selector, fs fields.Selector) cache.ListFunc { return func(opts metav1.ListOptions) (runtime.Object, error) { - opts.LabelSelector = ls.String() - opts.FieldSelector = fs.String() - return client.CoreV1().Pods(namespace).List(context.Background(), opts) + podList := &api_v1.PodList{} + for { + opts.LabelSelector = ls.String() + opts.FieldSelector = fs.String() + opts.Limit = 200 + opts.ResourceVersion = "" + pods, err := client.CoreV1().Pods(namespace).List(context.Background(), opts) + if err != nil { + return nil, err + } + podList.Items = append(podList.Items, pods.Items...) + if pods.Continue == "" { + break + } + opts.Continue = pods.Continue + } + return podList, nil } }