Skip to content

Commit

Permalink
Inline manifestsSaver into the Metrics component
Browse files Browse the repository at this point in the history
The manifestSaver abstraction was not serving any special purpose.
Inlining it makes the code more straightforward.

Signed-off-by: Tom Wieczorek <[email protected]>
  • Loading branch information
twz123 committed Nov 14, 2024
1 parent 5fca1e2 commit 5a3f3ed
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
6 changes: 1 addition & 5 deletions cmd/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -460,11 +460,7 @@ func (c *command) start(ctx context.Context) error {
}

if c.EnableMetricsScraper {
metricsSaver, err := controller.NewManifestsSaver("metrics", c.K0sVars.DataDir)
if err != nil {
return fmt.Errorf("failed to create metrics manifests saver: %w", err)
}
metrics, err := controller.NewMetrics(c.K0sVars, metricsSaver, adminClientFactory, nodeConfig.Spec.Storage.Type)
metrics, err := controller.NewMetrics(c.K0sVars, adminClientFactory, nodeConfig.Spec.Storage.Type)
if err != nil {
return fmt.Errorf("failed to create metrics reconciler: %w", err)
}
Expand Down
26 changes: 18 additions & 8 deletions pkg/component/controller/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,18 @@ import (
"net/http"
"os"
"path"
"path/filepath"
"time"

"k8s.io/client-go/rest"

"github.com/k0sproject/k0s/internal/pkg/dir"
"github.com/k0sproject/k0s/internal/pkg/file"
"github.com/k0sproject/k0s/internal/pkg/templatewriter"
"github.com/k0sproject/k0s/pkg/apis/k0s/v1beta1"
"github.com/k0sproject/k0s/pkg/component/manager"
"github.com/k0sproject/k0s/pkg/config"
"github.com/k0sproject/k0s/pkg/constant"
kubeutil "github.com/k0sproject/k0s/pkg/kubernetes"
"github.com/sirupsen/logrus"
)
Expand All @@ -48,7 +52,6 @@ type Metrics struct {

hostname string
K0sVars *config.CfgVars
saver manifestsSaver
restClient rest.Interface
storageType v1beta1.StorageType

Expand All @@ -61,7 +64,7 @@ var _ manager.Component = (*Metrics)(nil)
var _ manager.Reconciler = (*Metrics)(nil)

// NewMetrics creates new Metrics reconciler
func NewMetrics(k0sVars *config.CfgVars, saver manifestsSaver, clientCF kubeutil.ClientFactoryInterface, storageType v1beta1.StorageType) (*Metrics, error) {
func NewMetrics(k0sVars *config.CfgVars, clientCF kubeutil.ClientFactoryInterface, storageType v1beta1.StorageType) (*Metrics, error) {
hostname, err := os.Hostname()
if err != nil {
return nil, err
Expand All @@ -82,13 +85,16 @@ func NewMetrics(k0sVars *config.CfgVars, saver manifestsSaver, clientCF kubeutil
storageType: storageType,
hostname: hostname,
K0sVars: k0sVars,
saver: saver,
restClient: restClient,
}, nil
}

// Init does nothing
func (m *Metrics) Init(_ context.Context) error {
// Init implements [manager.Component].
func (m *Metrics) Init(context.Context) error {
if err := dir.Init(filepath.Join(m.K0sVars.ManifestsDir, "metrics"), constant.ManifestsDirMode); err != nil {
return err
}

var j *job
j, err := m.newJob("kube-scheduler", "https://localhost:10259/metrics")
if err != nil {
Expand Down Expand Up @@ -121,7 +127,8 @@ func (m *Metrics) Init(_ context.Context) error {
return nil
}

// Run runs the metric server reconciler
// Start implements [manager.Component].
// Starts the metric server reconciler.
func (m *Metrics) Start(ctx context.Context) error {
ctx, m.tickerDone = context.WithCancel(ctx)

Expand All @@ -132,7 +139,8 @@ func (m *Metrics) Start(ctx context.Context) error {
return nil
}

// Stop stops the reconciler
// Stop implements [manager.Component].
// Stops the metric server reconciler.
func (m *Metrics) Stop() error {
if m.tickerDone != nil {
m.tickerDone()
Expand All @@ -159,7 +167,9 @@ func (m *Metrics) Reconcile(_ context.Context, clusterConfig *v1beta1.ClusterCon
if err != nil {
return err
}
err = m.saver.Save("pushgateway.yaml", output.Bytes())
err = file.AtomicWithTarget(filepath.Join(m.K0sVars.ManifestsDir, "metrics", "pushgateway.yaml")).
WithPermissions(constant.CertMode).
Write(output.Bytes())
if err != nil {
return err
}
Expand Down

0 comments on commit 5a3f3ed

Please sign in to comment.