From 4e133285972a923d0dc4b47eed5e749194382dc0 Mon Sep 17 00:00:00 2001 From: Gianluca Mardente Date: Wed, 4 Feb 2026 16:23:49 +0100 Subject: [PATCH] Advance sveltos-agent sveltos-agent memory usage has been optmized by re-using dynamic informer cache instead of direct API calls. Previously, sveltos-agent made direct API calls using a new discovery client and dynamic client for each fetch. This approach: - Fetched all resources with full managedFields and bypassed the informer cache entirely - Created new discovery clients repeatedly (expensive operation) - Resulted in high memory usage when fetching large numbers of resources Sveltos-agent code has been refactored to use the existing dynamic informer factory with transform functions: - Use informer cache when available - zero API calls, transforms already applied - Strip managedFields - in both code paths for consistency - Reuse cached REST mapper - avoid repeated discovery client creation --- Makefile | 4 ++-- pkg/agent/sveltos-agent-in-mgmt-cluster.go | 3 ++- pkg/agent/sveltos-agent-in-mgmt-cluster.yaml | 3 ++- pkg/agent/sveltos-agent.go | 3 ++- pkg/agent/sveltos-agent.yaml | 3 ++- pkg/agent/sveltos-applier.go | 2 +- pkg/agent/sveltos-applier.yaml | 2 +- test/pullmode-sveltosapplier.yaml | 2 +- 8 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 21bf7b7..573e989 100644 --- a/Makefile +++ b/Makefile @@ -58,8 +58,8 @@ KIND := $(TOOLS_BIN_DIR)/kind KUBECTL := $(TOOLS_BIN_DIR)/kubectl CLUSTERCTL := $(TOOLS_BIN_DIR)/clusterctl -GOLANGCI_LINT_VERSION := "v2.7.2" -CLUSTERCTL_VERSION := v1.12.1 +GOLANGCI_LINT_VERSION := "v2.8.0" +CLUSTERCTL_VERSION := v1.12.2 KUSTOMIZE_VER := v5.8.0 KUSTOMIZE_BIN := kustomize diff --git a/pkg/agent/sveltos-agent-in-mgmt-cluster.go b/pkg/agent/sveltos-agent-in-mgmt-cluster.go index 6e78809..4209740 100644 --- a/pkg/agent/sveltos-agent-in-mgmt-cluster.go +++ b/pkg/agent/sveltos-agent-in-mgmt-cluster.go @@ -45,6 +45,7 @@ spec: - --version=main - --current-cluster=management-cluster - --run-mode=do-not-send-reports + - --discard-managed-fields=true command: - /manager env: @@ -56,7 +57,7 @@ spec: valueFrom: resourceFieldRef: resource: limits.cpu - image: docker.io/projectsveltos/sveltos-agent@sha256:223cbaddaf09396e8f0330060be805ca9639c75418ea798519717c76f8789731 + image: docker.io/projectsveltos/sveltos-agent@sha256:b8ab44ce9ba1f2839282e7c59f07bee3076b4c4c643e3067212bd52cd4b78121 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/agent/sveltos-agent-in-mgmt-cluster.yaml b/pkg/agent/sveltos-agent-in-mgmt-cluster.yaml index a118f7f..ae445d8 100644 --- a/pkg/agent/sveltos-agent-in-mgmt-cluster.yaml +++ b/pkg/agent/sveltos-agent-in-mgmt-cluster.yaml @@ -27,6 +27,7 @@ spec: - --version=main - --current-cluster=management-cluster - --run-mode=do-not-send-reports + - --discard-managed-fields=true command: - /manager env: @@ -38,7 +39,7 @@ spec: valueFrom: resourceFieldRef: resource: limits.cpu - image: docker.io/projectsveltos/sveltos-agent@sha256:223cbaddaf09396e8f0330060be805ca9639c75418ea798519717c76f8789731 + image: docker.io/projectsveltos/sveltos-agent@sha256:b8ab44ce9ba1f2839282e7c59f07bee3076b4c4c643e3067212bd52cd4b78121 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/agent/sveltos-agent.go b/pkg/agent/sveltos-agent.go index c44de19..86ab966 100644 --- a/pkg/agent/sveltos-agent.go +++ b/pkg/agent/sveltos-agent.go @@ -204,6 +204,7 @@ spec: - --version=main - --current-cluster=managed-cluster - --run-mode=do-not-send-reports + - --discard-managed-fields=true command: - /manager env: @@ -215,7 +216,7 @@ spec: valueFrom: resourceFieldRef: resource: limits.cpu - image: docker.io/projectsveltos/sveltos-agent@sha256:223cbaddaf09396e8f0330060be805ca9639c75418ea798519717c76f8789731 + image: docker.io/projectsveltos/sveltos-agent@sha256:b8ab44ce9ba1f2839282e7c59f07bee3076b4c4c643e3067212bd52cd4b78121 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/agent/sveltos-agent.yaml b/pkg/agent/sveltos-agent.yaml index 34a7805..1886fe4 100644 --- a/pkg/agent/sveltos-agent.yaml +++ b/pkg/agent/sveltos-agent.yaml @@ -186,6 +186,7 @@ spec: - --version=main - --current-cluster=managed-cluster - --run-mode=do-not-send-reports + - --discard-managed-fields=true command: - /manager env: @@ -197,7 +198,7 @@ spec: valueFrom: resourceFieldRef: resource: limits.cpu - image: docker.io/projectsveltos/sveltos-agent@sha256:223cbaddaf09396e8f0330060be805ca9639c75418ea798519717c76f8789731 + image: docker.io/projectsveltos/sveltos-agent@sha256:b8ab44ce9ba1f2839282e7c59f07bee3076b4c4c643e3067212bd52cd4b78121 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/agent/sveltos-applier.go b/pkg/agent/sveltos-applier.go index cfb4fd4..e637103 100644 --- a/pkg/agent/sveltos-applier.go +++ b/pkg/agent/sveltos-applier.go @@ -117,7 +117,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/sveltos-applier@sha256:398c67e7ab2cb35950cb30c8ada29778e820c164379fab8130054c4cb2d7d8b0 + image: docker.io/projectsveltos/sveltos-applier@sha256:fa36d5147ad20e5e8e4661caae981c4e96935691aa4767cefe882efc55486f56 livenessProbe: failureThreshold: 3 httpGet: diff --git a/pkg/agent/sveltos-applier.yaml b/pkg/agent/sveltos-applier.yaml index 7c286f0..2d31c37 100644 --- a/pkg/agent/sveltos-applier.yaml +++ b/pkg/agent/sveltos-applier.yaml @@ -99,7 +99,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/sveltos-applier@sha256:398c67e7ab2cb35950cb30c8ada29778e820c164379fab8130054c4cb2d7d8b0 + image: docker.io/projectsveltos/sveltos-applier@sha256:fa36d5147ad20e5e8e4661caae981c4e96935691aa4767cefe882efc55486f56 livenessProbe: failureThreshold: 3 httpGet: diff --git a/test/pullmode-sveltosapplier.yaml b/test/pullmode-sveltosapplier.yaml index 7f9df3c..0764e4c 100644 --- a/test/pullmode-sveltosapplier.yaml +++ b/test/pullmode-sveltosapplier.yaml @@ -99,7 +99,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.namespace - image: docker.io/projectsveltos/sveltos-applier@sha256:398c67e7ab2cb35950cb30c8ada29778e820c164379fab8130054c4cb2d7d8b0 + image: docker.io/projectsveltos/sveltos-applier@sha256:fa36d5147ad20e5e8e4661caae981c4e96935691aa4767cefe882efc55486f56 livenessProbe: failureThreshold: 3 httpGet: