OpenSandbox Controller Helm Chart
A Helm chart for deploying the OpenSandbox Kubernetes Controller, which manages sandbox environments with resource pooling and batch delivery capabilities.
Introduction
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
Prerequisites
- Kubernetes 1.21.1+
- Helm 3.0+
- Container runtime (Docker, containerd, etc.)
Installing the Chart
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.
Uninstalling the Chart
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.ioParameters
Global Parameters
| 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 | "" |
Controller Parameters
| 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 | "" |
RBAC Parameters
| 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 | "" |
CRD Parameters
| 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"} |
Additional Parameters
| 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 | [] |
Configuration Examples
Custom Resource Limits
controller:
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 100m
memory: 128MiCustom Kubernetes Client Rate Limiter
Configure 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.
Use Private Registry
controller:
image:
repository: myregistry.example.com/opensandbox-controller
tag: v0.1.0
imagePullSecrets:
- name: myregistrykeyNode Affinity
controller:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: ExistsUsage Examples
After installation, you can create resources:
Create a Resource Pool
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: 5Create a Batch Sandbox
apiVersion: sandbox.opensandbox.io/v1alpha1
kind: BatchSandbox
metadata:
name: example-batch-sandbox
spec:
replicas: 3
poolRef: example-poolUpgrading
To upgrade the chart:
helm upgrade opensandbox-controller ./opensandbox-controller \
--namespace opensandbox-system \
-f custom-values.yamlTroubleshooting
Check controller logs
kubectl logs -n opensandbox-system -l control-plane=controller-manager -fCheck CRD installation
kubectl get crd | grep opensandboxVerify RBAC permissions
kubectl auth can-i --as=system:serviceaccount:opensandbox-system:opensandbox-controller-controller-manager create podsAdditional Resources
License
Apache 2.0 License
This page is sourced from:
kubernetes/charts/opensandbox-controller/README.md