Skip to main content
This guide walks you through the installation steps for SambaStack on-prem, including authentication, namespace creation, secrets configuration, and Helm deployment.

Step 1: Authenticate and Configure Cluster

Create Namespace

Create the sambastack namespace:
kubectl create namespace sambastack

Create Image Pull Secret

Create a Docker registry secret for pulling images from Artifact Registry using your Google Cloud service account JSON key:
kubectl create secret docker-registry regcred \
  --docker-server=us-docker.pkg.dev \
  --docker-username=_json_key \
  --docker-password="$(cat <service-account-key>.json)" \
  --namespace sambastack

Create Artifact Reader Secret

Create a secret for reading model artifacts from Google Cloud Storage:
kubectl create secret generic sambanova-artifact-reader \
  --from-file=GOOGLE_APPLICATION_CREDENTIALS=<service-account-key>.json \
  --namespace sambastack

Label Reconfigurable Dataflow Unit (RDU) nodes

Label each RDU node for scheduling. Add --overwrite for idempotency:
kubectl label nodes <NODE_NAME> snRduArch=sn40-16 --overwrite
Repeat this command for each node in your cluster.

Step 2: Prepare sambastack.yaml

Configure your deployment by creating a sambastack.yaml file. This file defines ingress settings, TLS configuration, and high availability parameters.

Minimal Configuration Example

gateway:
  replicas: 3
  auth:
    enabled: true
    secretName: ""     # set if using custom OIDC secret (see Optional Configuration)
  ingress:
    hosts:
      - host: api.<yourdomain>
        tlsSecretName: tls-cert

cloud-ui:
  replicas: 3
  ingress:
    hosts:
      - host: ui.<yourdomain>
        tlsSecretName: tls-cert

db-admin:
  admins: []           # add admin emails to access Admin UI

auth-and-billing:
  replicas: 3
  # If using EXTERNAL PostgreSQL:
  pgSecretName: pg-credentials

# Database choice:
cloudnative-pg:
  enabled: false       # false = external PostgreSQL; true = in-cluster PostgreSQL

bundles:
  bundleSpecs:
    - name: llama-4-medium
  bundleDeploymentSpecs:
    - name: llama-4-medium
      groups:
        - name: default
          minReplicas: 1
          qosList: [web, free]
See Configuration Parameters section for parameter details.

Optional Configurations

Create Kubernetes TLS Secret

Once you have the certificates, create a Kubernetes TLS secret in the sambastack namespace.If using one certificate for both hosts, you only need to create one secret:
kubectl create secret tls tls-cert \
  --cert=path/to/cert.crt \
  --key=path/to/private.key \
  --namespace sambastack
Replace tls-cert with the secret name you plan to reference in your sambastack.yaml.

Update sambastack.yaml

Edit your sambastack.yaml configuration file to include your custom domain and TLS secret:
gateway:
  ingress:
    hosts:
      - host: api.<yourdomain>
        tlsSecretName: tls-cert

cloud-ui:
  ingress:
    hosts:
      - host: ui.<yourdomain>
        tlsSecretName: tls-cert
Ensure the tlsSecretName value exactly matches the name of the Kubernetes TLS secret created above.
  • The secret must exist in the target namespace before you run Helm
  • If using different certificates per host, create multiple secrets and reference them per-host

Step 3: Helm Login and Install

Authenticate with Helm Registry

Use your Google Cloud service account to authenticate with the Helm registry:
export GOOGLE_APPLICATION_CREDENTIALS="<path/to/sa.json>"
gcloud auth activate-service-account --key-file="$GOOGLE_APPLICATION_CREDENTIALS"
helm registry login -u oauth2accesstoken -p "$(gcloud auth print-access-token)" us-docker.pkg.dev

Install SambaStack

Install the base chart and main SambaStack chart:
helm upgrade \
  --install \
  --namespace sambastack \
  --version 0.3.407 \
  sambastack-base \
  oci://<REGISTRY_URL>/sambastack/sambastack-base

helm upgrade \
  --install \
  --namespace sambastack \
  --version 0.3.407 \
  sambastack \
  -f sambastack.yaml \
  oci://<REGISTRY_URL>/sambastack/sambastack
SambaNova provides the full registry URL and version number during handover. Contact your SambaNova representative for access credentials.
Version numbers change with new chart releases. Use the version number provided by your SambaNova representative.

Configuration Parameters

This section describes the key parameters in sambastack.yaml.

gateway (API Plane)

ParameterTypeDescription
gateway.replicasintegerAPI gateway replica count for high availability
gateway.auth.enabledbooleanEnable built-in OIDC integration
gateway.auth.secretNamestringName of Kubernetes Secret containing OIDC credentials. Leave empty for default auth mode
gateway.ingress.hosts[].hoststringYour API FQDN (e.g., api.example.com)
gateway.ingress.hosts[].tlsSecretNamestringKubernetes TLS secret name for the API host

cloud-ui (Web UI)

ParameterTypeDescription
cloud-ui.replicasintegerUI replica count for high availability
cloud-ui.ingress.hosts[].hoststringYour UI FQDN (e.g., ui.example.com)
cloud-ui.ingress.hosts[].tlsSecretNamestringKubernetes TLS secret name for the UI host

db-admin

ParameterTypeDescription
db-admin.adminslistEmail addresses of users who can access the Admin UI

auth-and-billing

ParameterTypeDescription
auth-and-billing.replicasintegerCore control-plane service scaling
auth-and-billing.pgSecretNamestringName of Kubernetes Secret containing external PostgreSQL connection details (DB_HOST, DB_DATABASE, DB_USER, DB_PASSWD) as base64-encoded data fields. Required when using external PostgreSQL

cloudnative-pg

ParameterTypeDescription
cloudnative-pg.enabledbooleantrue = deploy in-cluster PostgreSQL; false = use external PostgreSQL via auth-and-billing.pgSecretName

bundles

ParameterTypeDescription
bundles.bundleSpecs[]listDeclares bundles (model assets) by name
bundles.bundleDeploymentSpecs[]listDeploys the declared bundles
bundleDeploymentSpecs[].namestringMust match a declared bundleSpecs.name
bundleDeploymentSpecs[].groups[].namestringRouting/capacity group name
bundleDeploymentSpecs[].groups[].minReplicasintegerMinimum engines for the group
bundleDeploymentSpecs[].groups[].qosList[]listQoS tags (e.g., web, free, pro)

serviceTiers

Service tiers define consumption policies and routing limits per plan/tier. This configuration must be at the same YAML level as bundles.Example configuration:
serviceTiers:
  - name: free
    enabled: true
    qos: web
    rateLimit:
      rpm: 120         # requests per minute
      tpm: 60000       # tokens per minute
    allowedBundles:
      - llama-4-medium
  - name: pro
    enabled: true
    qos: pro
    rateLimit:
      rpm: 1200
      tpm: 600000
    allowedBundles:
      - llama-4-medium
      - llama-4-large
serviceTiers must be at the same YAML level as bundles (root-level key in sambastack.yaml).