How openshift/managed-upgrade-operator works
Managed Upgrade Operator orchestrates OpenShift in-place upgrades; OpenShift itself performs the upgrade. The documented workflow begins when an UpgradeConfig is watched, checks upgrade history and readiness, then runs ordered steps and records progress in status history. Supporting branches manage provider-supplied configuration, node draining and worker progress, health checks, capacity scaling, Alertmanager silences, notifications, and metrics. Some step wiring is inferred from documented capabilities and package roles; unsampled implementation details are not expanded.
Main entry points: upgrader.go Cluster upgrader · upgradeconfig_controller.go UpgradeConfig controller · eventmanager.go Event manager · upgradeconfig_types.go UpgradeConfig
Components 23
Upgrade control
- UpgradeConfig
api/v1alpha1/upgradeconfig_types.go - UpgradeConfig controller
controllers/upgradeconfig/upgradeconfig_controller.go - UpgradeConfig manager
pkg/upgradeconfigmanager/upgradeconfigmanager.go - Spec provider
pkg/specprovider/specprovider.go - Upgrade validation
pkg/validation/validation.go - Upgrade scheduler
pkg/scheduler/scheduler.go
Upgrade steps
- Cluster upgrader
pkg/upgraders/upgrader.go - Health checks
pkg/upgraders/healthcheckstep.go - Availability checks
pkg/availabilitychecks/availabilitychecks.go - Maintenance step
pkg/upgraders/maintenancestep.go - Worker scaling
pkg/upgraders/scalerstep.go
Node operations
- MachineSet scaler
pkg/scaler/machineSetScaler.go - Node keeper controller
controllers/nodekeeper/nodekeeper_controller.go - Upgrade machinery
pkg/machinery/machinery.go - Node drain strategies
pkg/drain/nodeDrainStrategy.go - MachineConfigPool controller
controllers/machineconfigpool/machineconfigpool_controller.go
External integrations
- Alert silences
pkg/maintenance/alertmanagerMaintenance.go - Alertmanager
- OpenShift cluster
- Upgrade notifications
pkg/notifier/notifier.go
Status and telemetry
- Event manager
pkg/eventmanager/eventmanager.go - Metrics
pkg/metrics/metrics.go
Other components
- Cluster operator
Connections 24
- Cluster operator → UpgradeConfig: creates or edits
- UpgradeConfig → UpgradeConfig controller: watched by
- UpgradeConfig controller → UpgradeConfig manager: refreshes config
- UpgradeConfig manager → Spec provider: gets specs
- UpgradeConfig controller → Upgrade validation: validates
- UpgradeConfig controller → Upgrade scheduler: checks readiness
- UpgradeConfig controller → Cluster upgrader: starts or maintains
- Cluster upgrader → Health checks: runs steps
- Cluster upgrader → Availability checks: runs checks
- Cluster upgrader → Maintenance step: runs steps
- Maintenance step → Alert silences: manages silences
- Alert silences → Alertmanager: creates and updates
- Cluster upgrader → Worker scaling: runs steps
- Worker scaling → MachineSet scaler: scales capacity
- Cluster upgrader → OpenShift cluster: invokes cluster upgrade
- Node keeper controller → Upgrade machinery: checks upgrade state
- Node keeper controller → Node drain strategies: executes drain
- MachineConfigPool controller → UpgradeConfig manager: reads upgrade history
- MachineConfigPool controller → UpgradeConfig: writes progress
- UpgradeConfig controller → UpgradeConfig: updates status history
- Cluster upgrader → Event manager: reports events
- Event manager → UpgradeConfig manager: reads config
- Event manager → Metrics: checks sent state
- Event manager → Upgrade notifications: sends notifications