Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove Catalogmetadata CRD and serve CatalogMetadata with aggregated apiserver #39

Closed
anik120 opened this issue Apr 13, 2023 · 4 comments
Assignees

Comments

@anik120
Copy link
Collaborator

anik120 commented Apr 13, 2023

Motivation:

The child resources created by the Catalog controller are registered as CRDs, which are served by the main kube apiserver. These resources should instead be served by an aggregated apiservice, so that the consumption and delivery of these API objects can be customized according to catalogd's use cases (eg custom storage for the objects so that the main etcd storage is not being misused, custom CRUD permissions for the objects like "only the catalog controller can CRUD the objects, etc).

Additional background: https://hackmd.io/-Rrvhgb3Q7m9HYZW2gxQtQ

Goal:

Configure the apiserver to administer the child resources, and get rid of the CRDs (expect for the catalogsource CRD, since that doesn't pose any resource constraint risk for the main apiserver)

@joelanford
Copy link
Member

For reference, my prototype that implements this is located at https://github.com/joelanford/catalogd

I definitely think we should copy/paste code from there and/or use it as inspiration/reference to jumpstart this work.

@anik120 anik120 self-assigned this May 15, 2023
@joelanford joelanford modified the milestones: v0.2.0, v0.3.0 May 30, 2023
@anik120 anik120 removed the olm-v1/m4 label May 30, 2023
@anik120 anik120 changed the title Remove package/bundlemetadata/catalogmetadata CRDs and serve with aggregated apiserver Remove Catalogmetadata CRD and serve CatalogMetadata with aggregated apiserver Jun 30, 2023
anik120 added a commit to anik120/catalogd that referenced this issue Jul 2, 2023
Closes operator-framework#39

Signed-off-by: Anik <anikbhattacharya93@gmail.com>
anik120 added a commit to anik120/catalogd that referenced this issue Jul 2, 2023
Closes operator-framework#39

Signed-off-by: Anik <anikbhattacharya93@gmail.com>
anik120 added a commit to anik120/catalogd that referenced this issue Jul 2, 2023
Closes operator-framework#39

Signed-off-by: Anik <anikbhattacharya93@gmail.com>
@anik120
Copy link
Collaborator Author

anik120 commented Jul 2, 2023

@joelanford for the PR linked above, I decided to take a slightly different route for now while I was studying your prototype. Looks like the controller and the server is the same process, and the data is also stored in the same process. ie the data is stored and accessed within the same process.

I have a slightly modified proposal:

Screenshot 2023-07-02 at 7 31 08 PM

☝🏽 that arch decouples the processor of the request (for adding a new catalog to the cluster) from the storage, and the processor and the storage from the server of the data. This'll allow us to isolate problems and build out solutions for them separately. For eg the PR uses an etcd store, but the etcd store can be switched out for a bolt db easily without affecting any other part of the solution. Or for eg, server has a single replica serving requests in a dedicated cluster, but multiple replicas are deployed for serving requests in a hosted cluster.

Building the entire solution in a single process leaves very little wiggle room for customizing solutions for different environments, so my proposal is to start off with controller+etcd storage + server, and then iterate over each part of that arch.

anik120 added a commit to anik120/catalogd that referenced this issue Jul 3, 2023
Closes operator-framework#39

Signed-off-by: Anik <anikbhattacharya93@gmail.com>
anik120 added a commit to anik120/catalogd that referenced this issue Jul 3, 2023
Closes operator-framework#39

Signed-off-by: Anik <anikbhattacharya93@gmail.com>
anik120 added a commit to anik120/catalogd that referenced this issue Jul 3, 2023
Closes operator-framework#39

Signed-off-by: Anik <anikbhattacharya93@gmail.com>
anik120 added a commit to anik120/catalogd that referenced this issue Jul 3, 2023
Closes operator-framework#39

Signed-off-by: Anik <anikbhattacharya93@gmail.com>
@anik120 anik120 removed the olm-v1/m5 label Jul 10, 2023
@anik120
Copy link
Collaborator Author

anik120 commented Jul 10, 2023

Moving this out of the milestone since we want to investigate taking a different route than an apiserver

@everettraven everettraven removed this from the v0.3.0 milestone Jul 17, 2023
@everettraven
Copy link
Collaborator

Closing this since we decided to go the route of an HTTP server for serving catalog content. See #113 , #114, and #139 for more information

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

4 participants