You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Deliver per-sandbox JWTs through Podman secrets so containerized gateways do not leak gateway-local paths to the host Podman API.
Add protected, bindability-checked callback listeners for host Podman gateways, including rootless pasta loopback binds discovered from local interfaces. Default RPM gateways to loopback, expose enable_auto_callback_listener for opt-out, and improve containerized socket diagnostics.
Signed-off-by: Adam Miller <admiller@redhat.com>
Copy file name to clipboardExpand all lines: architecture/compute-runtimes.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ when a sandbox create request asks for GPU resources.
31
31
| Runtime | Best fit | Sandbox boundary | Notes |
32
32
|---|---|---|---|
33
33
| Docker | Local development with Docker available. | Container plus nested sandbox namespace. | Uses host networking so loopback gateway endpoints work from the supervisor. |
34
-
| Podman | Rootless or single-machine deployments. | Container plus nested sandbox namespace. | Uses the Podman REST API, OCI image volumes, and CDI GPU devices when available. |
34
+
| Podman | Rootless or single-machine deployments. | Container plus nested sandbox namespace. | Uses the Podman REST API, OCI image volumes, CDI GPU devices when available, Podman secrets for sandbox JWTs, and bindability-checked callback listeners for direct-host loopback gateway binds. Bridge-mode gateways can listen on the Podman bridge IP when bindable; rootless pasta can add a protected non-loopback local-interface listener when TLS/auth are enabled. Containerized gateways skip host listener discovery and require explicit port publishing. |
35
35
| Kubernetes | Cluster deployment through Helm. | Pod plus nested sandbox namespace. | Uses Kubernetes API objects, service accounts, secrets, PVC-backed workspace storage, and GPU resources. |
36
36
| VM | Experimental microVM isolation. | Per-sandbox libkrun VM. | Managed endpoint-backed driver. The gateway spawns `openshell-driver-vm`, waits for its Unix socket, and then consumes it through the same remote `compute_driver.proto` path used by unmanaged endpoint drivers. The VM driver boots a cached bootstrap `rootfs.ext4`, prepares requested OCI images inside a bootstrap VM with `umoci`, attaches the prepared image disk read-only, and gives each sandbox a writable `overlay.ext4` for merged-root changes and runtime material. The driver persists each accepted launch request beside the overlay and restarts those VMs on driver startup without recreating the overlay. |
37
37
| Extension | Out-of-tree drivers operated alongside the gateway. | Whatever boundary the driver implements. | Selected by a non-reserved custom `compute_drivers = ["<name>"]` entry with `[openshell.drivers.<name>].socket_path`, or at launch time by pairing `--drivers <name>` with `--compute-driver-socket=<path>`. Reserved built-in names such as `vm`, `docker`, `podman`, and `kubernetes` cannot be used as unmanaged socket endpoints. The gateway connects to a UDS the operator already provisioned, runs `GetCapabilities`, logs the advertised `driver_name`, and dispatches all sandbox lifecycle calls through `compute_driver.proto`. The driver process and socket lifecycle are operator-owned; the gateway does not spawn, supervise, or remove unmanaged extension drivers. The trust boundary is the socket's filesystem permissions: the operator must ensure only the gateway uid can read/write it. |
|`OPENSHELL_PODMAN_HOST_GATEWAY_IP`|`--host-gateway-ip`| empty on Linux, `192.168.127.254` on macOS | Host gateway IP used for sandbox host aliases. Empty uses Podman's `host-gateway` resolver. |
343
+
|`OPENSHELL_PODMAN_ENABLE_AUTO_CALLBACK_LISTENER`| none |`true`| Enable the protected non-loopback callback listener for rootless pasta when the gateway is loopback-bound and TLS/auth are enabled. |
339
344
|`OPENSHELL_SANDBOX_SSH_SOCKET_PATH`|`--sandbox-ssh-socket-path`|`/run/openshell/ssh.sock`| Supervisor Unix socket path in `PodmanComputeConfig`. |
340
345
|`OPENSHELL_STOP_TIMEOUT`|`--stop-timeout`|`10`| Container stop timeout in seconds. |
341
346
|`OPENSHELL_SANDBOX_PIDS_LIMIT`|`--sandbox-pids-limit`|`2048`| Podman cgroup PID limit for sandbox containers. Set `0` to inherit Podman's runtime/default PID limit. |
0 commit comments