operator-framework / operator-framework/java-operator-sdk
Simple core and layered reconciler implementation for v6
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 944
- Forks
- 242
- Ø Merge
- 1 T. 4 Std.
- Gemergte PRs (30 T.)
- 43
Beschreibung
TL;DR We could make the core of the framework simpler by introducing a more layered architecture. While keeping the migration for the users trivial.
Problem definition
Currently the core of a framework has baked logic to work with higher level logic like:
- Adding finalizers by implementing
Cleanerinterface - Managed workflows inside the controller
- Automatic generation filtering
- Catching error and error handling, thus
updateErrorStatusmethod.
We recently added a generic mode Trigger reconciliation on all events
While it makes a nice API for the users, an maybe even nice out of the box experience, makes the core of the framework more complex - and even for users I assume hard to follow, if some wants to read the code.
What we could do in next major version is to layer those functionalities:
- The core will just work on top of a simplified
Reconcilerinterface. What will handle basically be the all event mode. So we won't support finalizers,UpdateControl.patch methods,and most of the functionality ofReconciliationDispatcherwould be moved to an abstract Reconciler implementation:GenericReconciler. - Retry, Rate limiting would stay as it is now
- The managed workflow handling would an additional extension of
GenericReconciler:WorkflowReconciler. That will handle the managed workflow discovery, their configuration etc.
Migration
Note that migration for the users could be kept trivial, basically just extending the GenericReconciler / WorkflowReconciler (Where we could support the UpdateControl etc as is now) instead of implementing Reconciler.
Pros
- The core would be much simpler
- The logic around these extended reconcilers much easier to be followed by the users (from source code)
Cons
- This does not provide direct value for users, other than easier to handle
Notes
- before we make a decision, we should explore this first in a proptotype
- TODO: proper design description
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Lies die aktuellen Verantwortlichkeiten von Reconciler und ReconciliationDispatcher, einschließlich updateErrorStatus, und erstelle anschließend einen Prototyp der vorgeschlagenen Ebenen GenericReconciler und WorkflowReconciler. Als abgeschlossen gilt die Arbeit, wenn ein funktionierender Prototyp und eine geeignete Designbeschreibung vorliegen, die die grundlegende Aufteilung erläutert und die Migration für bestehende Benutzer trivial hält.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java, kubernetes
- Bereich
- backend-api-design
- Issue-Typ
- Refactoring
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Ruhig
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100