Update mock CLI to use bootstrapper
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
@@ -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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user