Update mock CLI to use bootstrapper

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
Brian Goff
2022-08-30 22:18:14 +00:00
committed by Pires
parent e72a73af61
commit c01fff766d
3 changed files with 12 additions and 64 deletions

View File

@@ -16,31 +16,21 @@ package root
import ( import (
"fmt" "fmt"
"os"
"time" "time"
) )
type apiServerConfig struct { type apiServerConfig struct {
CertPath string
KeyPath string
CACertPath string
Addr string Addr string
MetricsAddr string MetricsAddr string
StreamIdleTimeout time.Duration StreamIdleTimeout time.Duration
StreamCreationTimeout time.Duration StreamCreationTimeout time.Duration
} }
func getAPIConfig(c Opts) (*apiServerConfig, error) { func getAPIConfig(c Opts) apiServerConfig {
config := apiServerConfig{ return apiServerConfig{
CertPath: os.Getenv("APISERVER_CERT_LOCATION"), Addr: fmt.Sprintf(":%d", c.ListenPort),
KeyPath: os.Getenv("APISERVER_KEY_LOCATION"), MetricsAddr: c.MetricsAddr,
CACertPath: os.Getenv("APISERVER_CA_CERT_LOCATION"), StreamIdleTimeout: c.StreamIdleTimeout,
StreamCreationTimeout: c.StreamCreationTimeout,
} }
config.Addr = fmt.Sprintf(":%d", c.ListenPort)
config.MetricsAddr = c.MetricsAddr
config.StreamIdleTimeout = c.StreamIdleTimeout
config.StreamCreationTimeout = c.StreamCreationTimeout
return &config, nil
} }

View File

@@ -16,8 +16,6 @@ package root
import ( import (
"context" "context"
"crypto/tls"
"net/http"
"os" "os"
"runtime" "runtime"
@@ -28,10 +26,8 @@ import (
"github.com/virtual-kubelet/virtual-kubelet/internal/manager" "github.com/virtual-kubelet/virtual-kubelet/internal/manager"
"github.com/virtual-kubelet/virtual-kubelet/log" "github.com/virtual-kubelet/virtual-kubelet/log"
"github.com/virtual-kubelet/virtual-kubelet/node" "github.com/virtual-kubelet/virtual-kubelet/node"
"github.com/virtual-kubelet/virtual-kubelet/node/api"
"github.com/virtual-kubelet/virtual-kubelet/node/nodeutil" "github.com/virtual-kubelet/virtual-kubelet/node/nodeutil"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
"k8s.io/apiserver/pkg/server/dynamiccertificates"
) )
// NewCommand creates a new top-level command. // NewCommand creates a new top-level command.
@@ -73,14 +69,6 @@ func runRootCommand(ctx context.Context, s *provider.Store, c Opts) error {
} }
} }
// Ensure API client.
clientSet, err := nodeutil.ClientsetFromEnv(c.KubeConfigPath)
if err != nil {
return err
}
// Set-up the node provider.
mux := http.NewServeMux()
newProvider := func(cfg nodeutil.ProviderConfig) (nodeutil.Provider, node.NodeProvider, error) { newProvider := func(cfg nodeutil.ProviderConfig) (nodeutil.Provider, node.NodeProvider, error) {
rm, err := manager.NewResourceManager(cfg.Pods, cfg.Secrets, cfg.ConfigMaps, cfg.Services) rm, err := manager.NewResourceManager(cfg.Pods, cfg.Secrets, cfg.ConfigMaps, cfg.Services)
if err != nil { if err != nil {
@@ -109,14 +97,9 @@ func runRootCommand(ctx context.Context, s *provider.Store, c Opts) error {
return p, nil, nil return p, nil, nil
} }
apiConfig, err := getAPIConfig(c) apiConfig := getAPIConfig(c)
if err != nil {
return err
}
cm, err := nodeutil.NewNode(c.NodeName, newProvider, func(cfg *nodeutil.NodeConfig) error { cm, err := nodeutil.NewNode(c.NodeName, newProvider, func(cfg *nodeutil.NodeConfig) error {
cfg.KubeconfigPath = c.KubeConfigPath cfg.KubeconfigPath = c.KubeConfigPath
cfg.Handler = mux
cfg.InformerResyncPeriod = c.InformerResyncPeriod cfg.InformerResyncPeriod = c.InformerResyncPeriod
if taint != nil { if taint != nil {
@@ -134,6 +117,7 @@ func runRootCommand(ctx context.Context, s *provider.Store, c Opts) error {
return nil return nil
}, },
<<<<<<< HEAD
nodeutil.WithClient(clientSet), nodeutil.WithClient(clientSet),
setAuth(c.NodeName, apiConfig), setAuth(c.NodeName, apiConfig),
nodeutil.WithTLSConfig( nodeutil.WithTLSConfig(
@@ -141,6 +125,9 @@ func runRootCommand(ctx context.Context, s *provider.Store, c Opts) error {
maybeCA(apiConfig.CACertPath), maybeCA(apiConfig.CACertPath),
), ),
nodeutil.AttachProviderRoutes(mux), nodeutil.AttachProviderRoutes(mux),
=======
nodeutil.WithBootstrapFromRestConfig(),
>>>>>>> 1eab7362 (Update mock CLI to use bootstrapper)
) )
if err != nil { if err != nil {
return err return err
@@ -179,32 +166,3 @@ func runRootCommand(ctx context.Context, s *provider.Store, c Opts) error {
} }
return nil return nil
} }
func setAuth(node string, apiCfg *apiServerConfig) nodeutil.NodeOpt {
if apiCfg.CACertPath == "" {
return func(cfg *nodeutil.NodeConfig) error {
cfg.Handler = api.InstrumentHandler(nodeutil.WithAuth(nodeutil.NoAuth(), cfg.Handler))
return nil
}
}
return func(cfg *nodeutil.NodeConfig) error {
auth, err := nodeutil.WebhookAuth(cfg.Client, node, func(cfg *nodeutil.WebhookAuthConfig) error {
var err error
cfg.AuthnConfig.ClientCertificateCAContentProvider, err = dynamiccertificates.NewDynamicCAContentFromFile("ca-cert-bundle", apiCfg.CACertPath)
return err
})
if err != nil {
return err
}
cfg.Handler = api.InstrumentHandler(nodeutil.WithAuth(auth, cfg.Handler))
return nil
}
}
func maybeCA(p string) func(*tls.Config) error {
if p == "" {
return func(*tls.Config) error { return nil }
}
return nodeutil.WithCAFromPath(p)
}

View File

@@ -102,7 +102,7 @@ func NewMockProvider(providerConfig, nodeName, operatingSystem string, internalI
func loadConfig(providerConfig, nodeName string) (config MockConfig, err error) { func loadConfig(providerConfig, nodeName string) (config MockConfig, err error) {
data, err := os.ReadFile(providerConfig) data, err := os.ReadFile(providerConfig)
if err != nil { if err != nil {
return config, err return config, fmt.Errorf("error reaeding provider config: %w", err)
} }
configMap := map[string]MockConfig{} configMap := map[string]MockConfig{}
err = json.Unmarshal(data, &configMap) err = json.Unmarshal(data, &configMap)