Consider composable non-CRD blocks for workflows / dependencies
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Beginne damit, die im Issue referenzierten Konzepte des workflow model, Reconciler und Resolver zu lesen, und untersuche anschließend AbstractNamedCRUDDependentResource sowie das Beispiel RedisConfigMap. Vergleiche die aktuellen CRD- und annotationsbasierten Deklarationen von Abhängigkeiten mit den angeforderten wiederverwendbaren Blöcken und den Abhängigkeiten pro Ressource. Als abgeschlossen gilt die Definition und Demonstration des unterstützten Umfangs und der API für zusammensetzbare Abhängigkeitsblöcke, einschließlich der Abdeckung wiederverwendeter Ressourcen wie ConfigMaps, Secrets und PersistentVolumeClaims.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Currently, all dependencies using the workflow model (seem to) require either declaring them in their own CRD, or expanding on the blocks used inside a single Reconciler.
It would be nice to be able to define a block of dependencies that is reusable in scope. In my particular case, this is so that we can create separate building blocks for commonly reused entities (see datastores, etc) that do not necessarily meet the case for having a standalone CRD.
This is for two reasons:
- The entities themselves maybe managed by other operators and we are considering dependency / ready states for the particular operator.
- The the individual deployments themselves do not reflect something that is of a desired scope for its own CRD. In several cases, this may be because we are developing an application and the particular implementation under the hood may change, or it is something that doesn't necessarily warrant its own set of description.
- The development of commons libraries for shared patterns between operators or, in the case of multi-controller operators, between different pieces.
Additionally, having a mechanism by which dependencies can be mapped at the level of the individual resource, especially in the case of multiple config maps, secrets, volumeclaims, etc, can then be declared at the point of the dependent resource.
class RedisConfigMap<T: HasMetadata>(val app: App) : AbstractNamedCRUDDependentResource<ConfigMap, T>(ConfigMap::class.java)
{
companion object {
fun <T: HasMetadata> withDiscriminator(app: App) : AbstractNamedCRUDDependentResource<ConfigMap, T> {
return RedisConfigMap<T>(app).withDiscriminator()
}
}
override fun desired(primary: T?, context: Context<T>?): ConfigMap {
return ConfigMapBuilder()
.withNewMetadata()
.withNamespace(primary!!.metadata.name)
.withName(name())
.endMetadata()
.addToData("redis-config", "")
.build()
}
override fun name(): String {
return "${app.appName}-redis-config"
}
Is an example of a piece of code I am working on (it's Kotlin, so, bear with me -- and thank you glasskube!)
It would be nice if, instead of piling the configuration into annotations on the Resolver, individual resources could also support declaring their dependencies.
- Vorherrschende Sprache
- Java
- Sterne
- 944
- Forks
- 242
- Ø Merge
- 1 T. 4 Std.
- Gemergte PRs (30 T.)
- 43
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus operator-framework/java-operator-sdk
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
operator-framework/java-operator-sdk#3621 · 5 Kommentare ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
operator-framework/java-operator-sdk#3617 · 1 Kommentar ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
operator-framework/java-operator-sdk#3615 · 1 Kommentar · 3 Reaktionen ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
operator-framework/java-operator-sdk#3568 · 1 Kommentar · 1 Reaktion ·
Alle Issues in operator-framework/java-operator-sdk
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
bug needs triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 94/100
objectionary/hone-maven-plugin#1061 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
spring-projects/spring-modulith#1895 ·