registry-operator / adr

Collection of Architectural Decision Records (ADRs)
The Unlicense
0 stars 2 forks source link

[registry-operator]: operator/controller framework #1

Closed shanduur closed 4 months ago

shanduur commented 4 months ago

Context and Problem Statement

The registry-operator should be a critical component in managing CNCF Distribution Registry instances efficiently. However, selecting the appropriate base operator/controller framework is pivotal for ensuring the scalability, maintainability, and extensibility of the registry-operator.

Considerations:

Considered Options

shanduur commented 4 months ago

Both Operator-SDK and Kubebuilder are state of the art tools. However my personal preference lays with Kubebuilder:

Discard my comment, the project generated by two tools is almost identical, so no need to worry about OSDK.

purpleturtll commented 4 months ago

I generated scaffolding with both kubebuilder and operator-sdk to check what is the difference.

List of what operator-sdk generates that is not generated by kubebuilder:

Basic development flow is the same for both projects:

If we want to support OLM I don't see a reason to not scaffold with operator-sdk. If we get automation in place to test the OLM installation and run Scorecard tests I don't think there is any added complexity (apart from thinking about OLM installation if something breaks).

purpleturtll commented 4 months ago

Do we want to seriously consider Rust? I think this would change the scope of the project for initial contributors from writing an operator to learning Rust and writing an operator? I would be up for the challenge but I think we would need to be unanimous in this decision.

shanduur commented 4 months ago

As I really would like to use Rust, I am nowhere near to be proficient in it, and writing the operator would probably require using Tokio, which is one extra level of complexity.

Also, if no one of us is proficient, then I feel like the quality of code and development speed would suffer.

I also tested the OSDK vs KB, and yeah, seems fine to me to use the former one 🔥

CC: @majabojarska @malgorzatadutka

malgorzatadutka commented 4 months ago

I'd like to be proficient in Go rather than starting with new language. The second thought Kubebuilder and Operator-SDK are more mature.

shanduur commented 4 months ago

Looks like we have a consensus - let's use Operator-SDK to bootstrap the repository!