Skip to content

feat: bootstrap opt-in shared supervisors on Kubernetes #4690

Open

Description

@drew

User Story

I am developing OpenShell's multi-tenant supervisor support and need to deploy and start shared supervisor processes on Kubernetes as an independently reviewable first milestone.

Problem Statement

OpenShell currently provisions supervisors per sandbox. The shared-supervisor prototype combines deployment, session assignment, and fenced recovery, making it difficult to land deployment support incrementally.

Impact / Why This Matters

A disabled-by-default deployment milestone lets operators validate supervisor placement and process lifecycle before sandbox sessions move onto shared supervisors.

Proposed Design

Expose an experimental Kubernetes setting through Helm to enable shared supervisor Deployments scoped to the gateway installation or individual workspaces. Start the supervisor binary in an idle shared mode with health checks and graceful shutdown. Existing sandbox supervision continues unchanged in this milestone.

Suggested UX

server:
  drivers:
    kubernetes:
      sharedSupervisor:
        enabled: true
        scope: gateway # or workspace

Acceptance Criteria

  • The flag defaults off and does not alter existing sandbox supervision.
  • Gateway scope starts one Deployment for the installation, independent of gateway replicas.
  • Workspace scope starts one Deployment for each ensured workspace, with cleanup on workspace deletion.
  • Supervisor Pods run without workload credentials or Kubernetes API credentials and terminate gracefully.
  • Helm rendering, configuration validation, process startup, and Kubernetes deployment are verified.

Alternatives Considered

Landing the full HA prototype at once introduces assignment and recovery concerns beyond this deployment milestone. Middleware, interceptors, and credential providers do not own Kubernetes supervisor process placement. Related work: #4311, #4429, and RFC draft #4377.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions