From a1ad19fb35dde9fd73e63d2589399818f8e7e69b Mon Sep 17 00:00:00 2001 From: Raphael Campos Date: Mon, 17 Jun 2024 18:30:40 -0500 Subject: [PATCH] chore: Possible fix for size/RSS issue Using scheme package increases the binary size because it includes additional code and dependencies related to Kubernetes. It also increases the RSS memory. Because we don't need the entire scheme package, only apimachinery/runtime package was used to create a new scheme. --- go.mod | 1 - go.sum | 2 -- pkg/k8s/policy.go | 7 ++++--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index efed16c1ae62..8bb389776c54 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,6 @@ require ( k8s.io/apimachinery v0.30.1 k8s.io/client-go v0.30.1 k8s.io/cri-api v0.30.1 - k8s.io/kubectl v0.30.1 kernel.org/pub/linux/libs/security/libcap/cap v1.2.69 sigs.k8s.io/controller-runtime v0.18.2 ) diff --git a/go.sum b/go.sum index 77d4662d17d7..7ecda3529cf3 100644 --- a/go.sum +++ b/go.sum @@ -1453,8 +1453,6 @@ k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f h1:0LQagt0gDpKqvIkAMPaRGcXawNMouPECM1+F9BVxEaM= k8s.io/kube-openapi v0.0.0-20240430033511-f0e62f92d13f/go.mod h1:S9tOR0FxgyusSNR+MboCuiDpVWkAifZvaYI1Q2ubgro= -k8s.io/kubectl v0.30.1 h1:sHFIRI3oP0FFZmBAVEE8ErjnTyXDPkBcvO88mH9RjuY= -k8s.io/kubectl v0.30.1/go.mod h1:7j+L0Cc38RYEcx+WH3y44jRBe1Q1jxdGPKkX0h4iDq0= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= kernel.org/pub/linux/libs/security/libcap/cap v1.2.69 h1:N0m3tKYbkRMmDobh/47ngz+AWeV7PcfXMDi8xu3Vrag= diff --git a/pkg/k8s/policy.go b/pkg/k8s/policy.go index 4bb9d9811454..3927d85b1695 100644 --- a/pkg/k8s/policy.go +++ b/pkg/k8s/policy.go @@ -3,9 +3,9 @@ package k8s import ( "context" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/client-go/rest" - "k8s.io/kubectl/pkg/scheme" "github.com/aquasecurity/tracee/pkg/k8s/apis/tracee.aquasec.com/v1beta1" ) @@ -20,7 +20,8 @@ func New() (*Client, error) { return nil, err } - err = v1beta1.AddToScheme(scheme.Scheme) + scheme := runtime.NewScheme() + err = v1beta1.AddToScheme(scheme) if err != nil { return nil, err } @@ -28,7 +29,7 @@ func New() (*Client, error) { crdConfig := *config crdConfig.ContentConfig.GroupVersion = &v1beta1.GroupVersion crdConfig.APIPath = "/apis" - crdConfig.NegotiatedSerializer = serializer.NewCodecFactory(scheme.Scheme) + crdConfig.NegotiatedSerializer = serializer.NewCodecFactory(scheme) crdConfig.UserAgent = rest.DefaultKubernetesUserAgent() client, err := rest.UnversionedRESTClientFor(&crdConfig)