Skip to main content

Helm install (BYOC)

1. Add repos + fetch chart deps

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

# Option A: install from OCI registry (once published)
helm pull oci://ghcr.io/openbox-ai/charts/openbox --version 0.1.0

# Option B: clone repo
git clone https://github.com/OpenBox-AI/openbox-manifest-k8s-cluster.git
cd openbox-manifest-k8s-cluster
helm dependency update charts/openbox

2. Minimal values-byoc.yaml

Start with the smallest override set that works — you can layer more customization later. Full reference: values reference.

# values-byoc.yaml

global:
ingress:
type: nginx # or istio / traefik — see next page
className: nginx
domain: openbox.mycompany.internal

# If cluster does NOT have Argo Rollouts CRD, disable canary strategy
openbox-guardrails-service:
rollout:
enabled: false

# If cluster has a preferred StorageClass, override chart defaults
postgresql:
primary:
persistence:
storageClass: my-fast-ssd
size: 100Gi

# If no GPU node available, disable LlamaFirewall vllm
guardrails-api:
llamafirewall:
enabled: false

# If bringing your own PostgreSQL (external RDS / Cloud SQL / etc.)
postgresql:
enabled: false
openbox-backend:
db:
host: my-external-postgres.internal
port: 5432
name: openbox
userSecretRef: openbox-backend-db-credentials

3. Install

# Create namespace
kubectl create namespace openbox

# Install
helm upgrade --install openbox charts/openbox \
-n openbox \
-f values-byoc.yaml \
--atomic --wait --timeout 15m

--atomic rolls back on failure. --wait blocks until all pods Ready.

4. Verify

kubectl get pods -n openbox
# Expect all Running / Ready. Count depends on your value overrides:
# Minimal (no GPU, no self-hosted Temporal): 6-8 pods
# Full (with LlamaFirewall + self-hosted Temporal): 15-20 pods

kubectl get svc,ingress,hpa -n openbox

5. Rollback

helm history openbox -n openbox
helm rollback openbox <revision> -n openbox

Common overrides

SituationChange in values-byoc.yaml
Use existing Postgrespostgresql.enabled: false + wire openbox-backend.db.host
Use existing Redisopenbox-core.redis.external.host + postgresql.enabled unchanged (they're separate)
Skip GPU workloadsguardrails-api.llamafirewall.enabled: false
No Argo Rollouts CRDopenbox-guardrails-service.rollout.enabled: false
Different image registryglobal.imageRegistry: harbor.mycompany.internal
Custom pull secretglobal.imagePullSecrets: [my-pull-secret]
Different namespace namingChart uses release name as prefix — install with -n openbox for canonical naming

See Helm chart → Customization for deeper walkthroughs.

Uninstall

helm uninstall openbox -n openbox
kubectl delete namespace openbox # deletes PVCs — take DB backup first

Next

Ingress & TLS →