This is an automated email from the ASF dual-hosted git repository.

astefanutti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 8af6490f5e30210b9ad7b870f7ddb50708faae37
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Mon Dec 6 16:26:31 2021 +0100

    chore: Increase client-side throttling maximum burst
---
 pkg/client/client.go         | 31 +++++++++++++++++--------------
 pkg/cmd/operator/operator.go | 12 ++++++++++--
 2 files changed, 27 insertions(+), 16 deletions(-)

diff --git a/pkg/client/client.go b/pkg/client/client.go
index 0893363..3334e70 100644
--- a/pkg/client/client.go
+++ b/pkg/client/client.go
@@ -23,10 +23,6 @@ import (
        "os"
        "path/filepath"
 
-       "github.com/apache/camel-k/pkg/util"
-
-       camelv1 
"github.com/apache/camel-k/pkg/client/camel/clientset/versioned/typed/camel/v1"
-       camelv1alpha1 
"github.com/apache/camel-k/pkg/client/camel/clientset/versioned/typed/camel/v1alpha1"
        user "github.com/mitchellh/go-homedir"
        "github.com/pkg/errors"
        "github.com/sirupsen/logrus"
@@ -36,18 +32,21 @@ import (
        "k8s.io/apimachinery/pkg/runtime/schema"
 
        "k8s.io/client-go/kubernetes"
-       clientscheme "k8s.io/client-go/kubernetes/scheme"
+       "k8s.io/client-go/kubernetes/scheme"
        "k8s.io/client-go/rest"
        "k8s.io/client-go/tools/clientcmd"
        clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
        clientcmdlatest "k8s.io/client-go/tools/clientcmd/api/latest"
 
-       controller "sigs.k8s.io/controller-runtime/pkg/client"
+       ctrl "sigs.k8s.io/controller-runtime/pkg/client"
        "sigs.k8s.io/controller-runtime/pkg/client/config"
        "sigs.k8s.io/controller-runtime/pkg/manager"
 
        "github.com/apache/camel-k/pkg/apis"
        camel "github.com/apache/camel-k/pkg/client/camel/clientset/versioned"
+       camelv1 
"github.com/apache/camel-k/pkg/client/camel/clientset/versioned/typed/camel/v1"
+       camelv1alpha1 
"github.com/apache/camel-k/pkg/client/camel/clientset/versioned/typed/camel/v1alpha1"
+       "github.com/apache/camel-k/pkg/util"
 )
 
 const (
@@ -57,7 +56,7 @@ const (
 
 // Client is an abstraction for a k8s client.
 type Client interface {
-       controller.Client
+       ctrl.Client
        kubernetes.Interface
        CamelV1() camelv1.CamelV1Interface
        CamelV1alpha1() camelv1alpha1.CamelV1alpha1Interface
@@ -77,7 +76,7 @@ type Provider struct {
 }
 
 type defaultClient struct {
-       controller.Client
+       ctrl.Client
        kubernetes.Interface
        camel  camel.Interface
        scheme *runtime.Scheme
@@ -116,16 +115,20 @@ func NewOutOfClusterClient(kubeconfig string) (Client, 
error) {
 
 // NewClient creates a new k8s client that can be used from outside or in the 
cluster.
 func NewClient(fastDiscovery bool) (Client, error) {
-       // Get a config to talk to the apiserver
        cfg, err := config.GetConfig()
        if err != nil {
                return nil, err
        }
+       return NewClientWithConfig(fastDiscovery, cfg)
+}
 
-       scheme := clientscheme.Scheme
+// NewClientWithConfig creates a new k8s client that can be used from outside 
or in the cluster.
+func NewClientWithConfig(fastDiscovery bool, cfg *rest.Config) (Client, error) 
{
+       clientScheme := scheme.Scheme
 
        // Setup Scheme for all resources
-       if err := apis.AddToScheme(scheme); err != nil {
+       err := apis.AddToScheme(clientScheme)
+       if err != nil {
                return nil, err
        }
 
@@ -145,11 +148,11 @@ func NewClient(fastDiscovery bool) (Client, error) {
        }
 
        // Create a new client to avoid using cache (enabled by default with 
controller-runtime client)
-       clientOptions := controller.Options{
-               Scheme: scheme,
+       clientOptions := ctrl.Options{
+               Scheme: clientScheme,
                Mapper: mapper,
        }
-       dynClient, err := controller.New(cfg, clientOptions)
+       dynClient, err := ctrl.New(cfg, clientOptions)
        if err != nil {
                return nil, err
        }
diff --git a/pkg/cmd/operator/operator.go b/pkg/cmd/operator/operator.go
index 1d140ea..256d9d5 100644
--- a/pkg/cmd/operator/operator.go
+++ b/pkg/cmd/operator/operator.go
@@ -41,6 +41,7 @@ import (
 
        "sigs.k8s.io/controller-runtime/pkg/cache"
        ctrl "sigs.k8s.io/controller-runtime/pkg/client"
+       "sigs.k8s.io/controller-runtime/pkg/client/config"
        "sigs.k8s.io/controller-runtime/pkg/healthz"
        logf "sigs.k8s.io/controller-runtime/pkg/log"
        "sigs.k8s.io/controller-runtime/pkg/log/zap"
@@ -93,7 +94,14 @@ func Run(healthPort, monitoringPort int32, leaderElection 
bool) {
        watchNamespace, err := getWatchNamespace()
        exitOnError(err, "failed to get watch namespace")
 
-       c, err := client.NewClient(false)
+       cfg, err := config.GetConfig()
+       exitOnError(err, "cannot get client config")
+       // Increase maximum burst that is used by client-side throttling,
+       // to prevent the requests made to apply the bundled Kamelets
+       // from being throttled.
+       cfg.QPS = 20
+       cfg.Burst = 200
+       c, err := client.NewClientWithConfig(false, cfg)
        exitOnError(err, "cannot initialize client")
 
        // We do not rely on the event broadcaster managed by controller 
runtime,
@@ -178,7 +186,7 @@ func Run(healthPort, monitoringPort int32, leaderElection 
bool) {
        exitOnError(controller.AddToManager(mgr), "")
 
        log.Info("Installing operator resources")
-       installCtx, installCancel := context.WithTimeout(context.TODO(), 
1*time.Minute)
+       installCtx, installCancel := context.WithTimeout(context.Background(), 
1*time.Minute)
        defer installCancel()
        install.OperatorStartupOptionalTools(installCtx, c, watchNamespace, 
operatorNamespace, log)
 

Reply via email to