206 lines
4.4 KiB
YAML
206 lines
4.4 KiB
YAML
|
|
# Example values for Label Studio Helm Chart
|
||
|
|
# Copy this file to my-values.yaml and customize as needed
|
||
|
|
|
||
|
|
# Global configuration
|
||
|
|
global:
|
||
|
|
image:
|
||
|
|
repository: heartexlabs/label-studio
|
||
|
|
pullPolicy: IfNotPresent
|
||
|
|
tag: "latest" # Use specific version in production
|
||
|
|
|
||
|
|
# PostgreSQL Database Configuration
|
||
|
|
pgConfig:
|
||
|
|
host: "postgresql.default.svc.cluster.local"
|
||
|
|
port: 5432
|
||
|
|
dbName: "labelstudio"
|
||
|
|
userName: "labelstudio"
|
||
|
|
password:
|
||
|
|
secretName: "postgresql-secret"
|
||
|
|
secretKey: "password"
|
||
|
|
|
||
|
|
# Redis Configuration
|
||
|
|
redisConfig:
|
||
|
|
host: "redis://redis.default.svc.cluster.local:6379/1"
|
||
|
|
password:
|
||
|
|
secretName: "redis-secret"
|
||
|
|
secretKey: "password"
|
||
|
|
|
||
|
|
# Extra Environment Variables
|
||
|
|
extraEnvironmentVars:
|
||
|
|
PYTHONUNBUFFERED: "1"
|
||
|
|
DEBUG: "false"
|
||
|
|
LOG_LEVEL: "INFO"
|
||
|
|
|
||
|
|
# Persistence Configuration
|
||
|
|
persistence:
|
||
|
|
enabled: true
|
||
|
|
type: volume
|
||
|
|
config:
|
||
|
|
volume:
|
||
|
|
storageClass: "gp2" # Change to your storage class
|
||
|
|
size: 50Gi
|
||
|
|
accessModes:
|
||
|
|
- ReadWriteOnce
|
||
|
|
|
||
|
|
# Deployment Configuration
|
||
|
|
replicaCount: 2
|
||
|
|
|
||
|
|
# Service Configuration
|
||
|
|
service:
|
||
|
|
type: ClusterIP
|
||
|
|
port: 8080
|
||
|
|
targetPort: 8080
|
||
|
|
|
||
|
|
# Ingress Configuration
|
||
|
|
ingress:
|
||
|
|
enabled: true
|
||
|
|
className: "nginx"
|
||
|
|
annotations:
|
||
|
|
nginx.ingress.kubernetes.io/proxy-body-size: "200m"
|
||
|
|
nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
|
||
|
|
nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
|
||
|
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||
|
|
hosts:
|
||
|
|
- host: label-studio.yourdomain.com
|
||
|
|
paths:
|
||
|
|
- path: /
|
||
|
|
pathType: ImplementationSpecific
|
||
|
|
tls:
|
||
|
|
- secretName: label-studio-tls
|
||
|
|
hosts:
|
||
|
|
- label-studio.yourdomain.com
|
||
|
|
|
||
|
|
# Resource Configuration
|
||
|
|
resources:
|
||
|
|
limits:
|
||
|
|
cpu: 2000m
|
||
|
|
memory: 4Gi
|
||
|
|
requests:
|
||
|
|
cpu: 1000m
|
||
|
|
memory: 2Gi
|
||
|
|
|
||
|
|
# Health Checks
|
||
|
|
livenessProbe:
|
||
|
|
httpGet:
|
||
|
|
path: /health
|
||
|
|
port: http
|
||
|
|
initialDelaySeconds: 120
|
||
|
|
periodSeconds: 30
|
||
|
|
timeoutSeconds: 10
|
||
|
|
failureThreshold: 3
|
||
|
|
|
||
|
|
readinessProbe:
|
||
|
|
httpGet:
|
||
|
|
path: /health
|
||
|
|
port: http
|
||
|
|
initialDelaySeconds: 60
|
||
|
|
periodSeconds: 10
|
||
|
|
timeoutSeconds: 5
|
||
|
|
failureThreshold: 3
|
||
|
|
|
||
|
|
# Autoscaling
|
||
|
|
autoscaling:
|
||
|
|
enabled: true
|
||
|
|
minReplicas: 2
|
||
|
|
maxReplicas: 10
|
||
|
|
targetCPUUtilizationPercentage: 70
|
||
|
|
targetMemoryUtilizationPercentage: 80
|
||
|
|
|
||
|
|
# Environment Variables
|
||
|
|
env:
|
||
|
|
# Database settings (will be overridden by global.pgConfig if set)
|
||
|
|
DJANGO_DB: "default"
|
||
|
|
POSTGRE_NAME: "labelstudio"
|
||
|
|
POSTGRE_USER: "labelstudio"
|
||
|
|
POSTGRE_PORT: "5432"
|
||
|
|
POSTGRE_HOST: "postgresql.default.svc.cluster.local"
|
||
|
|
|
||
|
|
# Redis settings (will be overridden by global.redisConfig if set)
|
||
|
|
REDIS_LOCATION: "redis://redis.default.svc.cluster.local:6379/1"
|
||
|
|
|
||
|
|
# Label Studio specific settings
|
||
|
|
LABEL_STUDIO_HOST: "https://label-studio.yourdomain.com"
|
||
|
|
LABEL_STUDIO_USERNAME: "admin@yourdomain.com"
|
||
|
|
LABEL_STUDIO_PASSWORD: "change-this-password"
|
||
|
|
|
||
|
|
# Storage settings
|
||
|
|
ENABLE_LOCAL_FILES_ACCESS: "true"
|
||
|
|
LOCAL_FILES_SERVING_ENABLED: "true"
|
||
|
|
|
||
|
|
# Security settings
|
||
|
|
SSRF_PROTECTION_ENABLED: "true"
|
||
|
|
|
||
|
|
# Feature flags
|
||
|
|
FEATURE_FLAGS_DEFAULT_VALUE: "false"
|
||
|
|
|
||
|
|
# Node Selection
|
||
|
|
nodeSelector: {}
|
||
|
|
# kubernetes.io/arch: amd64
|
||
|
|
|
||
|
|
# Tolerations
|
||
|
|
tolerations: []
|
||
|
|
# - key: "key1"
|
||
|
|
# operator: "Equal"
|
||
|
|
# value: "value1"
|
||
|
|
# effect: "NoSchedule"
|
||
|
|
|
||
|
|
# Affinity
|
||
|
|
affinity: {}
|
||
|
|
# podAntiAffinity:
|
||
|
|
# preferredDuringSchedulingIgnoredDuringExecution:
|
||
|
|
# - weight: 100
|
||
|
|
# podAffinityTerm:
|
||
|
|
# labelSelector:
|
||
|
|
# matchExpressions:
|
||
|
|
# - key: app.kubernetes.io/name
|
||
|
|
# operator: In
|
||
|
|
# values:
|
||
|
|
# - label-studio
|
||
|
|
# topologyKey: kubernetes.io/hostname
|
||
|
|
|
||
|
|
# Additional volumes
|
||
|
|
volumes: []
|
||
|
|
# - name: custom-config
|
||
|
|
# configMap:
|
||
|
|
# name: label-studio-config
|
||
|
|
|
||
|
|
# Additional volume mounts
|
||
|
|
volumeMounts: []
|
||
|
|
# - name: custom-config
|
||
|
|
# mountPath: /app/config
|
||
|
|
# readOnly: true
|
||
|
|
|
||
|
|
# Service Account
|
||
|
|
serviceAccount:
|
||
|
|
create: true
|
||
|
|
automount: true
|
||
|
|
annotations: {}
|
||
|
|
name: ""
|
||
|
|
|
||
|
|
# Pod Security Context
|
||
|
|
podSecurityContext:
|
||
|
|
fsGroup: 1001
|
||
|
|
|
||
|
|
# Security Context
|
||
|
|
securityContext:
|
||
|
|
runAsNonRoot: true
|
||
|
|
runAsUser: 1001
|
||
|
|
capabilities:
|
||
|
|
drop:
|
||
|
|
- ALL
|
||
|
|
readOnlyRootFilesystem: false
|
||
|
|
|
||
|
|
# ConfigMap for additional configuration
|
||
|
|
configMap:
|
||
|
|
create: true
|
||
|
|
data:
|
||
|
|
# Add any additional configuration files here
|
||
|
|
# custom.conf: |
|
||
|
|
# # Custom configuration
|
||
|
|
|
||
|
|
# Secrets for sensitive data
|
||
|
|
secrets:
|
||
|
|
create: true
|
||
|
|
data:
|
||
|
|
# Add any additional secrets here
|
||
|
|
# api-key: "your-api-key"
|