Skip to content

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.0 already installed via oci://ghcr.io/syscode-labs/charts/imp --version 0.9.0 in imp-system (privileged namespace, nodes labeled imp/enabled=true).
  • helm and cluster-admin kubectl context.
  • Cilium for hard tenancy (see below). standard works without Cilium.

Install

imp-sandbox runs in a separate privileged namespace — do not reuse imp-system.

bash
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,daemonsets

OCI reference (pinned):

ghcr.io/syscode-labs/charts/imp-sandbox:0.9.0
oci://ghcr.io/syscode-labs/charts/imp-sandbox --version 0.9.0

Pull alternative:

bash
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-namespace

Pin 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.

bash
# 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

TenancyCilium requiredWhat you get
standardNoNamespace/NetworkPolicy isolation, gateway filtering
hardYesCiliumNetworkPolicy enforcement, CiliumExternalWorkload enrollment, no bypass

Verify Cilium before using hard:

bash
kubectl get crd | grep cilium
kubectl -n kube-system get pods -l k8s-app=cilium
kubectl get ciliumnetworkpolicies -A 2>&1 | head

If Cilium is absent, hard sandboxes will stall with NetworkSetupFailed / CiliumNotReady. Use standard or install Cilium first — see Cilium IPAM.

Validation

bash
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 default

A healthy sandbox shows Ready condition and a gateway endpoint in status.

Uninstall

bash
helm uninstall imp-sandbox -n imp-sandbox-system
kubectl delete namespace imp-sandbox-system --wait=false

Remove sandbox CRs before uninstall to avoid finalizer waits.

Next