radius-project / radius-project/radius

Feature request: "on-demand" mode for Radius control plane

Open
#8,744 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature triaged
Dominant language
Go
Stars
1.7k
Forks
137
Avg merge
1d 5h
Merged PRs (30d)
93

Description

Overview of feature request

Today the Radius control plane stores the state of its applications in a datastore (etcd) on the cluster. There's an effort currently underway to enable the use of an external data store provided by the user, supporting PostgreSQL as a start (see roadmap item # 49).

This request is to take advantage of the external data store to enable an "on-demand" or "serverless" mode for Radius, where the control plane can be spun up and taken down on demand while the Radius state is maintained in the persistent database that is external to the Radius control plane.

With this in place, Radius will enable user scenarios such as:

  • As a user, I can spin up a Radius control plane on a local cluster within my CI/CD pipeline (e.g. within GitHub Actions) where the workflow would initialize Radius using an existing state stored externally, perform app and resource deployments, store the new application states, and then spin down the control plane and cluster after successfully executing the CI/CD operations.
  • As a user, I can host the Radius control plane on a serverless compute platform that I may spin up and down as needed based on demand.
Acceptance criteria
  1. Radius is able to store its state into a database external to the cluster that hosts its control plane.
  2. The Radius control plane can be initialized from scratch in a fresh cluster using the existing state stored in the external database.
  3. The Radius control plane can store its state in the external database when it performs various operations like deployment, API calls, logging, etc.
  4. The Radius control plane and its cluster can be spun down without impact to its externally stored state, which can subsquently be used to initialize a new instance of the control plane in a fresh cluster (i.e. Step 1 above)
Additional context

related and dependent on: https://github.com/radius-project/roadmap/issues/49

Would you like to support us?
  • Yes, I would like to support you

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading roadmap item #49 and the external datastore effort described in this issue to understand the existing PostgreSQL integration. Compare the implementation against the four acceptance criteria, including initialization from persisted state, state writes during operations, and safe control-plane shutdown and restart.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, postgresql
Domain
cloud, databases, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.