Add OpenShell sandbox Helm charts with per-user access control - #1
Closed
sauagarwa wants to merge 6 commits into
Closed
Add OpenShell sandbox Helm charts with per-user access control#1sauagarwa wants to merge 6 commits into
sauagarwa wants to merge 6 commits into
Conversation
Helm charts for deploying per-user OpenShell agent sandboxes on OpenShift Virtualization (KubeVirt) with OIDC authentication and per-user access control. Charts: - openshell-sandbox: per-user sandbox VM with access control proxy - openshell-gateway: master gateway VM and snapshot - openshell-gateway-image: pre-baked gateway VM disk image - openshell-keycloak: optional OIDC provider for development - nemoclaw-imagestream: NemoClaw sandbox image builder - nemoclaw-cli-imagestream: NemoClaw CLI image builder Key features: - Per-user access control via openresty auth proxy that validates JWT preferred_username matches the sandbox owner - Configurable namespace modes: shared (default) or per-user - OIDC authentication with any provider (Keycloak, Okta, Entra ID) - Interactive owner detection from OIDC token with override prompt - openshell CLI integration (gateway add, login, sandbox management) - E2E test scripts for access control and multi-user isolation CLI: - openshell-saw admin provisioning tool for cluster operations - Users interact via upstream openshell CLI Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add make login step to user flow (OIDC auth before sandbox creation) - Fix access control docs: openresty auth proxy, not oauth2-proxy - Update accessControl values (remove cookieSecret, correct image) - Reorder quick starts: containerDisk first (simpler, no gateway needed) - Add teardown section - Rename title to Secure Agent Workspace Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Keep only scripts referenced by charts and Makefile: oidc-login.sh, test-access-control.sh, test-multiuser-isolation.sh Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The openshell CLI uses a random port for the OIDC callback. Allow http://localhost:* and http://127.0.0.1:* as redirect URIs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Edge TLS termination strips HTTP/2 ALPN negotiation, breaking gRPC connections from the openshell CLI. The gateway route now always uses passthrough so the gateway VM handles TLS directly. The auth proxy is retained for the dashboard route (HTTP/1.1) only, with its upstream updated to the dashboard port (18789). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the virt-customize/libguestfs pipeline with a bootc Containerfile based on quay.io/fedora/fedora-bootc:44. CDI on OpenShift 4.16+ imports bootc images directly into golden image PVCs — no qcow2 wrapping needed. Remove the snapshot workflow entirely (master VM + VirtualMachineSnapshot + VirtualMachineClone). Sandboxes now always clone from the bootc golden image. Key changes: - buildconfig.yaml: single-stage bootc Containerfile (no libguestfs) - Deleted snapshot-job, snapshot-cleanup, snapshot-rbac templates - Deleted virtualmachineclone.yaml (snapshot-only) - Simplified cloud-init, Makefile, RBAC, and test templates - Added scripts/test-bootc-e2e.sh for end-to-end validation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Collaborator
Author
|
Superseded by feat/validated-pattern-integration which includes all these changes plus validated pattern integration, operator-based Keycloak, ESO secrets, and repo reorganization. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
preferred_usernamematches sandbox ownersaw-<username>)openshellCLI integration (gateway add,login,sandbox list)openshell-saw) for cluster operationsCharts
openshell-sandboxopenshell-gatewayopenshell-gateway-imageopenshell-keycloaknemoclaw-imagestreamnemoclaw-cli-imagestreamUser Flow
Test plan
helm lint charts/openshell-sandboxpasses with and without access controlscripts/test-access-control.sh— 13 checks: provisions alice/bob sandboxes, verifies cross-user 403 blockingscripts/test-multiuser-isolation.sh— 14 checks: namespace-per-user isolation🤖 Generated with Claude Code