...

Source file src/edge-infra.dev/pkg/edge/datasync/sparrow/encrypt.go

Documentation: edge-infra.dev/pkg/edge/datasync/sparrow

     1  // Package classification Sparrow
     2  //
     3  // Documentation for Edge Encryption API
     4  //
     5  //	Schemes: http
     6  //	BasePath: /
     7  //	Version: 1.0.0
     8  //	Host: sparrow.sparrow.svc.cluster.local
     9  //
    10  //	Consumes:
    11  //	- text/plain
    12  //
    13  //	Produces:
    14  //	- text/plain
    15  //
    16  // swagger:meta
    17  package sparrow
    18  
    19  import (
    20  	"errors"
    21  	"fmt"
    22  	"path/filepath"
    23  
    24  	"github.com/go-logr/logr"
    25  	"k8s.io/apimachinery/pkg/runtime"
    26  	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    27  	clientgoscheme "k8s.io/client-go/kubernetes/scheme"
    28  	"k8s.io/client-go/rest"
    29  	"k8s.io/client-go/tools/clientcmd"
    30  	"k8s.io/client-go/util/homedir"
    31  	"sigs.k8s.io/controller-runtime/pkg/client"
    32  )
    33  
    34  // +kubebuilder:rbac:groups="",namespace=sparrow,resources=secrets,verbs=get;list;watch
    35  
    36  func Run(log logr.Logger) error {
    37  	cfg, err := NewConfig()
    38  	if err != nil {
    39  		return fmt.Errorf("failed to load config: %w", err)
    40  	}
    41  
    42  	config, err := rest.InClusterConfig()
    43  	if errors.Is(err, rest.ErrNotInCluster) {
    44  		config, err = clientcmd.BuildConfigFromFlags("", filepath.Join(homedir.HomeDir(), ".kube", "config"))
    45  		if err != nil {
    46  			return fmt.Errorf("failed to get local config: %w", err)
    47  		}
    48  	} else if err != nil {
    49  		return fmt.Errorf("failed to get in-cluster config: %w", err)
    50  	}
    51  
    52  	cl, err := client.New(config, client.Options{Scheme: createScheme()})
    53  	if err != nil {
    54  		return fmt.Errorf("failed to create client: %w", err)
    55  	}
    56  
    57  	server := NewEncryptionServer(cfg, cl, log)
    58  
    59  	return server.Start(fmt.Sprintf(":%s", cfg.Port), fmt.Sprintf(":%s", cfg.MetricPort))
    60  }
    61  
    62  func createScheme() *runtime.Scheme {
    63  	scheme := runtime.NewScheme()
    64  
    65  	utilruntime.Must(clientgoscheme.AddToScheme(scheme))
    66  	return scheme
    67  }
    68  

View as plain text