Skip to main content

Cluster requirements

Baseline capabilities OpenBox depends on. Everything listed here is cloud-agnostic — the chart works on EKS, AKS, GKE, self-managed K8s (kops, kubeadm, Rancher, OpenShift), and hobby setups (Minikube, kind, k3s) with equivalent capabilities.

Kubernetes

RequirementValue
K8s version≥ 1.27 (chart kubeVersion: ">=1.27.0-0")
Container runtimecontainerd (modern K8s default)
CNIany CNI supporting NetworkPolicy (AWS VPC CNI / Calico / Cilium / Flannel + NetworkPolicy addon)
DNSCoreDNS (default)

Node capacity

Minimum for a small prod deploy:

  • ≥ 8 worker nodes (or equivalent) — see System requirements → cluster sizing
  • Total: ~24 vCPU, ~128 GB RAM
  • 1 node with GPU (A10G / L4 / T4 24 GB) if you enable the LlamaFirewall deep prompt-injection detector — otherwise disable in values

You do NOT need Karpenter or a specific autoscaler — the chart uses HorizontalPodAutoscaler (v2 API), which works with any cluster-autoscaling mechanism.

StorageClass

  • At least one StorageClass supporting ReadWriteOnce volumes
  • Recommended: gp3 on AWS, StandardSSD_LRS on Azure, pd-balanced on GCP, Longhorn/Rook on-prem
  • Chart uses default StorageClass unless overridden per-service

Verify:

kubectl get storageclass
# Expect: at least one with (default) annotation

Ingress controller

Any of the following works — chart supports them all via global.ingress.type:

TypeChart settingNotes
Istioglobal.ingress.type: istioChart default. Requires Istio installed + namespace labeled istio-injection=enabled
NGINXglobal.ingress.type: nginxEmits Ingress resources with ingressClassName: nginx
AWS ALBglobal.ingress.type: nginx + ALB Ingress ControllerHandles annotations
Traefikglobal.ingress.type: traefikEmits Ingress with Traefik annotations
None (dev)global.ingress.type: noneChart skips ingress; you port-forward

Verify at least one is present:

kubectl get ingressclass

Add-ons required

Add-onWhyVerify
metrics-serverHPA scalingkubectl top nodes returns data
Certificate manager (optional)Automatic TLSkubectl get clusterissuer (cert-manager) OR kubectl get certificate -A
Secret sync (optional)Pull from Vault / AWS SMkubectl get externalsecret -A (ESO)
Argo Rollouts (optional)Canary strategy for guardrails`kubectl get crd

If Argo Rollouts CRD is missing, set openbox-guardrails-service.rollout.enabled: false in values (chart falls back to Deployment).

Cluster-level permissions (customer-owned)

Chart pods need these Kubernetes RBAC permissions inside the OpenBox namespace:

  • Standard workload permissions (Deployments, Services, ConfigMaps, Secrets)
  • ServiceAccount + annotations (for IRSA on AWS or Workload Identity on GKE/AKS)
  • HorizontalPodAutoscaler + PodDisruptionBudget
  • Optionally: NetworkPolicy (chart emits some — customer may layer more)

The chart does NOT need cluster-wide admin during install — namespace-admin is sufficient.

What OpenBox does not need on the cluster

  • ❌ ArgoCD — you can install with plain helm install
  • ❌ Karpenter — HPA suffices; any cluster autoscaler works
  • ❌ Cilium ClusterMesh — chart is single-cluster
  • ❌ Service mesh (Istio is default but optional; NGINX works)
  • ❌ GPU operator preinstalled — only needed if using LlamaFirewall vllm

Next

Prerequisites checklist →