controller

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2026 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Event types
	EventTypeNormal  = "Normal"
	EventTypeWarning = "Warning"

	// Event reasons for SBDConfig operations
	ReasonSBDConfigReconciled       = "SBDConfigReconciled"
	ReasonDaemonSetManaged          = "DaemonSetManaged"
	ReasonServiceAccountCreated     = "ServiceAccountCreated"
	ReasonClusterRoleBindingCreated = "ClusterRoleBindingCreated"
	ReasonSCCManaged                = "SCCManaged"
	ReasonReconcileError            = "ReconcileError"
	ReasonDaemonSetError            = "DaemonSetError"
	ReasonServiceAccountError       = "ServiceAccountError"
	ReasonSCCError                  = "SCCError"
	ReasonValidationError           = "ValidationError"
	ReasonCleanupCompleted          = "CleanupCompleted"
	ReasonCleanupError              = "CleanupError"
	ReasonPVCManaged                = "PVCManaged"
	ReasonPVCError                  = "PVCError"
	ReasonSBDDeviceInitialized      = "SBDDeviceInitialized"
	ReasonSBDDeviceInitError        = "SBDDeviceInitWaiting"

	// Finalizer for cleanup operations
	SBDConfigFinalizerName = "sbd-operator.medik8s.io/cleanup"

	// OpenShift SCC constants
	SBDOperatorSCCName = "sbd-operator-sbd-agent-privileged"

	// Default image constants
	DefaultSBDAgentImage = "sbd-agent:latest"
	SBDOperatorName      = "sbd-operator"

	// Retry configuration constants for SBDConfig controller
	// MaxSBDConfigRetries is the maximum number of retry attempts for SBDConfig operations
	MaxSBDConfigRetries = 3
	// InitialSBDConfigRetryDelay is the initial delay between SBDConfig operation retries
	InitialSBDConfigRetryDelay = 500 * time.Millisecond
	// MaxSBDConfigRetryDelay is the maximum delay between SBDConfig operation retries
	MaxSBDConfigRetryDelay = 10 * time.Second
	// SBDConfigRetryBackoffFactor is the exponential backoff factor for SBDConfig operation retries
	SBDConfigRetryBackoffFactor = 2.0
)

Event types and reasons for SBDConfig controller

View Source
const (
	SBDRemediationFinalizer = "medik8s.io/sbd-remediation-finalizer"
	// ReasonCompleted indicates the remediation was completed successfully
	ReasonCompleted = "RemediationCompleted"
	// ReasonInProgress indicates the remediation is in progress
	ReasonInProgress = "RemediationInProgress"
	// ReasonFailed indicates the remediation failed
	ReasonFailed = "RemediationFailed"
	// ReasonAgentDelegated indicates the remediation was delegated to agents
	ReasonAgentDelegated = "RemediationAgentDelegated"
	// SBDAgentAnnotationKey marks a remediation created by sbd
	SBDAgentAnnotationKey = "medik8s.io/sbd-agent"
	// SBDAgentOOSTaintTimestampAnnotation records when OOS taint was placed on the node for this remediation
	SBDAgentOOSTaintTimestampAnnotation = "medik8s.io/sbd-oos-placed-at"

	// Fresh window and requeue delay for SBD agent remediations before placing OOS taint
	SBDAgentRemediationFreshAge     = 15 * time.Second * (5 + 2) //TODO mshitrit should work around dependecies to update the calculation to be: main.SBDDefaultTimeoutSec/2 * (main.MaxConsecutiveFailures+2)  if SBD_TIMEOUT_SECONDS defined, use instead of main.SBDDefaultTimeoutSec
	SBDAgentRemediationRequeueDelay = 10 * time.Second
	// SBDAgentOOSTaintStaleAge is the benchmark duration after which a remediation
	// is considered stale since OOS taint placement (annotation-based)
	SBDAgentOOSTaintStaleAge = 120 * time.Second

	// Status update retry configuration
	MaxStatusUpdateRetries    = 10
	InitialStatusUpdateDelay  = 100 * time.Millisecond
	MaxStatusUpdateDelay      = 5 * time.Second
	StatusUpdateBackoffFactor = 1.5

	// Kubernetes API retry configuration
	MaxKubernetesAPIRetries    = 3
	InitialKubernetesAPIDelay  = 200 * time.Millisecond
	MaxKubernetesAPIDelay      = 10 * time.Second
	KubernetesAPIBackoffFactor = 2.0

	// Event reasons for StorageBasedRemediation operations
	ReasonFencingInitiated     = "FencingInitiated"
	ReasonNodeFenced           = "NodeFenced"
	ReasonFencingFailed        = "FencingFailed"
	ReasonRemediationCompleted = "RemediationCompleted"
	ReasonRemediationFailed    = "RemediationFailed"
	ReasonRemediationInitiated = "RemediationInitiated"
	ReasonFinalizerProcessed   = "FinalizerProcessed"
	ReasonAgentCoordination    = "AgentCoordination"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type SBDConfigReconciler

type SBDConfigReconciler struct {
	client.Client
	Scheme   *runtime.Scheme
	Recorder record.EventRecorder

	// Filter log
	FilterLog logr.Logger
	// contains filtered or unexported fields
}

SBDConfigReconciler reconciles a SBDConfig object

func (*SBDConfigReconciler) Reconcile

func (r *SBDConfigReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error)

Reconcile is part of the main kubernetes reconciliation loop which aims to move the current state of the cluster closer to the desired state. For SBDConfig, this implementation deploys and manages the SBD Agent DaemonSet.

For more details, check Reconcile and its Result here: - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.21.0/pkg/reconcile

func (*SBDConfigReconciler) SetupWithManager

func (r *SBDConfigReconciler) SetupWithManager(mgr ctrl.Manager) error

SetupWithManager sets up the controller with the Manager.

type SBDRemediationReconciler

type SBDRemediationReconciler struct {
	client.Client
	Scheme   *runtime.Scheme
	Recorder record.EventRecorder
	// contains filtered or unexported fields
}

SBDRemediationReconciler reconciles a StorageBasedRemediation object This controller performs actual SBD fencing operations by writing fence messages to the SBD device.

func (*SBDRemediationReconciler) Reconcile

Reconcile is part of the main kubernetes reconciliation loop which aims to move the current state of the cluster closer to the desired state.

The StorageBasedRemediation controller performs actual fencing operations: 1. Validates the remediation request 2. Resolves target node name to node ID 3. Writes fence message to SBD device 4. Updates status based on fencing results

func (*SBDRemediationReconciler) SetNodeManager

func (r *SBDRemediationReconciler) SetNodeManager(nodeManager *sbdprotocol.NodeManager)

SetNodeManager sets the node manager for node ID resolution

func (*SBDRemediationReconciler) SetOwnNodeInfo

func (r *SBDRemediationReconciler) SetOwnNodeInfo(nodeID uint16, nodeName string)

SetOwnNodeInfo sets the own node information

func (*SBDRemediationReconciler) SetSBDDevices

func (s *SBDRemediationReconciler) SetSBDDevices(heartbeatDevice, fenceDevice mocks.BlockDeviceInterface)

setSBDDevices allows setting custom SBD devices (useful for testing)

func (*SBDRemediationReconciler) SetupWithManager

func (r *SBDRemediationReconciler) SetupWithManager(mgr ctrl.Manager, suffix string) error

SetupWithManager sets up the controller with the Manager.

Jump to

Keyboard shortcuts

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