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

determine status of /api/v1/index/retrieve endpoint before Rekor 1.0 release #1021

Closed
Tracked by #1005
bobcallaway opened this issue Sep 1, 2022 · 5 comments · Fixed by #1073
Closed
Tracked by #1005

determine status of /api/v1/index/retrieve endpoint before Rekor 1.0 release #1021

bobcallaway opened this issue Sep 1, 2022 · 5 comments · Fixed by #1073
Assignees
Labels
enhancement New feature or request ga_blocker

Comments

@bobcallaway
Copy link
Member

Description

The current implementation of searching the log index is still "proof-of-concept" quality:

  • Indices are inserted into the index in a best-effort fashion (as there is no transaction support for atomically committing to both the index and the transaction log currently)
  • If there are errors generating index keys for an entry, those errors are logged but are not exposed to clients.
  • There is no background job presently that attempts to ensure that all possible indices for a logged entry are in the index

Proposal

I believe the right long term design likely involves emitting an event from Rekor to an external pub/sub system and building an index based on that event, versus having a tight coupling within the Rekor runtime.

I would propose that we either:

  • mark the endpoint as experimental and look to re-implement this capability in a future release (ideally quickly post 1.0); the experimental flag would mean that there are no security or consistency guarantees from this API endpoint, and that we reserve the right to change/remove this endpoint as deemed appropriate in the future.
  • remove the /api/v1/index/retrieve endpoint completely before Rekor 1.0

@asraa @priyawadhwa @dlorenc @SantiagoTorres @lukehinds @var-sdk @haydentherapper

@bobcallaway bobcallaway added enhancement New feature or request ga_candidate Proposed blocking issue for GA release labels Sep 1, 2022
@bobcallaway bobcallaway mentioned this issue Sep 1, 2022
7 tasks
@priyawadhwa
Copy link
Contributor

I don't have a strong opinion, am good with either option. Slightly leaning towards removing it, as it might make it easier to implement the long term design later on and doesn't come with any sort of time pressure to do it quickly post 1.0

@haydentherapper
Copy link
Contributor

I'm hesitant to entirely remove search before GA because there is client reliance on the search capabilities. If we want to at least separate search into its own repo, we could remove it from the repo, operate it as its own "experimental" lightweight service, and best-effort push entries from Rekor to the service (effectively having the same guarantees as now, but with the ability to iterate). Search could be served on the same API endpoint to not break clients.

Long term, I am in agreement that search should be removed from Rekor and maintained separately. Sigstore should maintain its own search cluster with a minimal set of indices in my opinion, and we should encourage the community to operate more complex search capabilities in their own instances. I'd also like to make search indices verifiable.

Implementation details to chat about later: I think it can be implemented either with pub/sub to entirely decouple it from Rekor, or having log monitors also maintain search indices by requesting all entries between two checkpoints that have been verified for consistency.

@dlorenc
Copy link
Member

dlorenc commented Sep 1, 2022

having log monitors also maintain search indices by requesting all entries between two checkpoints that have been verified for consistency.

I like having log monitors back the searches, they can provide more guarantees than pub/sub would be able to. But I also like the idea of having pub/sub support for other use cases!

@priyawadhwa
Copy link
Contributor

Shall we go with marking it experimental for now then?

@bobcallaway
Copy link
Member Author

it seems like we have consensus to mark as experimental.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request ga_blocker
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

4 participants