Replica management for MachineSet CRD
Ensures expected number of Machine replicas with consistent provider config; implements delete policies (Random/Oldest/Newest).
| Task | File | Notes |
|---|---|---|
| Reconcile loop | machineset_controller.go |
Main reconciliation logic |
| Delete policy | machineset_delete_policy.go |
Random/Oldest/Newest implementations |
| Replica sync | machineset_replica.go |
Scale up/down logic |
| Machine selection | machineset_selector.go |
Label-based machine matching |
| Test suite | machineset_suite_test.go |
Ginkgo envtest setup |
- Prefer komega over plain Gomega
- Each test uses
*_suite_test.gopattern - Tests run with
--race --trace --timeout=10m - Delete policy: Never delete machines with
Deletingfinalizer - Replica sync: Always check MachineSet status before scaling
- NEVER skip status update after replica change
- NEVER delete machines without checking delete policy
- ALWAYS use
komega.Eventually()for async state checks - ALWAYS respect
MachineSet.DeletionTimestampduring reconciliation
- MachineSet controller does NOT create instances (Machine controller does)
- Delete policy only applies when scaling down
- Machines with
machine.openshift.io/deletion-in-progressare protected