Skip to content

Commit 4ee9a55

Browse files
committed
feat(kubernetes): prototype proxy-pod isolation backend
Signed-off-by: Drew Newberry <anewberry@nvidia.com>
1 parent efba1d8 commit 4ee9a55

6 files changed

Lines changed: 917 additions & 0 deletions

File tree

Cargo.lock

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/openshell-driver-kubernetes/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ path = "src/main.rs"
1616

1717
[dependencies]
1818
openshell-core = { path = "../openshell-core", default-features = false }
19+
openshell-isolation-interface = { path = "../openshell-isolation-interface" }
1920
openshell-otel = { path = "../openshell-otel" }
2021
openshell-policy = { path = "../openshell-policy" }
2122

23+
async-trait = "0.1"
2224
opentelemetry = { workspace = true }
2325
tokio = { workspace = true }
2426
tonic = { workspace = true, features = ["transport"] }

crates/openshell-driver-kubernetes/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,29 @@ this driver. Kubernetes owns scheduling and pod lifecycle. The
4949
`openshell-sandbox` supervisor inside each workload owns agent isolation,
5050
credential injection, policy polling, logs, and the gateway relay.
5151

52+
### RFC 0012 proxy-pod prototype
53+
54+
The crate contains a review-only `kubernetes-proxy-pod` Isolation Backend
55+
adapter. It is not registered by the gateway and does not change the default
56+
runtime model. The adapter defines the boundary between the common RFC 0012
57+
lifecycle and a future authenticated Kubernetes process-leaf transport:
58+
59+
- The topology descriptor binds the sandbox to immutable workload Pod and
60+
egress `NetworkPolicy` UIDs, not reusable object names.
61+
- `attach` reserves that resource pair and asks the trusted process leaf to
62+
bind the complete sandbox context atomically.
63+
- `confirm` requires evidence that the workload is still held, the exact
64+
egress fence is active, all workload egress goes through mediation, and
65+
accepted connections carry trusted binary identity.
66+
- `start_agent` releases the admitted workload and returns the mandatory
67+
process, exec, and loopback-forwarding interfaces.
68+
69+
Kubernetes resource rendering and the authenticated control protocol remain
70+
follow-up layers. In particular, the adapter intentionally cannot represent a
71+
pod-level fence that also grants the workload direct DNS or gateway access, or
72+
an explicit proxy that drops process attribution. Those modes do not satisfy
73+
RFC 0012's egress and binary-identity invariants.
74+
5275
## Sandbox Resource
5376

5477
The driver works with the `agents.x-k8s.io` `Sandbox` custom resource. It

0 commit comments

Comments
 (0)