Documentation ¶
Overview ¶
Package controller contains implementation and defition to create kubernetes controllers.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var DummyMetricsRecorder = dummy(0)
DummyMetricsRecorder is a dummy metrics recorder.
var ( // ErrControllerNotValid will be used when the controller has invalid configuration. ErrControllerNotValid = errors.New("controller not valid") )
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { // Handler is the controller handler. Handler Handler // Retriever is the controller retriever. Retriever Retriever // Leader elector will be used to use only one instance, if no set it will be // leader election will be ignored LeaderElector leaderelection.Runner // MetricsRecorder will record the controller metrics. MetricsRecorder MetricsRecorder // Logger will log messages of the controller. Logger log.Logger // name of the controller. Name string // ConcurrentWorkers is the number of concurrent workers the controller will have running processing events. ConcurrentWorkers int // ResyncInterval is the interval the controller will process all the selected resources. ResyncInterval time.Duration // ProcessingJobRetries is the number of times the job will try to reprocess the event before returning a real error. ProcessingJobRetries int // DisableResync will disable resyncing, if disabled the controller only will react on event updates and resync // all when it runs for the first time. // This is useful for secondary resource controllers (e.g pod controller of a primary controller based on deployments). DisableResync bool }
Config is the controller configuration.
type Controller ¶
type Controller interface { // Run runs the controller and blocks until the context is `Done`. Run(ctx context.Context) error }
Controller is the object that will implement the different kinds of controllers that will be running on the application.
func New ¶
func New(cfg *Config) (Controller, error)
New creates a new controller that can be configured using the cfg parameter.
type HandlerFunc ¶
HandlerFunc knows how to handle resource adds.
type MetricsRecorder ¶
type MetricsRecorder interface { // IncResourceEvent increments in one the metric records of a queued event. IncResourceEventQueued(ctx context.Context, controller string, isRequeue bool) // ObserveResourceInQueueDuration measures how long takes to dequeue a queued object. If the object is already in queue // it will be measured once, since the first time it was added to the queue. ObserveResourceInQueueDuration(ctx context.Context, controller string, queuedAt time.Time) // ObserveResourceProcessingDuration measures how long it takes to process a resources (handling). ObserveResourceProcessingDuration(ctx context.Context, controller string, success bool, startProcessingAt time.Time) // RegisterResourceQueueLengthFunc will register a function that will be called // by the metrics recorder to get the length of a queue at a given point in time. RegisterResourceQueueLengthFunc(controller string, f func(context.Context) int) error }
MetricsRecorder knows how to record metrics of a controller.
type Retriever ¶
type Retriever interface { List(ctx context.Context, options metav1.ListOptions) (runtime.Object, error) Watch(ctx context.Context, options metav1.ListOptions) (watch.Interface, error) }
Retriever is how a controller will retrieve the events on the resources from the APÎ server.
A Retriever is bound to a single type.
func MustRetrieverFromListerWatcher ¶
func MustRetrieverFromListerWatcher(lw cache.ListerWatcher) Retriever
MustRetrieverFromListerWatcher returns a Retriever from a Kubernetes client-go cache.ListerWatcher if there is an error it will panic.
func RetrieverFromListerWatcher ¶
func RetrieverFromListerWatcher(lw cache.ListerWatcher) (Retriever, error)
RetrieverFromListerWatcher returns a Retriever from a Kubernetes client-go cache.ListerWatcher. If the received lister watcher is nil it will error.