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

Config Store Theia extension to inject credentials and other config into session pods #388

Open
lucas-koehler opened this issue Dec 20, 2024 · 0 comments
Assignees
Labels
enhancement New feature or request prio-high

Comments

@lucas-koehler
Copy link
Contributor

Is your feature request related to a problem? Please describe.

There needs to be a way to inject secrets (such as Git credentials) and other user-specific configuration into user sessions that works for lazy and pre-warmed session pods.

Describe the solution you'd like

Implement a Theia extension that can be added to Theia instances running in Theia Cloud.
This extension offers and endpoint that allows to inject credentials or other text-based configuration to Theia.

Concretely, this should also work for pre-warmed pods where injection via environment variables is not possible.
The idea was to implement a key value store that can be used to read values from env values and values which were configured via a REST endpoint of the session pod.

The new feature is the latter case:
Essentially, the config store is a key value store configurable via a REST endpoint in the cluster. When running in a session pod, the endpoint is implicitly protected by the same OAuth proxy as the rest of the Theia instance and should not allow reading values.

To set configuration for a user, the REST service is extended to enable setting values for the authenticated user. With this, a landing page can add values (e.g. a Git access token) here after a pod was started.

The store offers to get values and be notified when new values are set. Consuming Theia extensions can react to this and, for instance, clone a Git repository with credentials.

Describe alternatives you've considered

Use the existing options to inject credentials via environment variables. However, this cannot work for pre-warmed session pods because environment variables of a running process cannot be changed after the process has been started.

Cluster provider

No response

Additional information

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request prio-high
Projects
None yet
Development

No branches or pull requests

1 participant