Skip to content

feat(kubernetes): adopt shared supervisor boundary mode - #3144

Open
drew wants to merge 12 commits into
codex/docker-host-supervisorfrom
codex/kubernetes-proxy-pod-isolation
Open

feat(kubernetes): adopt shared supervisor boundary mode#3144
drew wants to merge 12 commits into
codex/docker-host-supervisorfrom
codex/kubernetes-proxy-pod-isolation

Conversation

@drew

@drew drew commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

Make the Kubernetes proxy-pod topology operational using the shared openshell-sandbox --mode=control / --mode=boundary protocol. A dedicated control pod holds policy, credentials, gateway connectivity, and upstream egress; the workload pod contains only the process-owning boundary beside the agent workload.

This is PR 6 of 6. Its incremental runtime implementation stays in the existing Kubernetes driver, with the Helm, CI, documentation, troubleshooting-skill, and E2E task updates required to expose and operate the topology.

Stack: #2941#2942#3151#2945#2965this PR.

Related Issue

Part of #1737 and informed by the proxy-pod work in #2885. The issue does not currently carry state:accepted or roadmap placement; this implementation proceeds under direct maintainer instruction without changing those labels.

Changes

  • Replace the duplicated Kubernetes-specific backend protocol with the common RFC 0012 boundary protocol.
  • Provision the workload pod, control Deployment, boundary Service, immutable bootstrap Secret, and per-sandbox NetworkPolicies as one reconciled companion set.
  • Establish authenticated TLS between control and boundary and bind it to namespace, Sandbox resource, control Deployment, NetworkPolicy, image, generation, and policy-resource claims.
  • Create and observe the workload egress fence before releasing the suspended Agent Sandbox resource; fail closed unless the operator acknowledges an enforcing CNI/NetworkPolicy posture.
  • Keep gateway credentials, provider material, DNS, policy evaluation, middleware, and mediated upstream egress out of the workload pod.
  • Share exec, signal/terminate, wait, PTY, loopback forwarding, binary identity, and mediated-egress capabilities with the VM and Docker backends.
  • Implement create, readiness, stop/start, delete, restart, failure cleanup, orphan cleanup, and recovery with UID/resource-version checks and semantic control readiness.
  • Run control non-root with all Linux capabilities dropped and a read-only root filesystem; retain only the boundary bootstrap capabilities needed to prepare and own the workload.
  • Render the topology, configuration, RBAC, and operator acknowledgement through Helm; add a dedicated branch-E2E matrix entry and troubleshooting guidance.

Testing

  • mise run pre-commit
  • cargo test -p openshell-driver-kubernetes
  • cargo clippy -p openshell-driver-kubernetes --all-targets -- -D warnings
  • Helm lint and Helm unit tests for supported workspace modes and proxy-pod RBAC/config rendering
  • mise run e2e:kubernetes — 106 passed, 1 known ignored
  • mise run e2e:kubernetes:proxy-pod — 106 passed, 1 known ignored
  • Live proxy-pod gateway smoke: create, policy allow/deny, exec, connect, logs, stop/start, and delete

Checklist

  • Authored implementation commits follow Conventional Commits and include DCO sign-off
  • Kubernetes runtime behavior remains implemented in crates/openshell-driver-kubernetes
  • Helm, CI, docs, E2E tasks, and troubleshooting guidance expose and support the new topology
  • Existing combined and sidecar topologies remain covered

@copy-pr-bot

copy-pr-bot Bot commented Sep 2, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@drew drew changed the title codex/kubernetes proxy pod isolation feat(kubernetes): prototype RFC 0012 proxy-pod backend Sep 2, 2026
@drew
drew force-pushed the codex/kubernetes-proxy-pod-isolation branch from 4ee9a55 to 9083078 Compare September 3, 2026 01:45
@drew
drew changed the base branch from codex/1737-rfc12-supervisor-primitives to codex/docker-host-supervisor September 3, 2026 01:46
@drew
drew marked this pull request as ready for review September 3, 2026 01:46
@drew
drew requested review from a team, derekwaynecarr, mrunalp and sjenning as code owners September 3, 2026 01:46
@drew drew changed the title feat(kubernetes): prototype RFC 0012 proxy-pod backend feat(kubernetes): adopt shared supervisor boundary mode Sep 3, 2026
@drew
drew force-pushed the codex/kubernetes-proxy-pod-isolation branch from e5d257d to db1070b Compare September 3, 2026 14:34
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

drew added 12 commits September 3, 2026 07:47
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
@drew
drew force-pushed the codex/kubernetes-proxy-pod-isolation branch from db1070b to f17a633 Compare September 3, 2026 14:47
@drew drew added the test:e2e Requires end-to-end coverage label Sep 3, 2026
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Label test:e2e applied for f17a633. Open the existing run and click Re-run all jobs to execute with the label set. The run will execute the standard E2E suite after building the required gateway and supervisor images once. The matching required CI gate status on this PR will flip green automatically once the run finishes.

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

Labels

test:e2e Requires end-to-end coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant