Sandbox Install
This page covers the optional imp-sandbox add-on (0.9.0). Skip it if you only need base ImpVM orchestration — see Quickstart and Manual — Day 0.
Prerequisites
- Imp
0.9.0already installed viaoci://ghcr.io/syscode-labs/charts/imp --version 0.9.0inimp-system(privileged namespace, nodes labeledimp/enabled=true). helmand cluster-adminkubectlcontext.- Cilium for
hardtenancy (see below).standardworks without Cilium.
Install
imp-sandbox runs in a separate privileged namespace — do not reuse imp-system.
kubectl create namespace imp-sandbox-system --dry-run=client -o yaml | kubectl apply -f -
kubectl label namespace imp-sandbox-system pod-security.kubernetes.io/enforce=privileged --overwrite
helm upgrade --install imp-sandbox oci://ghcr.io/syscode-labs/charts/imp-sandbox --version 0.9.0 \
-n imp-sandbox-system --create-namespace
kubectl -n imp-sandbox-system get pods
kubectl -n imp-sandbox-system get deployments,daemonsetsOCI reference (pinned):
ghcr.io/syscode-labs/charts/imp-sandbox:0.9.0
oci://ghcr.io/syscode-labs/charts/imp-sandbox --version 0.9.0Pull alternative:
helm pull oci://ghcr.io/syscode-labs/charts/imp-sandbox --version 0.9.0
helm upgrade --install imp-sandbox ./imp-sandbox-0.9.0.tgz -n imp-sandbox-system --create-namespacePin images by digest in production (image.digest in values) alongside base Imp.
Per-Sandbox Token
Each sandbox mints a per-sandbox token for gateway data-plane auth. The controller creates a Secret per sandbox; clients present the token to the gateway.
# Example: fetch token for sandbox my-sandbox in namespace default
kubectl get secret -n default -l imp.dev/sandbox=my-sandbox -o jsonpath='{.items[0].data.token}' | base64 -d- Tokens are scoped to one sandbox — no cross-sandbox reuse.
- Rotate by deleting the Secret; the controller reissues.
- Gateway rejects requests without a valid per-sandbox token.
Store tokens in your external secret store; do not commit them.
Cilium Requirement for hard
| Tenancy | Cilium required | What you get |
|---|---|---|
standard | No | Namespace/NetworkPolicy isolation, gateway filtering |
hard | Yes | CiliumNetworkPolicy enforcement, CiliumExternalWorkload enrollment, no bypass |
Verify Cilium before using hard:
kubectl get crd | grep cilium
kubectl -n kube-system get pods -l k8s-app=cilium
kubectl get ciliumnetworkpolicies -A 2>&1 | headIf Cilium is absent, hard sandboxes will stall with NetworkSetupFailed / CiliumNotReady. Use standard or install Cilium first — see Cilium IPAM.
Validation
kubectl -n imp-sandbox-system get pods
kubectl get crd | grep -i sandbox
kubectl apply -f - <<'EOF'
apiVersion: imp.dev/v1alpha1
kind: ImpSandbox
metadata:
name: demo
namespace: default
spec:
tenancy: standard
EOF
kubectl describe impsandbox demo -n defaultA healthy sandbox shows Ready condition and a gateway endpoint in status.
Uninstall
helm uninstall imp-sandbox -n imp-sandbox-system
kubectl delete namespace imp-sandbox-system --wait=falseRemove sandbox CRs before uninstall to avoid finalizer waits.
Next
- Sandbox Overview — positioning and when to use
- Tenancy — policy matrix
- Gateway — data-plane details
- Manual — Day 0 — base Imp privileged NS and OnDelete runtime
