A Helm chart for deploying the OpenSandbox Kubernetes Controller, which manages sandbox environments with resource pooling and batch delivery capabilities.
This chart bootstraps an OpenSandbox Controller deployment on a Kubernetes cluster using the Helm package manager. The controller provides:
- Batch Sandbox Management: Create and manage multiple identical sandbox environments
- Resource Pooling: Maintain pre-warmed resource pools for rapid sandbox provisioning
- Task Orchestration: Optional task execution within sandboxes
- High Performance: O(1) time complexity for batch sandbox delivery
- Kubernetes 1.21.1+
- Helm 3.0+
- Container runtime (Docker, containerd, etc.)
To install the chart with the release name opensandbox-controller:
helm install opensandbox-controller ./opensandbox-controller \
--set controller.image.repository=<your-registry>/opensandbox-controller \
--set controller.image.tag=v0.1.0 \
--namespace opensandbox-system \
--create-namespaceThe command deploys OpenSandbox Controller on the Kubernetes cluster with default configuration. The Parameters section lists the parameters that can be configured during installation.
To uninstall/delete the opensandbox-controller deployment:
helm delete opensandbox-controller -n opensandbox-systemThe command removes all the Kubernetes components associated with the chart. Note that CRDs are kept by default (can be changed via crds.keep).
To also remove the CRDs:
kubectl delete crd batchsandboxes.sandbox.opensandbox.io
kubectl delete crd pools.sandbox.opensandbox.io| Name | Description | Value |
|---|---|---|
nameOverride |
Override the name of the chart | "" |
fullnameOverride |
Override the full name of the chart | "" |
namespaceOverride |
Override the namespace where resources will be created | "" |
| Name | Description | Value |
|---|---|---|
controller.image.repository |
Controller image repository | opensandbox.io/opensandbox-controller |
controller.image.pullPolicy |
Image pull policy | IfNotPresent |
controller.image.tag |
Overrides the image tag (default is chart appVersion) | "" |
controller.replicaCount |
Number of controller replicas | 1 |
controller.resources.limits.cpu |
CPU resource limits | 500m |
controller.resources.limits.memory |
Memory resource limits | 128Mi |
controller.resources.requests.cpu |
CPU resource requests | 10m |
controller.resources.requests.memory |
Memory resource requests | 64Mi |
controller.logLevel |
Can be one of 'debug', 'info', 'error' | info |
controller.kubeClient.qps |
QPS for Kubernetes client rate limiter | 100 |
controller.kubeClient.burst |
Burst for Kubernetes client rate limiter | 200 |
controller.leaderElection.enabled |
Enable leader election | true |
controller.nodeSelector |
Node labels for pod assignment | {} |
controller.tolerations |
Tolerations for pod assignment | [] |
controller.affinity |
Affinity for pod assignment | {} |
controller.podLabels |
Additional labels for controller pods | {} |
controller.podAnnotations |
Additional annotations for controller pods | {} |
controller.priorityClassName |
Priority class name for controller pods | "" |
| Name | Description | Value |
|---|---|---|
rbac.create |
Specifies whether RBAC resources should be created | true |
serviceAccount.create |
Specifies whether a service account should be created | true |
serviceAccount.annotations |
Annotations to add to the service account | {} |
serviceAccount.name |
The name of the service account to use | "" |
| Name | Description | Value |
|---|---|---|
crds.install |
Specifies whether CRDs should be installed | true |
crds.keep |
Keep CRDs on chart uninstall | true |
crds.annotations |
Annotations to add to CRDs | {"helm.sh/resource-policy": "keep"} |
| Name | Description | Value |
|---|---|---|
imagePullSecrets |
Image pull secrets for private registries | [] |
extraEnv |
Additional environment variables | [] |
extraVolumes |
Additional volumes | [] |
extraVolumeMounts |
Additional volume mounts | [] |
extraInitContainers |
Additional init containers | [] |
extraContainers |
Additional sidecar containers | [] |
controller:
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 100m
memory: 128MiConfigure the QPS and Burst for the Kubernetes client to handle high-throughput scenarios:
controller:
kubeClient:
qps: 100
burst: 250Note: Default values are QPS=100, Burst=200.
controller:
image:
repository: myregistry.example.com/opensandbox-controller
tag: v0.1.0
imagePullSecrets:
- name: myregistrykeycontroller:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: ExistsAfter installation, you can create resources:
apiVersion: sandbox.opensandbox.io/v1alpha1
kind: Pool
metadata:
name: example-pool
spec:
template:
spec:
containers:
- name: sandbox-container
image: nginx:latest
ports:
- containerPort: 80
capacitySpec:
bufferMax: 10
bufferMin: 2
poolMax: 20
poolMin: 5apiVersion: sandbox.opensandbox.io/v1alpha1
kind: BatchSandbox
metadata:
name: example-batch-sandbox
spec:
replicas: 3
poolRef: example-poolTo upgrade the chart:
helm upgrade opensandbox-controller ./opensandbox-controller \
--namespace opensandbox-system \
-f custom-values.yamlkubectl logs -n opensandbox-system -l control-plane=controller-manager -fkubectl get crd | grep opensandboxkubectl auth can-i --as=system:serviceaccount:opensandbox-system:opensandbox-controller-controller-manager create podsApache 2.0 License