operator-framework / operator-framework/java-operator-sdk

Simple core and layered reconciler implementation for v6

Aperta
#3,563 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Java
Stelle
944
Fork
242
Merge medio
1g 4h
PR unite (30g)
43

Descrizione

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 Cleaner interface
  • Managed workflows inside the controller
  • Automatic generation filtering
  • Catching error and error handling, thus updateErrorStatus method.

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:

  1. The core will just work on top of a simplified Reconciler interface. What will handle basically be the all event mode. So we won't support finalizers, UpdateControl.patch methods ,and most of the functionality of ReconciliationDispatcher would be moved to an abstract Reconciler implementation: GenericReconciler.
  2. Retry, Rate limiting would stay as it is now
  3. 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

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Leggi le responsabilità attuali di Reconciler e ReconciliationDispatcher, incluso updateErrorStatus, quindi realizza un prototipo dei livelli proposti GenericReconciler e WorkflowReconciler. Il lavoro è completato quando sono disponibili un prototipo funzionante e una descrizione progettuale adeguata che spieghi la separazione fondamentale e mantenga banale la migrazione per gli utenti esistenti.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java, kubernetes
Ambito
backend-api-design
Tipo di issue
Refactoring
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Tranquilla
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.