operatingsystemconfig

package
v1.135.3 Latest Latest
Warning

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

Go to latest
Published: Feb 20, 2026 License: Apache-2.0 Imports: 75 Imported by: 1

Documentation

Index

Constants

View Source
const ControllerName = "operatingsystemconfig"

ControllerName is the name of this controller.

Variables

View Source
var (

	// KubeletHealthCheckRetryInterval is the interval at which the kubelet health check is retried. Exposed for testing.
	KubeletHealthCheckRetryInterval = 5 * time.Second
	// KubeletHealthCheckRetryTimeout is the timeout after which the kubelet health check is considered failed. Exposed for testing.
	KubeletHealthCheckRetryTimeout = 5 * time.Minute

	// OSUpdateRetryInterval is the interval between OS update retries. Exported for testing.
	OSUpdateRetryInterval = 30 * time.Second
	// OSUpdateRetryTimeout is the timeout for OS update retries. Exported for testing.
	OSUpdateRetryTimeout = 5 * time.Minute
	// RequeueAfterRestart defines whether RequeueAfter is supposed to be triggered on restart of gardener-node-agent. Exposed for testing.
	RequeueAfterRestart time.Duration
)
View Source
var Exec = func(ctx context.Context, command string, arg ...string) ([]byte, error) {
	return exec.CommandContext(ctx, command, arg...).Output()
}

Exec is the execution function to invoke outside binaries. Exposed for testing.

View Source
var ExecCommandCombinedOutput = func(ctx context.Context, command string, args ...string) ([]byte, error) {
	return exec.CommandContext(ctx, command, args...).CombinedOutput()
}

ExecCommandCombinedOutput executes the given command with the given arguments and returns the combined output. Exposed for testing.

View Source
var GetOSVersion = func(inPlaceUpdates *extensionsv1alpha1.InPlaceUpdates, fs afero.Afero) (*string, error) {
	if inPlaceUpdates == nil {
		return nil, nil
	}

	os, err := getOperatingSystem(fs)
	if err != nil {
		return nil, fmt.Errorf("unable to get operating system name: %w", err)
	}

	version := nodeagentconfigv1alpha1.OSVersionRegex.FindString(os)
	if version == "" {
		return nil, fmt.Errorf("unable to find version in %q with regex: %s", os, nodeagentconfigv1alpha1.OSVersionRegex.String())
	}
	return ptr.To(version), nil
}

GetOSVersion returns the current operating system version.

View Source
var RequestAndStoreKubeconfig = nodeagent.RequestAndStoreKubeconfig

RequestAndStoreKubeconfig is an alias for `nodeagent.RequestAndStoreKubeconfig`. Exposed for tests.

Functions

func ComputeCredentialsRotationChanges added in v1.121.5

func ComputeCredentialsRotationChanges(oldOSC, newOSC *extensionsv1alpha1.OperatingSystemConfig) (bool, bool)

ComputeCredentialsRotationChanges computes if the credentials rotation has changed between the old and new OSC.

func ComputeKubeletConfigChange added in v1.118.0

func ComputeKubeletConfigChange(oldConfig, newConfig *kubeletconfigv1beta1.KubeletConfiguration) (bool, bool, error)

ComputeKubeletConfigChange computes changes in the kubelet configuration relevant for in-place updates. This function needs to be updated when the kubelet configuration triggers in https://github.com/gardener/gardener/blob/master/docs/usage/shoot-operations/shoot_updates.md#rolling-update-triggers are changed.

func IsOsVersionUpToDate added in v1.121.5

func IsOsVersionUpToDate(currentOSVersion *string, newOSC *extensionsv1alpha1.OperatingSystemConfig) (bool, error)

IsOsVersionUpToDate checks if the current OS version is up to date with the version specified in the new OSC.

Types

type Reconciler

type Reconciler struct {
	Client        client.Client
	Config        nodeagentconfigv1alpha1.OperatingSystemConfigControllerConfig
	ConfigDir     string
	Recorder      record.EventRecorder
	DBus          dbus.DBus
	FS            afero.Afero
	Extractor     registry.Extractor
	CancelContext context.CancelFunc
	HostName      string
	NodeName      string
	MachineName   string
	// SkipWritingStateFiles is used by gardenadm when it deploys the provision OSC. In this case, both the "last
	// applied configuration" and the "last computed changes" files should not be written. Otherwise,
	// gardener-node-agent might delete files which exist in the provision OSC only after it comes up and reconciles the
	// actual OSC, or not reconcile them at all.
	SkipWritingStateFiles bool

	// Channel and TokenSecretSyncConfigs are used by the reconciler to trigger events for the token reconciler during an in-place service-account-key rotation.
	Channel                chan event.TypedGenericEvent[*corev1.Secret]
	TokenSecretSyncConfigs []nodeagentconfigv1alpha1.TokenSecretSyncConfig
}

Reconciler decodes the OperatingSystemConfig resources from secrets and applies the systemd units and files to the node.

func (*Reconciler) AddToManager

func (r *Reconciler) AddToManager(ctx context.Context, mgr manager.Manager) error

AddToManager adds Reconciler to the given manager.

func (*Reconciler) EnqueueWithJitterDelay

func (r *Reconciler) EnqueueWithJitterDelay(ctx context.Context, log logr.Logger) handler.EventHandler

EnqueueWithJitterDelay returns handler.Funcs which enqueues the object with a random jitter duration for 'update' events. 'Create' events are enqueued immediately.

func (*Reconciler) NodeReadyForUpdate added in v1.118.0

func (r *Reconciler) NodeReadyForUpdate() predicate.Predicate

NodeReadyForUpdate returns a predicate that returns - true for Create event if the new node has the InPlaceUpdate condition with the reason ReadyForUpdate. - true for Update event if the new node has the InPlaceUpdate condition with the reason ReadyForUpdate and old node doesn't. - false for Delete and Generic events.

func (*Reconciler) NodeToSecretMapper added in v1.118.0

func (r *Reconciler) NodeToSecretMapper() handler.MapFunc

NodeToSecretMapper returns a mapper that returns requests for a secret based on its node.

func (*Reconciler) Reconcile

func (r *Reconciler) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error)

Reconcile decodes the OperatingSystemConfig resources from secrets and applies the systemd units and files to the node.

func (*Reconciler) ReconcileContainerdConfig added in v1.100.0

func (r *Reconciler) ReconcileContainerdConfig(ctx context.Context, log logr.Logger, osc *extensionsv1alpha1.OperatingSystemConfig) error

ReconcileContainerdConfig sets required values of the given containerd configuration.

func (*Reconciler) ReconcileContainerdRegistries added in v1.100.0

func (r *Reconciler) ReconcileContainerdRegistries(ctx context.Context, log logr.Logger, changes *operatingSystemConfigChanges) (func() error, error)

ReconcileContainerdRegistries configures desired registries for containerd and cleans up abandoned ones. Registries without readiness probes are added synchronously and related errors are returned immediately. Registries with configured readiness probes are added asynchronously and must be waited for by invoking the returned function.

func (*Reconciler) SecretPredicate

func (r *Reconciler) SecretPredicate() predicate.Predicate

SecretPredicate returns the predicate for Secret events.

Jump to

Keyboard shortcuts

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