controller-runtimesigs.k8s.io/controller-runtime/pkg/internal/controller Index | Files | Directories

package controller

import "sigs.k8s.io/controller-runtime/pkg/internal/controller"

Index

Functions

func ReconcileIDFromContext

func ReconcileIDFromContext(ctx context.Context) types.UID

ReconcileIDFromContext gets the reconcileID from the current context.

Types

type Controller

type Controller[request comparable] struct {
	// Name is used to uniquely identify a Controller in tracing, logging and monitoring.  Name is required.
	Name string

	// MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.
	MaxConcurrentReconciles int

	// Reconciler is a function that can be called at any time with the Name / Namespace of an object and
	// ensures that the state of the system matches the state specified in the object.
	// Defaults to the DefaultReconcileFunc.
	Do reconcile.TypedReconciler[request]

	// RateLimiter is used to limit how frequently requests may be queued into the work queue.
	RateLimiter workqueue.TypedRateLimiter[request]

	// NewQueue constructs the queue for this controller once the controller is ready to start.
	// This is a func because the standard Kubernetes work queues start themselves immediately, which
	// leads to goroutine leaks if something calls controller.New repeatedly.
	NewQueue func(controllerName string, rateLimiter workqueue.TypedRateLimiter[request]) workqueue.TypedRateLimitingInterface[request]

	// Queue is an listeningQueue that listens for events from Informers and adds object keys to
	// the Queue for processing
	Queue priorityqueue.PriorityQueue[request]

	// Started is true if the Controller has been Started
	Started bool

	// CacheSyncTimeout refers to the time limit set on waiting for cache to sync
	// Defaults to 2 minutes if not set.
	CacheSyncTimeout time.Duration

	// LogConstructor is used to construct a logger to then log messages to users during reconciliation,
	// or for example when a watch is started.
	// Note: LogConstructor has to be able to handle nil requests as we are also using it
	// outside the context of a reconciliation.
	LogConstructor func(request *request) logr.Logger

	// RecoverPanic indicates whether the panic caused by reconcile should be recovered.
	// Defaults to true.
	RecoverPanic *bool

	// LeaderElected indicates whether the controller is leader elected or always running.
	LeaderElected *bool
	// contains filtered or unexported fields
}

Controller implements controller.Controller.

func (*Controller[request]) GetLogger

func (c *Controller[request]) GetLogger() logr.Logger

GetLogger returns this controller's logger.

func (*Controller[request]) NeedLeaderElection

func (c *Controller[request]) NeedLeaderElection() bool

NeedLeaderElection implements the manager.LeaderElectionRunnable interface.

func (*Controller[request]) Reconcile

func (c *Controller[request]) Reconcile(ctx context.Context, req request) (_ reconcile.Result, err error)

Reconcile implements reconcile.Reconciler.

func (*Controller[request]) Start

func (c *Controller[request]) Start(ctx context.Context) error

Start implements controller.Controller.

func (*Controller[request]) Watch

func (c *Controller[request]) Watch(src source.TypedSource[request]) error

Watch implements controller.Controller.

Source Files

controller.go

Directories

PathSynopsis
pkg/internal/controller/metrics
Version
v0.20.4 (latest)
Published
Mar 24, 2025
Platform
linux/amd64
Imports
17 packages
Last checked
2 days ago

Tools for package owners.