Epic: Integrate public API's into supervisor
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 13.8k
- Forks
- 1.4k
- Avg merge
- 17h 58m
- Merged PRs (30d)
- 5
Description
Summary
Migrate supervisor from Server to Public API.
Context
Why we chose to migrate Supervisor to the new Public API? In order to validate Public API we started with https://github.com/gitpod-io/gitpod/issues/9757, but VS Code Desktop depends on SH installations which block migrations till Public API is reliable. VS Code as well does not have interesting use cases to validate usability and reliabiltiy of the API, i.e. pooling vs streaming, and does not generate enough traffic. We have also had incidents with supervisor working against Server API. We could not react promptly because we don't have any client observability [1], additionally jsonrpc library which we use on go client side has very verbose logging [2]. Because of all these reasons it looks sensible to migrate supervisor first:
- it has a tricky use cases, like listening to workspace status updates to promptly update UI state
- Used in each workspace and will generate enough traffic.
- Easy to migrate since it is self contained in each installation.
- Improves reliability by using client side grpc observability.
- Improves security by giving us control of logging.
Value
- Validate usability and reliability of Public API.
- Improve reliability and security of connection between supervisor and Public APi.
Acceptance Criteria
- Supervisor don't use Server API anymore, but completely relies on Public API.
Measurement
- 99% of requests from supervisor to Public API should be successful. SLO
Remaining Work
- Enable PublicAPI in supervisor experimentally, to dog food and check also stability of public API notion
- Production configcat
- https://github.com/gitpod-io/gitpod/pull/15403
- Split PR into two: public-api and supervisor
- Complete public-api-server instance update data transform
- Use instance update in supervisor
- https://github.com/gitpod-io/gitpod/issues/15039 (closed when epic is delivered)
- https://github.com/gitpod-io/gitpod/issues/15041 (closed when epic is delivered)
- SLO for supervisor public-api (requests duration)
Descoped / Nice to have
- Use
common-go grpcin supervisor PublicAPI - Pass
gitpod hostas configcat contracture argument (don't know if it's worth, since we merged these two constructive method) https://github.com/gitpod-io/gitpod/pull/15274#discussion_r1045656514 - Add request state logging as a middleware of
common-go grpchttps://github.com/gitpod-io/gitpod/pull/15112#discussion_r1043586795
nit
- make
public-api hostinsideserverapi/Serviceconfig https://github.com/gitpod-io/gitpod/pull/15112#discussion_r1043578888
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.