diff --git a/agent/pkg/controllers/config_controller.go b/agent/pkg/controllers/config_controller.go index 7adc5a761..cecc94e08 100644 --- a/agent/pkg/controllers/config_controller.go +++ b/agent/pkg/controllers/config_controller.go @@ -45,7 +45,7 @@ func PostTapConfig(c *gin.Context) { podRegex, _ := regexp.Compile(".*") - kubernetesProvider, err := kubernetes.NewProviderInCluster() + kubernetesProvider, err := providers.GetKubernetesProvider() if err != nil { c.JSON(http.StatusInternalServerError, err) return @@ -66,7 +66,7 @@ func PostTapConfig(c *gin.Context) { } func GetTapConfig(c *gin.Context) { - kubernetesProvider, err := kubernetes.NewProviderInCluster() + kubernetesProvider, err := providers.GetKubernetesProvider() if err != nil { c.JSON(http.StatusInternalServerError, err) return diff --git a/agent/pkg/providers/kubernetes_provider.go b/agent/pkg/providers/kubernetes_provider.go new file mode 100644 index 000000000..d485279d4 --- /dev/null +++ b/agent/pkg/providers/kubernetes_provider.go @@ -0,0 +1,27 @@ +package providers + +import ( + "github.com/up9inc/mizu/shared/kubernetes" + "sync" +) + +var lock = &sync.Mutex{} + +var kubernetesProvider *kubernetes.Provider + +func GetKubernetesProvider() (*kubernetes.Provider, error) { + if kubernetesProvider == nil { + lock.Lock() + defer lock.Unlock() + + if kubernetesProvider == nil { + var err error + kubernetesProvider, err = kubernetes.NewProviderInCluster() + if err != nil { + return nil, err + } + } + } + + return kubernetesProvider, nil +}