Back to Openviking

OpenViking Helm Chart

deploy/helm/README.md

0.3.143.6 KB
Original Source

OpenViking Helm Chart

Deploy OpenViking on Kubernetes using Helm.

Prerequisites

  • Kubernetes 1.24+
  • Helm 3.x
  • A storage class that supports ReadWriteOnce persistent volumes (for RocksDB data)

Installation

Quick Start

bash
helm install openviking ./deploy/helm/openviking \
  --set config.server.root_api_key="YOUR_ROOT_API_KEY" \
  --set config.embedding.dense.api_key="YOUR_VOLCENGINE_API_KEY" \
  --set config.vlm.api_key="YOUR_VOLCENGINE_API_KEY"

Install with Custom Values

Create a my-values.yaml file:

yaml
replicaCount: 1

resources:
  limits:
    cpu: "4"
    memory: 8Gi
  requests:
    cpu: "1"
    memory: 2Gi

persistence:
  size: 50Gi
  storageClass: "gp3"

config:
  storage:
    workspace: /app/data/openviking_workspace
  log:
    level: INFO
    output: stdout
  server:
    host: "0.0.0.0"
    port: 1933
    workers: 1
    root_api_key: "your-secret-key"
  embedding:
    dense:
      api_base: "https://ark.cn-beijing.volces.com/api/v3"
      api_key: "your-volcengine-api-key"
      provider: "volcengine"
      dimension: 1024
      model: "doubao-embedding-vision-251215"
      input: "multimodal"
    max_concurrent: 10
  vlm:
    api_base: "https://ark.cn-beijing.volces.com/api/v3"
    api_key: "your-volcengine-api-key"
    provider: "volcengine"
    model: "doubao-seed-2-0-pro-260215"
    temperature: 0.0
    max_retries: 2
    thinking: false
    max_concurrent: 100

Then install:

bash
helm install openviking ./deploy/helm/openviking -f my-values.yaml

Using Secrets for API Keys

For production, avoid putting API keys directly in values. Use extraEnv with Kubernetes secrets instead:

bash
# Create a secret
kubectl create secret generic openviking-api-keys \
  --from-literal=embedding-api-key="YOUR_KEY" \
  --from-literal=vlm-api-key="YOUR_KEY"

Then reference it in your values:

yaml
extraEnv:
  - name: EMBEDDING_API_KEY
    valueFrom:
      secretKeyRef:
        name: openviking-api-keys
        key: embedding-api-key
  - name: VLM_API_KEY
    valueFrom:
      secretKeyRef:
        name: openviking-api-keys
        key: vlm-api-key

Configuration

ParameterDescriptionDefault
replicaCountNumber of replicas1
image.repositoryContainer image repositoryghcr.io/volcengine/openviking
image.tagContainer image tagChart appVersion
image.pullPolicyImage pull policyIfNotPresent
service.typeKubernetes service typeClusterIP
service.portService port1933
persistence.enabledEnable persistent storagetrue
persistence.sizePVC size20Gi
persistence.storageClassStorage class name"" (default)
persistence.existingClaimUse an existing PVC""
resources.limits.cpuCPU limit2
resources.limits.memoryMemory limit4Gi
resources.requests.cpuCPU request500m
resources.requests.memoryMemory request1Gi
ingress.enabledEnable ingressfalse
config.server.root_api_keyAPI key required when server binds to 0.0.0.0""
configFull ov.conf configuration objectSee values.yaml
extraEnvAdditional environment variables[]

Upgrading

bash
helm upgrade openviking ./deploy/helm/openviking -f my-values.yaml

The deployment uses a Recreate strategy to avoid data corruption from multiple pods accessing the same RocksDB volume simultaneously.

Uninstalling

bash
helm uninstall openviking

Note: The PersistentVolumeClaim is not deleted automatically. To remove stored data:

bash
kubectl delete pvc openviking-data