Changes: - Replaced separate api and frontend deployments with single unified app deployment - Updated values.yaml: Changed from api/frontend configs to single app config - Renamed templates: api-deployment.yaml → app-deployment.yaml - Removed frontend-deployment.yaml and frontend-service.yaml (no longer needed) - Updated app image to warehouse13/app (multi-stage Docker build) - Combined resource allocations: 384Mi memory, 350m CPU (up from separate totals) - Updated all example values files (dev, production, air-gapped) - Updated NOTES.txt to reflect single service on port 8000 - Updated ingress to route all traffic to single app service - Added ARCHITECTURE.md documenting the unified container approach Architecture: The application now uses a multi-stage Docker build: 1. Stage 1: Builds Angular frontend with Node 2. Stage 2: Python FastAPI backend that serves static frontend from /static Benefits: - Simplified deployment (1 container instead of 2) - Reduced resource usage (no separate nginx) - Easier scaling (1 deployment to manage) - Consistent versioning (frontend/backend always match) Access pattern: - http://localhost:8000 → Angular frontend - http://localhost:8000/api → FastAPI REST API - http://localhost:8000/docs → API documentation - http://localhost:8000/health → Health check 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
140 lines
2.7 KiB
YAML
140 lines
2.7 KiB
YAML
# Warehouse13 - Enterprise Test Artifact Storage
|
|
# Default values for Helm chart
|
|
|
|
# Global settings
|
|
global:
|
|
deploymentMode: "standard" # standard or airgapped
|
|
storageBackend: "minio" # minio or s3
|
|
|
|
# PostgreSQL Database
|
|
postgres:
|
|
enabled: true
|
|
image:
|
|
repository: postgres
|
|
tag: 15-alpine
|
|
pullPolicy: IfNotPresent
|
|
auth:
|
|
username: user
|
|
password: password
|
|
database: datalake
|
|
persistence:
|
|
enabled: true
|
|
size: 10Gi
|
|
storageClass: ""
|
|
resources:
|
|
requests:
|
|
memory: "256Mi"
|
|
cpu: "250m"
|
|
limits:
|
|
memory: "512Mi"
|
|
cpu: "500m"
|
|
service:
|
|
type: ClusterIP
|
|
port: 5432
|
|
|
|
# MinIO Object Storage
|
|
minio:
|
|
enabled: true
|
|
image:
|
|
repository: minio/minio
|
|
tag: latest
|
|
pullPolicy: IfNotPresent
|
|
auth:
|
|
rootUser: minioadmin
|
|
rootPassword: minioadmin
|
|
persistence:
|
|
enabled: true
|
|
size: 50Gi
|
|
storageClass: ""
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "250m"
|
|
limits:
|
|
memory: "1Gi"
|
|
cpu: "1000m"
|
|
service:
|
|
type: ClusterIP
|
|
apiPort: 9000
|
|
consolePort: 9001
|
|
|
|
# Application (Unified API + Frontend)
|
|
# The application uses a multi-stage Docker build:
|
|
# - Stage 1: Builds Angular frontend
|
|
# - Stage 2: Python FastAPI backend that serves the frontend from /static
|
|
app:
|
|
enabled: true
|
|
image:
|
|
repository: warehouse13/app
|
|
tag: latest
|
|
pullPolicy: IfNotPresent
|
|
replicas: 2
|
|
env:
|
|
databaseUrl: "postgresql://user:password@warehouse13-postgres:5432/datalake"
|
|
storageBackend: "minio"
|
|
minioEndpoint: "warehouse13-minio:9000"
|
|
resources:
|
|
requests:
|
|
memory: "384Mi"
|
|
cpu: "350m"
|
|
limits:
|
|
memory: "768Mi"
|
|
cpu: "750m"
|
|
service:
|
|
type: ClusterIP
|
|
port: 8000
|
|
healthCheck:
|
|
enabled: true
|
|
liveness:
|
|
path: /health
|
|
initialDelaySeconds: 30
|
|
periodSeconds: 10
|
|
readiness:
|
|
path: /health
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 5
|
|
|
|
# Ingress
|
|
ingress:
|
|
enabled: false
|
|
className: "nginx"
|
|
annotations:
|
|
# cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
|
hosts:
|
|
- host: warehouse13.example.com
|
|
paths:
|
|
- path: /
|
|
pathType: Prefix
|
|
backend: app # All traffic goes to unified app (serves both API and frontend)
|
|
tls: []
|
|
# - secretName: warehouse13-tls
|
|
# hosts:
|
|
# - warehouse13.example.com
|
|
|
|
# Service Account
|
|
serviceAccount:
|
|
create: true
|
|
annotations: {}
|
|
name: "warehouse13"
|
|
|
|
# Pod Security
|
|
podSecurityContext:
|
|
fsGroup: 2000
|
|
|
|
securityContext:
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
readOnlyRootFilesystem: false
|
|
runAsNonRoot: true
|
|
runAsUser: 1000
|
|
|
|
# Node selector
|
|
nodeSelector: {}
|
|
|
|
# Tolerations
|
|
tolerations: []
|
|
|
|
# Affinity
|
|
affinity: {}
|