Kubernetes deployment
Untested - Placeholder Documentation
This Kubernetes deployment guide is a placeholder based on standard Helm chart patterns. It has not been tested and no official Helm chart exists yet.
If you need Kubernetes deployment, please contact us or use Docker Compose instead.
Deploy Synjar on Kubernetes for enterprise-scale deployments with high availability.
Prerequisites
- Kubernetes 1.24+
- Helm 3.0+
- kubectl configured
- External PostgreSQL (recommended)
- External S3-compatible storage
Quick start with Helm
# Add Synjar Helm repository
helm repo add synjar https://charts.synjar.com
helm repo update
# Install with default values
helm install synjar synjar/synjar \
--set database.url="postgresql://user:pass@host:5432/synjar" \
--set openai.apiKey="sk-your-api-key" \
--set jwt.secret="your-32-char-secret-minimum"
Configuration
values.yaml
replicaCount: 2
image:
repository: synjar/synjar
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 6200
ingress:
enabled: true
className: nginx
hosts:
- host: synjar.yourdomain.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: synjar-tls
hosts:
- synjar.yourdomain.com
database:
url: "postgresql://user:pass@postgres-host:5432/synjar"
openai:
apiKey: "sk-your-api-key"
jwt:
secret: "your-32-char-secret-minimum"
storage:
keyId: "your-key-id"
appKey: "your-app-key"
bucket: "your-bucket"
endpoint: "s3.region.backblazeb2.com"
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 2000m
memory: 2Gi
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70
Install with custom values
helm install synjar synjar/synjar -f values.yaml
Components
Deployment
- Stateless application pods
- Horizontal pod autoscaling
- Rolling updates
Service
- ClusterIP for internal access
- LoadBalancer for external (cloud providers)
Ingress
- TLS termination
- Path-based routing
ConfigMap/Secrets
- Non-sensitive config in ConfigMap
- Sensitive values in Secrets
High availability
Multiple replicas
replicaCount: 3
Pod disruption budget
podDisruptionBudget:
enabled: true
minAvailable: 1
Database
Use a managed PostgreSQL service:
- AWS RDS
- Google Cloud SQL
- Azure Database for PostgreSQL
Monitoring
Prometheus metrics
metrics:
enabled: true
port: 9090
Health checks
livenessProbe:
httpGet:
path: /health
port: 6200
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 6200
initialDelaySeconds: 5
periodSeconds: 5
Upgrading
helm upgrade synjar synjar/synjar -f values.yaml
Uninstalling
helm uninstall synjar