From 09dc70bf34eb3042c4e1392fceddda9f144692dd Mon Sep 17 00:00:00 2001 From: Gireesh Naidu Date: Tue, 25 Jun 2024 16:59:32 +0530 Subject: [PATCH 1/3] chore: common-lib version upgrade --- go.mod | 2 +- go.sum | 4 +- .../common-lib/utils/k8s/K8sUtil.go | 147 +++++++++++++++++- .../devtron-labs/common-lib/utils/k8s/bean.go | 64 ++++++++ vendor/modules.txt | 2 +- 5 files changed, 208 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 710a108997..896f50a757 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set v1.8.0 github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1 - github.com/devtron-labs/common-lib v0.0.19 + github.com/devtron-labs/common-lib v0.0.20-0.20240625064203-2456568b53c9 github.com/devtron-labs/go-bitbucket v0.9.60-beta github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534 github.com/evanphx/json-patch v5.7.0+incompatible diff --git a/go.sum b/go.sum index bd826ddc39..1347fb5a47 100644 --- a/go.sum +++ b/go.sum @@ -185,8 +185,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4 h1:YcpmyvADG github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1 h1:qdkpTAo2Kr0ZicZIVXfNwsGSshpc9OB9j9RzmKYdIwY= github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1/go.mod h1:IkKPPEfgLCMR29he5yv2OCC6iM2R7K5/0AA3k8b9XNc= -github.com/devtron-labs/common-lib v0.0.19 h1:vrTP4y3m824qKrfjcxe0FJCz5uZEsYEnFAeRnWm6+bI= -github.com/devtron-labs/common-lib v0.0.19/go.mod h1:UZGPt1ep9Tnd9Ak2sibGSiLr7p3ijO2/JLT+h+pqBuU= +github.com/devtron-labs/common-lib v0.0.20-0.20240625064203-2456568b53c9 h1:xvbIZrF7m3G8eiRpZ5C5Mt3E2SzTQclatoMqWXjbefY= +github.com/devtron-labs/common-lib v0.0.20-0.20240625064203-2456568b53c9/go.mod h1:UZGPt1ep9Tnd9Ak2sibGSiLr7p3ijO2/JLT+h+pqBuU= github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU= github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y= github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534 h1:TElPRU69QedW7DIQiiQxtjwSQ6cK0fCTAMGvSLhP0ac= diff --git a/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go b/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go index cfecc68a9b..6568a957b3 100644 --- a/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go +++ b/vendor/github.com/devtron-labs/common-lib/utils/k8s/K8sUtil.go @@ -66,9 +66,10 @@ import ( ) type K8sServiceImpl struct { - logger *zap.SugaredLogger - runTimeConfig *client.RuntimeConfig - kubeconfig *string + logger *zap.SugaredLogger + runTimeConfig *client.RuntimeConfig + httpClientConfig *CustomK8sHttpTransportConfig + kubeconfig *string } type K8sService interface { @@ -135,6 +136,7 @@ type K8sService interface { GetResourceIf(restConfig *rest.Config, groupVersionKind schema.GroupVersionKind) (resourceIf dynamic.NamespaceableResourceInterface, namespaced bool, err error) FetchConnectionStatusForCluster(k8sClientSet *kubernetes.Clientset) error CreateK8sClientSet(restConfig *rest.Config) (*kubernetes.Clientset, error) + //CreateK8sClientSetWithCustomHttpTransport(restConfig *rest.Config) (*kubernetes.Clientset, error) } func NewK8sUtil(logger *zap.SugaredLogger, runTimeConfig *client.RuntimeConfig) *K8sServiceImpl { @@ -147,8 +149,9 @@ func NewK8sUtil(logger *zap.SugaredLogger, runTimeConfig *client.RuntimeConfig) kubeconfig = flag.String("kubeconfig-authenticator-xyz", filepath.Join(usr.HomeDir, ".kube", "config"), "(optional) absolute path to the kubeconfig file") } + httpClientConfig := NewCustomK8sHttpTransportConfig() flag.Parse() - return &K8sServiceImpl{logger: logger, runTimeConfig: runTimeConfig, kubeconfig: kubeconfig} + return &K8sServiceImpl{logger: logger, runTimeConfig: runTimeConfig, kubeconfig: kubeconfig, httpClientConfig: httpClientConfig} } func (impl K8sServiceImpl) GetRestConfigByCluster(clusterConfig *ClusterConfig) (*restclient.Config, error) { @@ -170,7 +173,11 @@ func (impl K8sServiceImpl) GetRestConfigByCluster(clusterConfig *ClusterConfig) restConfig.TLSClientConfig.CAData = []byte(clusterConfig.CAData) } } - return restConfig, nil + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding rest config with custom transport configurations", "err", err) + } + return restConfig, err } func (impl K8sServiceImpl) GetCoreV1Client(clusterConfig *ClusterConfig) (*v12.CoreV1Client, error) { @@ -189,6 +196,13 @@ func (impl K8sServiceImpl) GetClientForInCluster() (*v12.CoreV1Client, error) { impl.logger.Errorw("error in getting config", "err", err) return nil, err } + + config, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(config) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + // creates the clientset httpClient, err := OverrideK8sHttpClientWithTracer(config) if err != nil { @@ -209,6 +223,13 @@ func (impl K8sServiceImpl) GetK8sDiscoveryClient(clusterConfig *ClusterConfig) ( impl.logger.Errorw("error in getting rest config for default cluster", "err", err) return nil, err } + + cfg, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(cfg) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + httpClient, err := OverrideK8sHttpClientWithTracer(cfg) if err != nil { impl.logger.Errorw("error in getting http client for default cluster", "err", err) @@ -228,10 +249,13 @@ func (impl K8sServiceImpl) GetK8sDiscoveryClientInCluster() (*discovery.Discover impl.logger.Errorw("error in getting config", "err", err) return nil, err } + + config, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(config) if err != nil { - impl.logger.Errorw("error", "error", err) + impl.logger.Errorw("error in overriding reset config", "err", err) return nil, err } + httpClient, err := OverrideK8sHttpClientWithTracer(config) if err != nil { impl.logger.Errorw("error in getting http client for default cluster", "err", err) @@ -468,6 +492,7 @@ func (impl K8sServiceImpl) GetK8sInClusterConfigAndClients() (*rest.Config, *htt impl.logger.Errorw("error in getting rest config for in cluster", "err", err) return nil, nil, nil, err } + k8sHttpClient, k8sClientSet, err := impl.GetK8sConfigAndClientsByRestConfig(restConfig) if err != nil { impl.logger.Errorw("error in getting client set by rest config for in cluster", "err", err) @@ -482,6 +507,13 @@ func (impl K8sServiceImpl) GetK8sInClusterConfigAndDynamicClients() (*rest.Confi impl.logger.Errorw("error in getting rest config for in cluster", "err", err) return nil, nil, nil, err } + + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, nil, nil, err + } + k8sHttpClient, err := OverrideK8sHttpClientWithTracer(restConfig) if err != nil { impl.logger.Errorw("error in getting k8s http client set by rest config for in cluster", "err", err) @@ -510,6 +542,7 @@ func (impl K8sServiceImpl) GetK8sConfigAndClients(clusterConfig *ClusterConfig) impl.logger.Errorw("error in getting rest config by cluster", "err", err, "clusterName", clusterConfig.ClusterName) return nil, nil, nil, err } + k8sHttpClient, k8sClientSet, err := impl.GetK8sConfigAndClientsByRestConfig(restConfig) if err != nil { impl.logger.Errorw("error in getting client set by rest config", "err", err, "clusterName", clusterConfig.ClusterName) @@ -519,6 +552,13 @@ func (impl K8sServiceImpl) GetK8sConfigAndClients(clusterConfig *ClusterConfig) } func (impl K8sServiceImpl) GetK8sConfigAndClientsByRestConfig(restConfig *rest.Config) (*http.Client, *kubernetes.Clientset, error) { + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, nil, err + } + k8sHttpClient, err := OverrideK8sHttpClientWithTracer(restConfig) if err != nil { impl.logger.Errorw("error in getting k8s http client set by rest config", "err", err) @@ -948,6 +988,14 @@ func (impl K8sServiceImpl) GetCoreV1ClientInCluster() (*v12.CoreV1Client, error) } func (impl K8sServiceImpl) GetCoreV1ClientByRestConfig(restConfig *rest.Config) (*v12.CoreV1Client, error) { + + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + httpClientFor, err := rest.HTTPClientFor(restConfig) if err != nil { impl.logger.Error("error occurred while overriding k8s client", "reason", err) @@ -1084,7 +1132,14 @@ func UpdateNodeUnschedulableProperty(desiredUnschedulable bool, node *v1.Node, k node, err := k8sClientSet.CoreV1().Nodes().Update(context.Background(), node, metav1.UpdateOptions{}) return node, err } + func (impl K8sServiceImpl) CreateK8sClientSet(restConfig *rest.Config) (*kubernetes.Clientset, error) { + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } k8sHttpClient, err := OverrideK8sHttpClientWithTracer(restConfig) if err != nil { impl.logger.Errorw("service err, OverrideK8sHttpClientWithTracer", "err", err) @@ -1145,6 +1200,12 @@ func CheckIfValidLabel(labelKey string, labelValue string) error { } func (impl K8sServiceImpl) GetResourceIf(restConfig *rest.Config, groupVersionKind schema.GroupVersionKind) (resourceIf dynamic.NamespaceableResourceInterface, namespaced bool, err error) { + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, false, err + } + httpClient, err := OverrideK8sHttpClientWithTracer(restConfig) if err != nil { return nil, false, err @@ -1169,7 +1230,12 @@ func (impl K8sServiceImpl) GetResourceIf(restConfig *rest.Config, groupVersionKi } func (impl K8sServiceImpl) ListEvents(restConfig *rest.Config, namespace string, groupVersionKind schema.GroupVersionKind, ctx context.Context, name string) (*v1.EventList, error) { - + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } _, namespaced, err := impl.GetResourceIf(restConfig, groupVersionKind) if err != nil { impl.logger.Errorw("error in getting dynamic interface for resource", "err", err, "resource", name) @@ -1209,6 +1275,13 @@ func (impl K8sServiceImpl) ListEvents(restConfig *rest.Config, namespace string, } func (impl K8sServiceImpl) GetPodLogs(ctx context.Context, restConfig *rest.Config, name string, namespace string, sinceTime *metav1.Time, tailLines int, sinceSeconds int, follow bool, containerName string, isPrevContainerLogsEnabled bool) (io.ReadCloser, error) { + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + httpClient, err := OverrideK8sHttpClientWithTracer(restConfig) if err != nil { impl.logger.Errorw("error in getting pod logs", "err", err) @@ -1247,6 +1320,13 @@ func (impl K8sServiceImpl) GetPodLogs(ctx context.Context, restConfig *rest.Conf return stream, nil } func (impl K8sServiceImpl) GetResourceIfWithAcceptHeader(restConfig *rest.Config, groupVersionKind schema.GroupVersionKind, asTable bool) (resourceIf dynamic.NamespaceableResourceInterface, namespaced bool, err error) { + + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, false, err + } + httpClient, err := OverrideK8sHttpClientWithTracer(restConfig) if err != nil { impl.logger.Errorw("error in getting http client", "err", err) @@ -1300,6 +1380,13 @@ func ServerResourceForGroupVersionKind(discoveryClient discovery.DiscoveryInterf return nil, errors.NewNotFound(schema.GroupResource{Group: gvk.Group, Resource: gvk.Kind}, "") } func (impl K8sServiceImpl) GetResourceList(ctx context.Context, restConfig *rest.Config, gvk schema.GroupVersionKind, namespace string, asTable bool, listOptions *metav1.ListOptions) (*ResourceListResponse, bool, error) { + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, false, err + } + resourceIf, namespaced, err := impl.GetResourceIfWithAcceptHeader(restConfig, gvk, asTable) if err != nil { impl.logger.Errorw("error in getting dynamic interface for resource", "err", err, "namespace", namespace) @@ -1327,6 +1414,14 @@ func (impl K8sServiceImpl) GetResourceList(ctx context.Context, restConfig *rest } func (impl K8sServiceImpl) PatchResourceRequest(ctx context.Context, restConfig *rest.Config, pt types.PatchType, manifest string, name string, namespace string, gvk schema.GroupVersionKind) (*ManifestResponse, error) { + + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + resourceIf, namespaced, err := impl.GetResourceIf(restConfig, gvk) if err != nil { impl.logger.Errorw("error in getting dynamic interface for resource", "err", err, "resource", name, "namespace", namespace) @@ -1348,6 +1443,13 @@ func (impl K8sServiceImpl) PatchResourceRequest(ctx context.Context, restConfig // if verb is supplied empty, that means - return all func (impl K8sServiceImpl) GetApiResources(restConfig *rest.Config, includeOnlyVerb string) ([]*K8sApiResource, error) { + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + discoveryClient, err := discovery.NewDiscoveryClientForConfig(restConfig) if err != nil { impl.logger.Errorw("error in getting dynamic k8s client", "err", err) @@ -1416,6 +1518,14 @@ func (impl K8sServiceImpl) GetApiResources(restConfig *rest.Config, includeOnlyV return apiResources, nil } func (impl *K8sServiceImpl) CreateResources(ctx context.Context, restConfig *rest.Config, manifest string, gvk schema.GroupVersionKind, namespace string) (*ManifestResponse, error) { + + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + resourceIf, namespaced, err := impl.GetResourceIf(restConfig, gvk) if err != nil { impl.logger.Errorw("error in getting dynamic interface for resource", "err", err, "namespace", namespace) @@ -1440,6 +1550,14 @@ func (impl *K8sServiceImpl) CreateResources(ctx context.Context, restConfig *res return &ManifestResponse{Manifest: *resp}, nil } func (impl *K8sServiceImpl) GetResource(ctx context.Context, namespace string, name string, gvk schema.GroupVersionKind, restConfig *rest.Config) (*ManifestResponse, error) { + + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + resourceIf, namespaced, err := impl.GetResourceIf(restConfig, gvk) if err != nil { impl.logger.Errorw("error in getting dynamic interface for resource", "err", err, "namespace", namespace) @@ -1459,6 +1577,13 @@ func (impl *K8sServiceImpl) GetResource(ctx context.Context, namespace string, n } func (impl *K8sServiceImpl) UpdateResource(ctx context.Context, restConfig *rest.Config, gvk schema.GroupVersionKind, namespace string, k8sRequestPatch string) (*ManifestResponse, error) { + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + resourceIf, namespaced, err := impl.GetResourceIf(restConfig, gvk) if err != nil { impl.logger.Errorw("error in getting dynamic interface for resource", "err", err, "namespace", namespace) @@ -1484,6 +1609,14 @@ func (impl *K8sServiceImpl) UpdateResource(ctx context.Context, restConfig *rest } func (impl *K8sServiceImpl) DeleteResource(ctx context.Context, restConfig *rest.Config, gvk schema.GroupVersionKind, namespace string, name string, forceDelete bool) (*ManifestResponse, error) { + + var err error + restConfig, err = impl.httpClientConfig.OverrideConfigWithCustomTransport(restConfig) + if err != nil { + impl.logger.Errorw("error in overriding reset config", "err", err) + return nil, err + } + resourceIf, namespaced, err := impl.GetResourceIf(restConfig, gvk) if err != nil { impl.logger.Errorw("error in getting dynamic interface for resource", "err", err, "resource", name, "namespace", namespace) diff --git a/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go b/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go index 4d6da10889..1459c19b67 100644 --- a/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go +++ b/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go @@ -18,6 +18,7 @@ package k8s import ( "fmt" + "github.com/caarlos0/env" "github.com/devtron-labs/common-lib/utils/k8sObjectsUtil" "github.com/devtron-labs/common-lib/utils/remoteConnection/bean" v1 "k8s.io/api/core/v1" @@ -25,6 +26,12 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" + utilnet "k8s.io/apimachinery/pkg/util/net" + "k8s.io/client-go/rest" + "log" + "net" + "net/http" + "time" ) const ( @@ -164,3 +171,60 @@ func GetResourceKey(obj *unstructured.Unstructured) ResourceKey { gvk := obj.GroupVersionKind() return NewResourceKey(gvk.Group, gvk.Kind, obj.GetNamespace(), obj.GetName()) } + +type CustomK8sHttpTransportConfig struct { + UseCustomTransport bool `env:"USE_CUSTOM_HTTP_TRANSPORT" envDefault:"false"` + TimeOut int `env:"K8s_TCP_TIMEOUT" envDefault:"30"` + KeepAlive int `env:"K8s_TCP_KEEPALIVE" envDefault:"30"` + TLSHandshakeTimeout int `env:"K8s_TLS_HANDSHAKE_TIMEOUT" envDefault:"10"` + MaxIdleConnsPerHost int `env:"K8s_CLIENT_MAX_IDLE_CONNS_PER_SECOND" envDefault:"25"` +} + +func NewCustomK8sHttpTransportConfig() *CustomK8sHttpTransportConfig { + customK8sHttpTransportConfig := &CustomK8sHttpTransportConfig{} + err := env.Parse(customK8sHttpTransportConfig) + if err != nil { + log.Println("error in parsing custom k8s http configurations from env : ", "err : ", err) + } + return customK8sHttpTransportConfig +} + +// OverrideConfigWithCustomTransport +// overrides the given rest config with custom transport if UseCustomTransport is enabled. +// if the config already has a defined transport, we dont override it. +func (impl *CustomK8sHttpTransportConfig) OverrideConfigWithCustomTransport(config *rest.Config) (*rest.Config, error) { + if !impl.UseCustomTransport || config.Transport != nil { + return config, nil + } + + dial := (&net.Dialer{ + Timeout: time.Duration(impl.TimeOut) * time.Second, + KeepAlive: time.Duration(impl.KeepAlive) * time.Second, + }).DialContext + + // Get the TLS options for this client config + tlsConfig, err := rest.TLSConfigFor(config) + if err != nil { + return nil, err + } + + transport := utilnet.SetTransportDefaults(&http.Transport{ + Proxy: http.ProxyFromEnvironment, + TLSHandshakeTimeout: time.Duration(impl.TLSHandshakeTimeout) * time.Second, + TLSClientConfig: tlsConfig, + MaxIdleConnsPerHost: impl.MaxIdleConnsPerHost, + DialContext: dial, + DisableCompression: config.DisableCompression, + }) + + config.Transport = transport + + rt, err := rest.HTTPWrappersForConfig(config, transport) + if err != nil { + return nil, err + } + + config.Transport = rt + config.Timeout = time.Duration(impl.TimeOut) * time.Second + return config, nil +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 2654c6fee2..47ec61940c 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -381,7 +381,7 @@ github.com/devtron-labs/authenticator/jwt github.com/devtron-labs/authenticator/middleware github.com/devtron-labs/authenticator/oidc github.com/devtron-labs/authenticator/password -# github.com/devtron-labs/common-lib v0.0.19 +# github.com/devtron-labs/common-lib v0.0.20-0.20240625064203-2456568b53c9 ## explicit; go 1.21 github.com/devtron-labs/common-lib/blob-storage github.com/devtron-labs/common-lib/cloud-provider-identifier From aa9fc1dee1cfec8846ece61f68a87a085a38178a Mon Sep 17 00:00:00 2001 From: Gireesh Naidu Date: Wed, 26 Jun 2024 12:06:27 +0530 Subject: [PATCH 2/3] chore: common-lib update --- go.mod | 2 +- go.sum | 4 ++-- .../devtron-labs/common-lib/utils/k8s/bean.go | 19 ++++++++++++++----- vendor/modules.txt | 2 +- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 896f50a757..d88a3ba743 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set v1.8.0 github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1 - github.com/devtron-labs/common-lib v0.0.20-0.20240625064203-2456568b53c9 + github.com/devtron-labs/common-lib v0.0.20-0.20240626062143-dff39d9e9814 github.com/devtron-labs/go-bitbucket v0.9.60-beta github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534 github.com/evanphx/json-patch v5.7.0+incompatible diff --git a/go.sum b/go.sum index 1347fb5a47..c444af44ef 100644 --- a/go.sum +++ b/go.sum @@ -185,8 +185,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4 h1:YcpmyvADG github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1 h1:qdkpTAo2Kr0ZicZIVXfNwsGSshpc9OB9j9RzmKYdIwY= github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1/go.mod h1:IkKPPEfgLCMR29he5yv2OCC6iM2R7K5/0AA3k8b9XNc= -github.com/devtron-labs/common-lib v0.0.20-0.20240625064203-2456568b53c9 h1:xvbIZrF7m3G8eiRpZ5C5Mt3E2SzTQclatoMqWXjbefY= -github.com/devtron-labs/common-lib v0.0.20-0.20240625064203-2456568b53c9/go.mod h1:UZGPt1ep9Tnd9Ak2sibGSiLr7p3ijO2/JLT+h+pqBuU= +github.com/devtron-labs/common-lib v0.0.20-0.20240626062143-dff39d9e9814 h1:aDbV1z0hUN59jPtOB+VfOzLJvqZ6X+kW33w4uamrII0= +github.com/devtron-labs/common-lib v0.0.20-0.20240626062143-dff39d9e9814/go.mod h1:UZGPt1ep9Tnd9Ak2sibGSiLr7p3ijO2/JLT+h+pqBuU= github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU= github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y= github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534 h1:TElPRU69QedW7DIQiiQxtjwSQ6cK0fCTAMGvSLhP0ac= diff --git a/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go b/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go index 1459c19b67..e9012eaa95 100644 --- a/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go +++ b/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go @@ -177,7 +177,8 @@ type CustomK8sHttpTransportConfig struct { TimeOut int `env:"K8s_TCP_TIMEOUT" envDefault:"30"` KeepAlive int `env:"K8s_TCP_KEEPALIVE" envDefault:"30"` TLSHandshakeTimeout int `env:"K8s_TLS_HANDSHAKE_TIMEOUT" envDefault:"10"` - MaxIdleConnsPerHost int `env:"K8s_CLIENT_MAX_IDLE_CONNS_PER_SECOND" envDefault:"25"` + MaxIdleConnsPerHost int `env:"K8s_CLIENT_MAX_IDLE_CONNS_PER_HOST" envDefault:"25"` + IdleConnTimeout int `env:"K8s_TCP_IDLE_CONN_TIMEOUT" envDefault:"300"` } func NewCustomK8sHttpTransportConfig() *CustomK8sHttpTransportConfig { @@ -191,9 +192,9 @@ func NewCustomK8sHttpTransportConfig() *CustomK8sHttpTransportConfig { // OverrideConfigWithCustomTransport // overrides the given rest config with custom transport if UseCustomTransport is enabled. -// if the config already has a defined transport, we dont override it. +// if the config already has a defined transport or tls is config is secure, we don't override it. func (impl *CustomK8sHttpTransportConfig) OverrideConfigWithCustomTransport(config *rest.Config) (*rest.Config, error) { - if !impl.UseCustomTransport || config.Transport != nil { + if !impl.UseCustomTransport || config.Transport != nil || !config.TLSClientConfig.Insecure { return config, nil } @@ -212,13 +213,14 @@ func (impl *CustomK8sHttpTransportConfig) OverrideConfigWithCustomTransport(conf Proxy: http.ProxyFromEnvironment, TLSHandshakeTimeout: time.Duration(impl.TLSHandshakeTimeout) * time.Second, TLSClientConfig: tlsConfig, + MaxIdleConns: impl.MaxIdleConnsPerHost, + MaxConnsPerHost: impl.MaxIdleConnsPerHost, MaxIdleConnsPerHost: impl.MaxIdleConnsPerHost, DialContext: dial, DisableCompression: config.DisableCompression, + IdleConnTimeout: time.Duration(impl.IdleConnTimeout) * time.Second, }) - config.Transport = transport - rt, err := rest.HTTPWrappersForConfig(config, transport) if err != nil { return nil, err @@ -226,5 +228,12 @@ func (impl *CustomK8sHttpTransportConfig) OverrideConfigWithCustomTransport(conf config.Transport = rt config.Timeout = time.Duration(impl.TimeOut) * time.Second + + // set default tls config and remove auth/exec provides since we use it in a custom transport. + // we already set tls config in the transport + config.TLSClientConfig = rest.TLSClientConfig{} + config.AuthProvider = nil + config.ExecProvider = nil + return config, nil } diff --git a/vendor/modules.txt b/vendor/modules.txt index 47ec61940c..0d64e6a8e7 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -381,7 +381,7 @@ github.com/devtron-labs/authenticator/jwt github.com/devtron-labs/authenticator/middleware github.com/devtron-labs/authenticator/oidc github.com/devtron-labs/authenticator/password -# github.com/devtron-labs/common-lib v0.0.20-0.20240625064203-2456568b53c9 +# github.com/devtron-labs/common-lib v0.0.20-0.20240626062143-dff39d9e9814 ## explicit; go 1.21 github.com/devtron-labs/common-lib/blob-storage github.com/devtron-labs/common-lib/cloud-provider-identifier From ed2f25ebef728376520ad895909a97eff5b8b797 Mon Sep 17 00:00:00 2001 From: Gireesh Naidu Date: Fri, 28 Jun 2024 17:09:46 +0530 Subject: [PATCH 3/3] chore: review common lib update --- go.mod | 2 +- go.sum | 4 ++-- .../devtron-labs/common-lib/pubsub-lib/NatsClient.go | 8 ++++---- .../common-lib/pubsub-lib/PubSubClientService.go | 10 ++++++---- .../devtron-labs/common-lib/utils/k8s/bean.go | 4 ++-- vendor/modules.txt | 2 +- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index d88a3ba743..48607f0aec 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/deckarep/golang-set v1.8.0 github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1 - github.com/devtron-labs/common-lib v0.0.20-0.20240626062143-dff39d9e9814 + github.com/devtron-labs/common-lib v0.0.21-0.20240628105542-603b4f777e00 github.com/devtron-labs/go-bitbucket v0.9.60-beta github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534 github.com/evanphx/json-patch v5.7.0+incompatible diff --git a/go.sum b/go.sum index c444af44ef..9cbb5ed2cd 100644 --- a/go.sum +++ b/go.sum @@ -185,8 +185,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4 h1:YcpmyvADG github.com/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1 h1:qdkpTAo2Kr0ZicZIVXfNwsGSshpc9OB9j9RzmKYdIwY= github.com/devtron-labs/authenticator v0.4.35-0.20240607135426-c86e868ecee1/go.mod h1:IkKPPEfgLCMR29he5yv2OCC6iM2R7K5/0AA3k8b9XNc= -github.com/devtron-labs/common-lib v0.0.20-0.20240626062143-dff39d9e9814 h1:aDbV1z0hUN59jPtOB+VfOzLJvqZ6X+kW33w4uamrII0= -github.com/devtron-labs/common-lib v0.0.20-0.20240626062143-dff39d9e9814/go.mod h1:UZGPt1ep9Tnd9Ak2sibGSiLr7p3ijO2/JLT+h+pqBuU= +github.com/devtron-labs/common-lib v0.0.21-0.20240628105542-603b4f777e00 h1:xSZulEz0PaTA7tL4Es/uNFUmgjD6oAv8gxJV49GPWHk= +github.com/devtron-labs/common-lib v0.0.21-0.20240628105542-603b4f777e00/go.mod h1:UZGPt1ep9Tnd9Ak2sibGSiLr7p3ijO2/JLT+h+pqBuU= github.com/devtron-labs/go-bitbucket v0.9.60-beta h1:VEx1jvDgdtDPS6A1uUFoaEi0l1/oLhbr+90xOwr6sDU= github.com/devtron-labs/go-bitbucket v0.9.60-beta/go.mod h1:GnuiCesvh8xyHeMCb+twm8lBR/kQzJYSKL28ZfObp1Y= github.com/devtron-labs/protos v0.0.3-0.20240326053929-48e42d9d4534 h1:TElPRU69QedW7DIQiiQxtjwSQ6cK0fCTAMGvSLhP0ac= diff --git a/vendor/github.com/devtron-labs/common-lib/pubsub-lib/NatsClient.go b/vendor/github.com/devtron-labs/common-lib/pubsub-lib/NatsClient.go index c5b1bc4c1f..8f80473fef 100644 --- a/vendor/github.com/devtron-labs/common-lib/pubsub-lib/NatsClient.go +++ b/vendor/github.com/devtron-labs/common-lib/pubsub-lib/NatsClient.go @@ -108,8 +108,8 @@ func (consumerConf NatsConsumerConfig) GetNatsMsgBufferSize() int { // } func NewNatsClient(logger *zap.SugaredLogger) (*NatsClient, error) { - connWg := new(sync.WaitGroup) - connWg.Add(1) + //connWg := new(sync.WaitGroup) + //connWg.Add(1) cfg := &NatsClientConfig{} err := env.Parse(cfg) if err != nil { @@ -131,7 +131,7 @@ func NewNatsClient(logger *zap.SugaredLogger) (*NatsClient, error) { }), nats.ClosedHandler(func(nc *nats.Conn) { logger.Errorw("Nats Client Connection closed!", "Reason", nc.LastError()) - connWg.Done() + //connWg.Done() })) if err != nil { logger.Error("err", err) @@ -149,7 +149,7 @@ func NewNatsClient(logger *zap.SugaredLogger) (*NatsClient, error) { logger: logger, JetStrCtxt: js, Conn: nc, - ConnWg: connWg, + //ConnWg: connWg, } return natsClient, nil } diff --git a/vendor/github.com/devtron-labs/common-lib/pubsub-lib/PubSubClientService.go b/vendor/github.com/devtron-labs/common-lib/pubsub-lib/PubSubClientService.go index afbb13659e..fd7c78ab5e 100644 --- a/vendor/github.com/devtron-labs/common-lib/pubsub-lib/PubSubClientService.go +++ b/vendor/github.com/devtron-labs/common-lib/pubsub-lib/PubSubClientService.go @@ -78,11 +78,13 @@ func NewPubSubClientServiceImpl(logger *zap.SugaredLogger) (*PubSubClientService func (impl PubSubClientServiceImpl) ShutDown() error { // Drain the connection, which will close it when done. - if err := impl.NatsClient.Conn.Drain(); err != nil { - return err - } + //if err := impl.NatsClient.Conn.Drain(); err != nil { + // return err + //} // Wait for the connection to be closed. - impl.NatsClient.ConnWg.Wait() + //impl.NatsClient.ConnWg.Wait() + // TODO: Currently the drain mechanism deletes the Ephemeral consumers. + // Implement the fix for the Ephemeral consumers first to enable graceful shutdown. return nil } diff --git a/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go b/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go index e9012eaa95..85043c9cc1 100644 --- a/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go +++ b/vendor/github.com/devtron-labs/common-lib/utils/k8s/bean.go @@ -192,9 +192,9 @@ func NewCustomK8sHttpTransportConfig() *CustomK8sHttpTransportConfig { // OverrideConfigWithCustomTransport // overrides the given rest config with custom transport if UseCustomTransport is enabled. -// if the config already has a defined transport or tls is config is secure, we don't override it. +// if the config already has a defined transport, we don't override it. func (impl *CustomK8sHttpTransportConfig) OverrideConfigWithCustomTransport(config *rest.Config) (*rest.Config, error) { - if !impl.UseCustomTransport || config.Transport != nil || !config.TLSClientConfig.Insecure { + if !impl.UseCustomTransport || config.Transport != nil { return config, nil } diff --git a/vendor/modules.txt b/vendor/modules.txt index 0d64e6a8e7..0503875ca6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -381,7 +381,7 @@ github.com/devtron-labs/authenticator/jwt github.com/devtron-labs/authenticator/middleware github.com/devtron-labs/authenticator/oidc github.com/devtron-labs/authenticator/password -# github.com/devtron-labs/common-lib v0.0.20-0.20240626062143-dff39d9e9814 +# github.com/devtron-labs/common-lib v0.0.21-0.20240628105542-603b4f777e00 ## explicit; go 1.21 github.com/devtron-labs/common-lib/blob-storage github.com/devtron-labs/common-lib/cloud-provider-identifier