Add declarative execution environment management to rstudio-connect chart#800
Add declarative execution environment management to rstudio-connect chart#800lucasrod16 wants to merge 1 commit intomainfrom
Conversation
bc25eaf to
680e3d2
Compare
680e3d2 to
3d59753
Compare
|
Tested on EKS reference architecture cluster. Attached the testing notes as a markdown file |
| ConfigMap and mounts it into the Connect pod. | ||
|
|
||
| By default, the chart sets `ExecutionEnvironments.ConfigFilePath` to | ||
| `/etc/rstudio-connect/execution-environments/environments.yaml` and mounts the |
There was a problem hiding this comment.
Do we need the extra path segment? Why not just /etc/rstudio-connect/execution-environments.yaml ?
There was a problem hiding this comment.
ConfigMap files mounted with subPath don't receive automatic updates from the kubelet, so we need a dedicated directory to avoid overwriting other files in /etc/rstudio-connect/
A container using a ConfigMap as a subPath volume mount will not receive ConfigMap updates.
There was a problem hiding this comment.
The reason we want automatic updates from the kubelet for this ConfigMap is so that we don't have to restart the Connect pod(s) to apply updates to execution environments
|
These changes look good but I'd like folks from SE to weigh in on our docs updates. Let's wait to merge this until after the 2026.03.0 release. |
SamEdwardes
left a comment
There was a problem hiding this comment.
This is awesome. Thank you for working on this. This is something that has caused a lot of confusion for customers, and a declarative execution environment will be much easier for them to use. I left one comment for discussion.
| The chart deliberately excludes this ConfigMap from the pod's checksum annotations, | ||
| so changes do not trigger a pod restart. The kubelet updates the mounted file | ||
| automatically when the ConfigMap changes (typically within 60-120 seconds), and | ||
| Connect detects the update automatically. |
There was a problem hiding this comment.
This is great that we don't need to redeploy and the Helm chart handles this.
| When `executionEnvironments` is set, the chart renders the list into a dedicated | ||
| ConfigMap and mounts it into the Connect pod. |
There was a problem hiding this comment.
I would like to go into a little bit more detail about how the settings get merged. If you remove an environment, it will also get removed from Connect. What about execution environments that users might have set manually through the UI? Is there a way to disable users adding environments to the UI or the API so that it is truly only declarative?
There was a problem hiding this comment.
fwiw, there are docs that go into more detail about the behavior in the admin guide for execution environments that will be included in the 2026.03.0 release that these helm docs can point to.
Using the declarative management feature does not prevent you from creating environments via UI/API. Connect tracks and manages declarative and UI/API-managed environments separately. Here is what it looks like in the UI:
You cannot create/update/delete environments managed by the declarative configuration using the UI/API, except for ACLs. Environment ACLs currently can only be managed via UI/API.
Is the ask to completely disable managing environments via API/UI when using the declarative approach? Is this what most admins would want and expect from what you've seen?
Summary
executionEnvironmentsvalues key for declarative management of execution environments viaExecutionEnvironments.ConfigFilePathlauncher.customRuntimeYaml, changes take effect on everyhelm upgradewithout requiring a pod restart or database resetTest plan
just test rstudio-connect— 34 unit tests pass covering ConfigMap rendering, volume/volumeMount, gcfg config injection, checksum absence, custom ConfigFilePath override, launcher coexistence, and validationjust docs— README regenerated from template🤖 Generated with Claude Code