controller

package
v0.28.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2023 License: Apache-2.0 Imports: 13 Imported by: 25

Documentation

Overview

Package controller offers embeddable structs for use in your controller and underlying reconcilers, to help with conforming to GitOps Toolkit conventions.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetDefaultRateLimiter added in v0.26.0

func GetDefaultRateLimiter() ratelimiter.RateLimiter

GetDefaultRateLimiter returns a new exponential failure ratelimiter.RateLimiter with the default configuration.

func GetRateLimiter added in v0.14.0

func GetRateLimiter(opts RateLimiterOptions) ratelimiter.RateLimiter

GetRateLimiter returns a new exponential failure ratelimiter.RateLimiter based on RateLimiterOptions.

Types

type Metrics

type Metrics struct {
	Scheme          *runtime.Scheme
	MetricsRecorder *metrics.Recorder
}

Metrics is a helper struct that adds the capability for recording GitOps Toolkit standard metrics to a reconciler.

Use it by embedding it in your reconciler struct:

	type MyTypeReconciler {
 	client.Client
     // ... etc.
     controller.Metrics
	}

Following the GitOps Toolkit conventions, API types used in GOTK SHOULD implement conditions.Getter to work with status condition types, and this convention MUST be followed to be able to record metrics using this helper.

Use MustMakeMetrics to create a working Metrics value; you can supply the same value to all reconcilers.

Once initialised, metrics can be recorded by calling one of the available `Record*` methods.

func MustMakeMetrics

func MustMakeMetrics(mgr ctrl.Manager) Metrics

MustMakeMetrics creates a new Metrics with a new metrics.Recorder, and the Metrics.Scheme set to that of the given mgr. It attempts to register the metrics collectors in the controller-runtime metrics registry, which panics upon the first registration that causes an error. Which usually happens if you try to initialise a Metrics value twice for your controller.

func (Metrics) RecordCondition added in v0.13.0

func (m Metrics) RecordCondition(ctx context.Context, obj conditions.Getter, conditionType string)

RecordCondition records the status of the given conditionType for the given obj.

func (Metrics) RecordDuration

func (m Metrics) RecordDuration(ctx context.Context, obj conditions.Getter, startTime time.Time)

RecordDuration records the duration of a reconcile attempt for the given obj based on the given startTime.

func (Metrics) RecordReadiness added in v0.13.0

func (m Metrics) RecordReadiness(ctx context.Context, obj conditions.Getter)

RecordReadiness records the meta.ReadyCondition status for the given obj.

func (Metrics) RecordReconciling added in v0.13.0

func (m Metrics) RecordReconciling(ctx context.Context, obj conditions.Getter)

RecordReconciling records the meta.ReconcilingCondition status for the given obj.

func (Metrics) RecordStalled added in v0.13.0

func (m Metrics) RecordStalled(ctx context.Context, obj conditions.Getter)

RecordStalled records the meta.StalledCondition status for the given obj.

func (Metrics) RecordSuspend

func (m Metrics) RecordSuspend(ctx context.Context, obj conditions.Getter, suspend bool)

RecordSuspend records the suspension of the given obj based on the given suspend value.

type RateLimiterOptions added in v0.14.0

type RateLimiterOptions struct {
	// MinRetryDelay represents the minimum amount of time in which an
	// object being reconciled will have to wait before a retry.
	MinRetryDelay time.Duration

	// MaxRetryDelay represents the maximum amount of time in which an
	// object being reconciled will have to wait before a retry.
	MaxRetryDelay time.Duration
}

RateLimiterOptions defines the configurable options for rate limiters used on reconcilers.

func (*RateLimiterOptions) BindFlags added in v0.14.0

func (o *RateLimiterOptions) BindFlags(fs *pflag.FlagSet)

BindFlags will parse the given pflag.FlagSet for the controller and set the RateLimiterOptions accordingly.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL