mirror of
https://github.com/grafana/grafana.git
synced 2026-07-29 15:59:50 -05:00
K8s: add the CRD server to the grafana-aggregator component (pkg/cmd) (#80759)
This commit is contained in:
@@ -5,8 +5,10 @@ import (
|
||||
"path"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
genericapifilters "k8s.io/apiserver/pkg/endpoints/filters"
|
||||
genericapiserver "k8s.io/apiserver/pkg/server"
|
||||
"k8s.io/apiserver/pkg/server/options"
|
||||
"k8s.io/apiserver/pkg/util/notfoundhandler"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
"k8s.io/component-base/cli"
|
||||
"k8s.io/klog/v2"
|
||||
@@ -18,7 +20,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
aggregatorDataPath = "data/grafana-aggregator"
|
||||
aggregatorDataPath = "data"
|
||||
defaultAggregatorEtcdPathPrefix = "/registry/grafana.aggregator"
|
||||
)
|
||||
|
||||
@@ -73,9 +75,24 @@ func RunCLI() int {
|
||||
return cli.Run(cmd)
|
||||
}
|
||||
|
||||
func newCommandStartAggregator(o *aggregator.AggregatorServerOptions) *cobra.Command {
|
||||
func newCommandStartAggregator() *cobra.Command {
|
||||
devAcknowledgementNotice := "The aggregator command is in heavy development. The entire setup is subject to change without notice"
|
||||
|
||||
cwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
panic("could not determine current directory")
|
||||
}
|
||||
|
||||
extraConfig := &aggregator.ExtraConfig{
|
||||
DataPath: path.Join(cwd, aggregatorDataPath),
|
||||
}
|
||||
|
||||
// Register standard k8s flags with the command line
|
||||
recommendedOptions := options.NewRecommendedOptions(
|
||||
defaultAggregatorEtcdPathPrefix,
|
||||
aggregatorscheme.Codecs.LegacyCodec(), // codec is passed to etcd and hence not used
|
||||
)
|
||||
|
||||
cmd := &cobra.Command{
|
||||
Use: "aggregator",
|
||||
Short: "Run the grafana aggregator",
|
||||
@@ -83,10 +100,21 @@ func newCommandStartAggregator(o *aggregator.AggregatorServerOptions) *cobra.Com
|
||||
devAcknowledgementNotice,
|
||||
Example: "grafana aggregator",
|
||||
RunE: func(c *cobra.Command, args []string) error {
|
||||
return run(o)
|
||||
serverOptions, err := aggregator.NewAggregatorServerOptions(os.Stdout, os.Stderr, recommendedOptions, extraConfig)
|
||||
serverOptions.Config.Complete()
|
||||
|
||||
if err != nil {
|
||||
klog.Errorf("Could not create aggregator server options: %s", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
return run(serverOptions)
|
||||
},
|
||||
}
|
||||
|
||||
recommendedOptions.AddFlags(cmd.Flags())
|
||||
extraConfig.AddFlags(cmd.Flags())
|
||||
|
||||
return cmd
|
||||
}
|
||||
|
||||
@@ -96,23 +124,20 @@ func run(serverOptions *aggregator.AggregatorServerOptions) error {
|
||||
return err
|
||||
}
|
||||
|
||||
serverOptions.RecommendedOptions.SecureServing.BindPort = 8443
|
||||
delegationTarget := genericapiserver.NewEmptyDelegate()
|
||||
|
||||
config, err := serverOptions.CreateAggregatorConfig()
|
||||
notFoundHandler := notfoundhandler.New(serverOptions.Config.SharedConfig.Serializer, genericapifilters.NoMuxAndDiscoveryIncompleteKey)
|
||||
apiExtensionsServer, err := serverOptions.Config.ApiExtensionsComplete.New(genericapiserver.NewEmptyDelegateWithCustomHandler(notFoundHandler))
|
||||
if err != nil {
|
||||
klog.Errorf("Error creating aggregator config: %s", err)
|
||||
return err
|
||||
}
|
||||
|
||||
aggregator, err := serverOptions.CreateAggregatorServer(config, delegationTarget)
|
||||
aggregator, err := serverOptions.CreateAggregatorServer(apiExtensionsServer.GenericAPIServer, apiExtensionsServer.Informers)
|
||||
if err != nil {
|
||||
klog.Errorf("Error creating aggregator server: %s", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Install the API Group+version
|
||||
err = grafanaapiserver.InstallAPIs(aggregator.GenericAPIServer, config.GenericConfig.RESTOptionsGetter, serverOptions.Builders)
|
||||
err = grafanaapiserver.InstallAPIs(aggregator.GenericAPIServer, serverOptions.Config.Aggregator.GenericConfig.RESTOptionsGetter, serverOptions.Builders)
|
||||
if err != nil {
|
||||
klog.Errorf("Error installing apis: %s", err)
|
||||
return err
|
||||
@@ -120,13 +145,12 @@ func run(serverOptions *aggregator.AggregatorServerOptions) error {
|
||||
|
||||
if err := clientcmd.WriteToFile(
|
||||
utils.FormatKubeConfig(aggregator.GenericAPIServer.LoopbackClientConfig),
|
||||
path.Join(aggregatorDataPath, "aggregator.kubeconfig"),
|
||||
path.Join(aggregatorDataPath, "grafana-aggregator", "aggregator.kubeconfig"),
|
||||
); err != nil {
|
||||
klog.Errorf("Error persisting aggregator.kubeconfig: %s", err)
|
||||
return err
|
||||
}
|
||||
|
||||
// Finish the config (a noop for now)
|
||||
prepared, err := aggregator.PrepareRun()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -140,16 +164,7 @@ func run(serverOptions *aggregator.AggregatorServerOptions) error {
|
||||
}
|
||||
|
||||
func RunCobraWrapper() int {
|
||||
serverOptions := aggregator.NewAggregatorServerOptions(os.Stdout, os.Stderr)
|
||||
// Register standard k8s flags with the command line
|
||||
serverOptions.RecommendedOptions = options.NewRecommendedOptions(
|
||||
defaultAggregatorEtcdPathPrefix,
|
||||
aggregatorscheme.Codecs.LegacyCodec(), // codec is passed to etcd and hence not used
|
||||
)
|
||||
|
||||
cmd := newCommandStartAggregator(serverOptions)
|
||||
|
||||
serverOptions.AddFlags(cmd.Flags())
|
||||
cmd := newCommandStartAggregator()
|
||||
|
||||
return cli.Run(cmd)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user