***
title: Prerequisites
description: Requirements for deploying Smallest Self-Host on Kubernetes
------------------------------------------------------------------------
**Kubernetes deployment is currently only available for ASR (Speech-to-Text).** TTS (Text-to-Speech) Kubernetes support is coming soon. For TTS deployments, please use [Docker](/waves/self-host/docker-setup/tts-deployment/quick-start).
## Overview
Before deploying Smallest Self-Host ASR on Kubernetes, ensure your cluster meets the requirements and you have the necessary tools and credentials.
## Kubernetes Cluster Requirements
### Minimum Cluster Specifications
**v1.19 or higher**
v1.24+ recommended
**Minimum 2 nodes**
* 1 CPU node (control plane/general)
* 1 GPU node (Lightning ASR)
**Minimum cluster capacity**
* 8 CPU cores
* 32 GB RAM
* 1 NVIDIA GPU
**Persistent volume support**
* Storage class available
* 100 GB minimum capacity
We recommend using L4 or L40s for the best performance.
## Required Tools
Install the following tools on your local machine:
### Helm
Helm 3.0 or higher is required.
```bash
brew install helm
```
```bash
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
```
```powershell
choco install kubernetes-helm
```
Verify installation:
```bash
helm version
```
### kubectl
Kubernetes CLI tool for cluster management.
```bash
brew install kubectl
```
```bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
```
```powershell
choco install kubernetes-cli
```
Verify installation:
```bash
kubectl version --client
```
## Cluster Access
### Configure kubectl
Ensure kubectl is configured to access your cluster:
```bash
kubectl cluster-info
kubectl get nodes
```
Expected output should show your cluster nodes.
### Test Cluster Access
Verify you have sufficient permissions:
```bash
kubectl auth can-i create deployments
kubectl auth can-i create services
kubectl auth can-i create secrets
```
All should return `yes`.
## GPU Support
### NVIDIA GPU Operator
For Kubernetes clusters, install the NVIDIA GPU Operator to manage GPU resources.
The Smallest Self-Host Helm chart includes the GPU Operator as an optional dependency. You can enable it during installation or install it separately.
#### Verify GPU Nodes
Check that GPU nodes are properly labeled:
```bash
kubectl get nodes -l node.kubernetes.io/instance-type
```
Verify GPU resources are available:
```bash
kubectl get nodes -o json | jq '.items[].status.capacity'
```
Look for `nvidia.com/gpu` in the capacity.
## Credentials
Obtain the following from Smallest.ai before installation:
Your unique license key for validation
**Contact**: [support@smallest.ai](mailto:support@smallest.ai)
You'll add this to `values.yaml`:
```yaml
global:
licenseKey: "your-license-key-here"
```
Credentials to pull Docker images from `quay.io`:
* Username
* Password
* Email
**Contact**: [support@smallest.ai](mailto:support@smallest.ai)
You'll add these to `values.yaml`:
```yaml
global:
imageCredentials:
username: "your-username"
password: "your-password"
email: "your-email"
```
Download URL for ASR models
**Contact**: [support@smallest.ai](mailto:support@smallest.ai)
You'll add this to `values.yaml`:
```yaml
models:
asrModelUrl: "your-model-url"
```
## Storage Requirements
### Storage Class
Verify a storage class is available:
```bash
kubectl get storageclass
```
You should see at least one storage class marked as `(default)` or available.
### For AWS Deployments
If deploying on AWS EKS, you'll need:
* **EBS CSI Driver** for block storage
* **EFS CSI Driver** for shared file storage (recommended for model storage)
See the [AWS Deployment](/waves/self-host/kubernetes-setup/quick-start) guide for detailed setup instructions.
## Network Requirements
### Required Ports
Ensure the following ports are accessible within the cluster:
| Port | Service | Purpose |
| ---- | ------------- | --------------------------- |
| 7100 | API Server | Client API requests |
| 2269 | Lightning ASR | Internal ASR processing |
| 3369 | License Proxy | Internal license validation |
| 6379 | Redis | Internal caching |
### External Access
The License Proxy requires outbound HTTPS access to:
* `console-api.smallest.ai` (port 443)
Ensure your cluster's network policies and security groups allow outbound HTTPS traffic from pods.
## Optional Components
### Prometheus & Grafana
For monitoring and autoscaling based on custom metrics:
* **Prometheus Operator** (included in chart)
* **Grafana** (included in chart)
* **Prometheus Adapter** (included in chart)
These are required for:
* Custom metrics-based autoscaling
* Advanced monitoring dashboards
* Performance visualization
### Cluster Autoscaler
For automatic node scaling on AWS EKS:
* IAM role with autoscaling permissions
* IRSA (IAM Roles for Service Accounts) configured
See the [Cluster Autoscaler](/waves/self-host/kubernetes-setup/autoscaling/cluster-autoscaler) guide for setup.
## Namespace
Decide on a namespace for deployment:
Deploy to the default namespace:
```bash
kubectl config set-context --current --namespace=default
```
Create and use a dedicated namespace:
```bash
kubectl create namespace smallest
kubectl config set-context --current --namespace=smallest
```
## Verification Checklist
Before proceeding, ensure:
```bash
kubectl get nodes
```
Shows all cluster nodes in Ready state
```bash
kubectl get nodes -o json | jq '.items[].status.capacity."nvidia.com/gpu"'
```
Shows GPU count for GPU nodes
```bash
helm version
```
Shows Helm 3.x
```bash
kubectl get storageclass
```
Shows at least one storage class
* [ ] License key obtained
* [ ] Container registry credentials
* [ ] Model download URL
```bash
kubectl top nodes
```
Shows available resources for deployment
## AWS-Specific Prerequisites
If deploying on AWS EKS, see:
Complete guide for setting up EKS cluster with GPU support
## What's Next?
Once all prerequisites are met, proceed to the quick start:
Deploy Smallest Self-Host with Helm