Skip to content

Commit 62837d2

Browse files
committed
refactor(kubernetes): drop the experimental prefix from the supervisor topology
Rename the Helm template to supervisor.yaml, its Kubernetes names and labels to the -supervisor suffix and supervisor component, and the driver setting to supervisor_topology. The setting remains opt-in and workspace remains reserved. Signed-off-by: Drew Newberry <anewberry@nvidia.com>
1 parent a005aa8 commit 62837d2

8 files changed

Lines changed: 48 additions & 49 deletions

File tree

‎.agents/skills/helm-dev-environment/SKILL.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@ Override with env vars before running `helm:k3s:create`:
5757
`mcr.microsoft.com/dotnet/aspire-dashboard:latest`)
5858
- `HELM_K3S_COLLECTOR_HEALTH_TIMEOUT` (default: `120` seconds)
5959

60-
### Experimental supervisor plumbing
60+
### Shared supervisor plumbing
6161

62-
Set `gatewayConfig.openshell.drivers.kubernetes.experimental_supervisor_topology`
62+
Set `gatewayConfig.openshell.drivers.kubernetes.supervisor_topology`
6363
using a values file (the table key is literally `openshell.drivers.kubernetes`):
6464

6565
```yaml
6666
gatewayConfig:
6767
openshell.drivers.kubernetes:
68-
experimental_supervisor_topology: gateway
68+
supervisor_topology: gateway
6969
```
7070
7171
The gateway chart creates a separate, single-replica shared-host placeholder Deployment

‎crates/openshell-driver-kubernetes/src/config.rs‎

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,20 +194,20 @@ where
194194
Ok(value)
195195
}
196196

197-
/// Experimental scope of a shared supervisor deployment.
197+
/// Scope of a shared supervisor deployment.
198198
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
199199
#[serde(rename_all = "snake_case")]
200-
pub enum ExperimentalSupervisorTopology {
200+
pub enum SupervisorTopology {
201201
Gateway,
202202
Workspace,
203203
}
204204

205205
#[derive(Debug, Clone, Serialize, Deserialize)]
206206
#[serde(default, deny_unknown_fields)]
207207
pub struct KubernetesComputeConfig {
208-
/// Deploy an idle experimental supervisor through Helm. Does not route sessions.
208+
/// Deploy an idle shared supervisor through Helm. Does not route sessions.
209209
#[serde(skip_serializing_if = "Option::is_none")]
210-
pub experimental_supervisor_topology: Option<ExperimentalSupervisorTopology>,
210+
pub supervisor_topology: Option<SupervisorTopology>,
211211
/// Permit caller-supplied driver JSON. Does not waive resource admission.
212212
pub allow_driver_config: bool,
213213
/// Operator-owned external attachment approval policy.
@@ -400,7 +400,7 @@ pub const ANNOTATION_SCC_SUPPLEMENTAL_GROUPS: &str = "openshift.io/sa.scc.supple
400400
impl Default for KubernetesComputeConfig {
401401
fn default() -> Self {
402402
Self {
403-
experimental_supervisor_topology: None,
403+
supervisor_topology: None,
404404
workspace_mode: WorkspaceMode::default(),
405405
allow_driver_config: false,
406406
resource_admission:
@@ -454,9 +454,8 @@ impl Default for KubernetesComputeConfig {
454454
impl KubernetesComputeConfig {
455455
/// Validate startup configuration without connecting to Kubernetes.
456456
pub fn validate_configuration(&self) -> Result<(), String> {
457-
if self.experimental_supervisor_topology == Some(ExperimentalSupervisorTopology::Workspace)
458-
{
459-
return Err("experimental_supervisor_topology=workspace is not implemented".into());
457+
if self.supervisor_topology == Some(SupervisorTopology::Workspace) {
458+
return Err("supervisor_topology=workspace is not implemented".into());
460459
}
461460
self.validate_workspace_mode()?;
462461
self.validate_provider_spiffe_workload_api_socket_path()?;

‎crates/openshell-driver-kubernetes/src/lib.rs‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ mod sandbox_runtime;
1212

1313
pub use config::{
1414
DEFAULT_GATEWAY_ID, DEFAULT_SANDBOX_SERVICE_ACCOUNT_NAME, DEFAULT_WORKSPACE_STORAGE_SIZE,
15-
ExperimentalSupervisorTopology, KubernetesComputeConfig, KubernetesControlConnection,
16-
KubernetesImagePullPolicy, KubernetesSandboxRuntimeConfig, ManagedSshIngressConfig,
17-
WorkspaceMode, managed_namespace_prefix,
15+
KubernetesComputeConfig, KubernetesControlConnection, KubernetesImagePullPolicy,
16+
KubernetesSandboxRuntimeConfig, ManagedSshIngressConfig, SupervisorTopology, WorkspaceMode,
17+
managed_namespace_prefix,
1818
};
1919
pub use driver::{KubernetesComputeDriver, KubernetesDriverError};
2020
pub use grpc::ComputeDriverService;

‎crates/openshell-driver-kubernetes/src/main.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ async fn main() -> Result<()> {
260260
let (shutdown_tx, shutdown_rx) = tokio::sync::watch::channel(false);
261261
let driver = KubernetesComputeDriver::new(
262262
KubernetesComputeConfig {
263-
experimental_supervisor_topology: None,
263+
supervisor_topology: None,
264264
allow_driver_config: args.admission_config_json.allow_driver_config,
265265
resource_admission: args.admission_config_json.resource_admission.clone(),
266266
workspace_mode: args.workspace_mode,

‎crates/openshell-supervisor/README.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,15 @@ belong to the sandbox or isolation backend. Signals use `BoundarySignal`.
6161
These portable control-plane foundations do not qualify a platform isolation
6262
backend or enable a Windows workload runtime.
6363

64-
## Experimental shared host
64+
## Shared host
6565

6666
`openshell-supervisor --mode=shared --gateway-endpoint https://gateway:8080 --address 0.0.0.0:5501`
67-
starts a shared-host placeholder for the Kubernetes gateway topology experiment.
67+
starts a shared-host placeholder for the Kubernetes gateway supervisor topology.
6868
The listener at `--address` accepts and closes connections, including kubelet
6969
`tcpSocket` probes, and reports process health only. `--gateway-endpoint` selects
7070
the gateway the supervisor will dial for session control. The outbound connection,
7171
control RPCs, sandbox sessions, gateway authentication, and tenant routing are not
7272
implemented yet. Omitting `--mode` keeps the existing dedicated behavior.
73-
`experimental_supervisor_topology = "gateway"` deploys this placeholder; sandboxes
73+
`supervisor_topology = "gateway"` deploys this placeholder; sandboxes
7474
continue using dedicated supervisors. SIGTERM and SIGINT close the listener.
7575
Shared mode is Unix-only.

‎deploy/helm/openshell/templates/_helpers.tpl‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -569,17 +569,17 @@ Validate chart values that Helm would otherwise accept silently.
569569
*/}}
570570
{{- define "openshell.validateValues" -}}
571571
{{- $kubernetes := include "openshell.effectiveKubernetesConfig" . | fromYaml -}}
572-
{{- if hasKey $kubernetes "experimental_supervisor_topology" -}}
573-
{{- $topology := get $kubernetes "experimental_supervisor_topology" -}}
572+
{{- if hasKey $kubernetes "supervisor_topology" -}}
573+
{{- $topology := get $kubernetes "supervisor_topology" -}}
574574
{{- if not (has $topology (list "gateway" "workspace")) -}}
575-
{{- fail "experimental_supervisor_topology must be gateway or workspace; omit it to disable the experiment" -}}
575+
{{- fail "supervisor_topology must be gateway or workspace; omit it to disable the shared supervisor" -}}
576576
{{- end -}}
577577
{{- if eq $topology "workspace" -}}
578-
{{- fail "experimental_supervisor_topology=workspace is not implemented" -}}
578+
{{- fail "supervisor_topology=workspace is not implemented" -}}
579579
{{- end -}}
580580
{{- $gateway := get (.Values.gatewayConfig | default dict) "openshell.gateway" | default dict -}}
581581
{{- if ne (get $gateway "compute_driver" | default "kubernetes") "kubernetes" -}}
582-
{{- fail "experimental_supervisor_topology requires the kubernetes compute driver" -}}
582+
{{- fail "supervisor_topology requires the kubernetes compute driver" -}}
583583
{{- end -}}
584584
{{- end -}}
585585
{{- $workloadKind := include "openshell.workloadKind" . -}}

deploy/helm/openshell/templates/experimental-supervisor.yaml renamed to deploy/helm/openshell/templates/supervisor.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,32 @@
44
{{- range .Values.imagePullSecrets -}}
55
{{- $imagePullSecrets = append $imagePullSecrets .name -}}
66
{{- end -}}
7-
{{- if eq (get $kubernetes "experimental_supervisor_topology" | default "") "gateway" }}
7+
{{- if eq (get $kubernetes "supervisor_topology" | default "") "gateway" }}
88
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
99
# SPDX-License-Identifier: Apache-2.0
1010
apiVersion: apps/v1
1111
kind: Deployment
1212
metadata:
13-
name: {{ include "openshell.fullname" . }}-experimental-supervisor
13+
name: {{ include "openshell.fullname" . }}-supervisor
1414
namespace: {{ .Release.Namespace }}
1515
labels:
1616
{{- include "openshell.labels" . | nindent 4 }}
17-
app.kubernetes.io/component: experimental-supervisor
17+
app.kubernetes.io/component: supervisor
1818
spec:
1919
replicas: 1
2020
strategy:
2121
type: Recreate
2222
selector:
2323
matchLabels:
24-
app.kubernetes.io/name: openshell-experimental-supervisor
24+
app.kubernetes.io/name: openshell-supervisor
2525
app.kubernetes.io/instance: {{ .Release.Name }}
26-
app.kubernetes.io/component: experimental-supervisor
26+
app.kubernetes.io/component: supervisor
2727
template:
2828
metadata:
2929
labels:
30-
app.kubernetes.io/name: openshell-experimental-supervisor
30+
app.kubernetes.io/name: openshell-supervisor
3131
app.kubernetes.io/instance: {{ .Release.Name }}
32-
app.kubernetes.io/component: experimental-supervisor
32+
app.kubernetes.io/component: supervisor
3333
spec:
3434
automountServiceAccountToken: false
3535
terminationGracePeriodSeconds: 30

deploy/helm/openshell/tests/experimental_supervisor_test.yaml renamed to deploy/helm/openshell/tests/supervisor_test.yaml

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
3-
suite: experimental supervisor deployment
3+
suite: supervisor deployment
44
templates:
5-
- templates/experimental-supervisor.yaml
5+
- templates/supervisor.yaml
66
- templates/gateway-config.yaml
77
release:
88
name: openshell
99
namespace: gateway
1010
tests:
1111
- it: adds no supervisor by default
12-
template: templates/experimental-supervisor.yaml
12+
template: templates/supervisor.yaml
1313
asserts:
1414
- hasDocuments:
1515
count: 0
1616
- it: deploys one isolated idle process in the gateway namespace
17-
template: templates/experimental-supervisor.yaml
17+
template: templates/supervisor.yaml
1818
set:
1919
gatewayConfig:
2020
openshell.drivers.kubernetes:
21-
experimental_supervisor_topology: gateway
22-
supervisor_image: example.com/supervisor:experiment
21+
supervisor_topology: gateway
22+
supervisor_image: example.com/supervisor:shared
2323
asserts:
2424
- equal:
2525
path: metadata.namespace
@@ -29,10 +29,10 @@ tests:
2929
value: 1
3030
- equal:
3131
path: spec.template.metadata.labels["app.kubernetes.io/name"]
32-
value: openshell-experimental-supervisor
32+
value: openshell-supervisor
3333
- equal:
3434
path: spec.template.spec.containers[0].image
35-
value: example.com/supervisor:experiment
35+
value: example.com/supervisor:shared
3636
- equal:
3737
path: spec.template.spec.containers[0].args
3838
value:
@@ -69,37 +69,37 @@ tests:
6969
set:
7070
gatewayConfig:
7171
openshell.drivers.kubernetes:
72-
experimental_supervisor_topology: gateway
72+
supervisor_topology: gateway
7373
asserts:
7474
- matchRegex:
7575
path: data["gateway.toml"]
76-
pattern: 'experimental_supervisor_topology = "gateway"'
76+
pattern: 'supervisor_topology = "gateway"'
7777
- it: rejects workspace until implemented
78-
template: templates/experimental-supervisor.yaml
78+
template: templates/supervisor.yaml
7979
set:
8080
gatewayConfig:
8181
openshell.drivers.kubernetes:
82-
experimental_supervisor_topology: workspace
82+
supervisor_topology: workspace
8383
asserts:
8484
- failedTemplate:
85-
errorMessage: experimental_supervisor_topology=workspace is not implemented
85+
errorMessage: supervisor_topology=workspace is not implemented
8686
- it: rejects invalid topology
87-
template: templates/experimental-supervisor.yaml
87+
template: templates/supervisor.yaml
8888
set:
8989
gatewayConfig:
9090
openshell.drivers.kubernetes:
91-
experimental_supervisor_topology: invalid
91+
supervisor_topology: invalid
9292
asserts:
9393
- failedTemplate:
94-
errorMessage: experimental_supervisor_topology must be gateway or workspace; omit it to disable the experiment
94+
errorMessage: supervisor_topology must be gateway or workspace; omit it to disable the shared supervisor
9595
- it: rejects enabled topology for another compute driver
96-
template: templates/experimental-supervisor.yaml
96+
template: templates/supervisor.yaml
9797
set:
9898
gatewayConfig:
9999
openshell.gateway:
100100
compute_driver: docker
101101
openshell.drivers.kubernetes:
102-
experimental_supervisor_topology: gateway
102+
supervisor_topology: gateway
103103
asserts:
104104
- failedTemplate:
105-
errorMessage: experimental_supervisor_topology requires the kubernetes compute driver
105+
errorMessage: supervisor_topology requires the kubernetes compute driver

0 commit comments

Comments
 (0)