Skip to content

Commit 9861d3a

Browse files
authored
improvement(helm): added more to helm charts, remove instance selector for various cloud providers (#2412)
* improvement(helm): added more to helm charts, remove instance selector for various cloud providers * ack PR comment
1 parent fdbf8be commit 9861d3a

File tree

7 files changed

+107
-100
lines changed

7 files changed

+107
-100
lines changed

helm/sim/examples/values-aws.yaml

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
# Global configuration
55
global:
66
imageRegistry: "ghcr.io"
7-
storageClass: "gp3"
7+
storageClass: "gp2" # Use gp2 (default on EKS) or create gp3 StorageClass for better performance
88

99
# Main application
1010
app:
1111
enabled: true
1212
replicaCount: 2
13-
14-
# Node selector for application pods (customize based on your EKS node labels)
15-
nodeSelector:
16-
kubernetes.io/arch: amd64
17-
node.kubernetes.io/instance-type: "t3.large"
13+
14+
# Node selector for application pods
15+
# Uncomment and customize based on your EKS node labels:
16+
# nodeSelector:
17+
# node.kubernetes.io/instance-type: "t3.large"
1818

1919
resources:
2020
limits:
@@ -28,8 +28,8 @@ app:
2828
env:
2929
NEXT_PUBLIC_APP_URL: "https://simstudio.acme.com"
3030
BETTER_AUTH_URL: "https://simstudio.acme.com"
31-
SOCKET_SERVER_URL: "https://simstudio-ws.acme.com"
32-
NEXT_PUBLIC_SOCKET_URL: "https://simstudio-ws.acme.com"
31+
# SOCKET_SERVER_URL is auto-detected (uses internal service http://sim-realtime:3002)
32+
NEXT_PUBLIC_SOCKET_URL: "https://simstudio-ws.acme.com" # Public WebSocket URL for browsers
3333

3434
# Security settings (REQUIRED - replace with your own secure secrets)
3535
# Generate using: openssl rand -hex 32
@@ -52,11 +52,11 @@ app:
5252
realtime:
5353
enabled: true
5454
replicaCount: 2
55-
56-
# Node selector for realtime pods (customize based on your EKS node labels)
57-
nodeSelector:
58-
kubernetes.io/arch: amd64
59-
node.kubernetes.io/instance-type: "t3.medium"
55+
56+
# Node selector for realtime pods
57+
# Uncomment and customize based on your EKS node labels:
58+
# nodeSelector:
59+
# node.kubernetes.io/instance-type: "t3.medium"
6060

6161
resources:
6262
limits:
@@ -89,10 +89,11 @@ migrations:
8989
# PostgreSQL database
9090
postgresql:
9191
enabled: true
92-
93-
# Node selector for database pods (recommended: memory-optimized EC2 instances)
94-
nodeSelector:
95-
node.kubernetes.io/instance-type: "r5.large"
92+
93+
# Node selector for database pods
94+
# Uncomment and customize (recommended: memory-optimized EC2 instances like r5.large):
95+
# nodeSelector:
96+
# node.kubernetes.io/instance-type: "r5.large"
9697

9798
# Database authentication (REQUIRED - set secure credentials)
9899
auth:
@@ -109,17 +110,17 @@ postgresql:
109110
memory: "2Gi"
110111
cpu: "1000m"
111112

112-
# Persistent storage using AWS EBS GP3 volumes
113+
# Persistent storage using AWS EBS volumes
113114
persistence:
114115
enabled: true
115-
storageClass: "gp3"
116+
storageClass: "gp2" # Use gp2 (default) or create gp3 StorageClass
116117
size: 50Gi
117118
accessModes:
118119
- ReadWriteOnce
119120

120-
# SSL/TLS configuration
121+
# SSL/TLS configuration (requires cert-manager to be installed)
121122
tls:
122-
enabled: true
123+
enabled: false # Set to true if cert-manager is installed
123124
certificatesSecret: postgres-tls-secret
124125

125126
# PostgreSQL performance tuning for AWS infrastructure
@@ -130,14 +131,15 @@ postgresql:
130131
minWalSize: "160MB"
131132

132133
# Ollama AI models with GPU acceleration (AWS EC2 GPU instances)
134+
# Set ollama.enabled: false if you don't need local AI models
133135
ollama:
134-
enabled: true
136+
enabled: false
135137
replicaCount: 1
136-
137-
# GPU node targeting (recommended: g4dn.xlarge or p3.2xlarge instances)
138-
nodeSelector:
139-
node.kubernetes.io/instance-type: "g4dn.xlarge"
140-
kubernetes.io/arch: amd64
138+
139+
# GPU node targeting - uncomment and customize for GPU instances
140+
# Recommended: g4dn.xlarge or p3.2xlarge instances
141+
# nodeSelector:
142+
# node.kubernetes.io/instance-type: "g4dn.xlarge"
141143

142144
tolerations:
143145
- key: "nvidia.com/gpu"
@@ -162,7 +164,7 @@ ollama:
162164
# High-performance storage for AI models
163165
persistence:
164166
enabled: true
165-
storageClass: "gp3"
167+
storageClass: "gp2" # Use gp2 (default) or create gp3 StorageClass
166168
size: 100Gi
167169
accessModes:
168170
- ReadWriteOnce

helm/sim/examples/values-azure.yaml

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,19 @@
44
# Global configuration
55
global:
66
imageRegistry: "ghcr.io"
7-
storageClass: "managed-csi-premium"
7+
# Use "managed-csi-premium" for Premium SSD (requires Premium storage-capable VMs like Standard_DS*)
8+
# Use "managed-csi" for Standard SSD (works with all VM types)
9+
storageClass: "managed-csi"
810

911
# Main application
1012
app:
1113
enabled: true
12-
replicaCount: 1
13-
14-
# Node selector for application pods (customize based on your AKS node labels)
15-
nodeSelector:
16-
node-role: application
14+
replicaCount: 2
15+
16+
# Node selector for application pods
17+
# Uncomment and customize based on your AKS node labels:
18+
# nodeSelector:
19+
# agentpool: "application"
1720

1821
resources:
1922
limits:
@@ -26,8 +29,8 @@ app:
2629
env:
2730
NEXT_PUBLIC_APP_URL: "https://simstudio.acme.com"
2831
BETTER_AUTH_URL: "https://simstudio.acme.com"
29-
SOCKET_SERVER_URL: "https://simstudio-ws.acme.com"
30-
NEXT_PUBLIC_SOCKET_URL: "https://simstudio-ws.acme.com"
32+
# SOCKET_SERVER_URL is auto-detected (uses internal service http://sim-realtime:3002)
33+
NEXT_PUBLIC_SOCKET_URL: "https://simstudio-ws.acme.com" # Public WebSocket URL for browsers
3134

3235
# Security settings (REQUIRED - replace with your own secure secrets)
3336
# Generate using: openssl rand -hex 32
@@ -46,11 +49,12 @@ app:
4649
# Realtime service
4750
realtime:
4851
enabled: true
49-
replicaCount: 1
50-
51-
# Node selector for application pods (customize based on your AKS node labels)
52-
nodeSelector:
53-
node-role: application
52+
replicaCount: 2
53+
54+
# Node selector for realtime pods
55+
# Uncomment and customize based on your AKS node labels:
56+
# nodeSelector:
57+
# agentpool: "application"
5458

5559
resources:
5660
limits:
@@ -74,10 +78,11 @@ migrations:
7478
# PostgreSQL database
7579
postgresql:
7680
enabled: true
77-
78-
# Node selector for database pods (recommended: memory-optimized VM sizes)
79-
nodeSelector:
80-
node-role: datalake
81+
82+
# Node selector for database pods
83+
# Uncomment and customize (recommended: memory-optimized VM sizes):
84+
# nodeSelector:
85+
# agentpool: "database"
8186

8287
# Database authentication (REQUIRED - set secure credentials)
8388
auth:
@@ -93,15 +98,15 @@ postgresql:
9398
memory: "1Gi"
9499
cpu: "500m"
95100

96-
# Persistent storage using Azure Premium SSD
101+
# Persistent storage using Azure Managed Disk
97102
persistence:
98103
enabled: true
99-
storageClass: "managed-csi-premium"
104+
storageClass: "managed-csi"
100105
size: 10Gi
101106

102-
# SSL/TLS configuration (recommended for production)
107+
# SSL/TLS configuration (requires cert-manager to be installed)
103108
tls:
104-
enabled: true
109+
enabled: false # Set to true if cert-manager is installed
105110
certificatesSecret: postgres-tls-secret
106111

107112
# PostgreSQL performance tuning for Azure infrastructure
@@ -112,13 +117,15 @@ postgresql:
112117
minWalSize: "80MB"
113118

114119
# Ollama AI models with GPU acceleration (Azure NC-series VMs)
120+
# Set ollama.enabled: false if you don't need local AI models
115121
ollama:
116-
enabled: true
122+
enabled: false
117123
replicaCount: 1
118-
119-
# GPU node targeting (recommended: NC6s_v3 or NC12s_v3 VMs)
120-
nodeSelector:
121-
accelerator: nvidia
124+
125+
# GPU node targeting - uncomment and customize for GPU node pools
126+
# Recommended: NC6s_v3 or NC12s_v3 VMs
127+
# nodeSelector:
128+
# agentpool: "gpu"
122129

123130
tolerations:
124131
- key: "sku"
@@ -139,7 +146,7 @@ ollama:
139146
memory: "4Gi"
140147
cpu: "1000m"
141148

142-
# High-performance storage for AI models
149+
# High-performance storage for AI models (use managed-csi-premium for GPU workloads)
143150
persistence:
144151
enabled: true
145152
storageClass: "managed-csi-premium"

helm/sim/examples/values-gcp.yaml

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ global:
1010
app:
1111
enabled: true
1212
replicaCount: 2
13-
14-
# Node selector for application pods (customize based on your GKE node labels)
15-
nodeSelector:
16-
kubernetes.io/arch: amd64
17-
cloud.google.com/gke-nodepool: "default-pool"
13+
14+
# Node selector for application pods
15+
# Uncomment and customize based on your GKE node labels:
16+
# nodeSelector:
17+
# cloud.google.com/gke-nodepool: "default-pool"
1818

1919
resources:
2020
limits:
@@ -28,8 +28,8 @@ app:
2828
env:
2929
NEXT_PUBLIC_APP_URL: "https://simstudio.acme.com"
3030
BETTER_AUTH_URL: "https://simstudio.acme.com"
31-
SOCKET_SERVER_URL: "https://simstudio-ws.acme.com"
32-
NEXT_PUBLIC_SOCKET_URL: "https://simstudio-ws.acme.com"
31+
# SOCKET_SERVER_URL is auto-detected (uses internal service http://sim-realtime:3002)
32+
NEXT_PUBLIC_SOCKET_URL: "https://simstudio-ws.acme.com" # Public WebSocket URL for browsers
3333

3434
# Security settings (REQUIRED - replace with your own secure secrets)
3535
# Generate using: openssl rand -hex 32
@@ -53,11 +53,11 @@ app:
5353
realtime:
5454
enabled: true
5555
replicaCount: 2
56-
57-
# Node selector for realtime pods (customize based on your GKE node labels)
58-
nodeSelector:
59-
kubernetes.io/arch: amd64
60-
cloud.google.com/gke-nodepool: "default-pool"
56+
57+
# Node selector for realtime pods
58+
# Uncomment and customize based on your GKE node labels:
59+
# nodeSelector:
60+
# cloud.google.com/gke-nodepool: "default-pool"
6161

6262
resources:
6363
limits:
@@ -90,11 +90,11 @@ migrations:
9090
# PostgreSQL database
9191
postgresql:
9292
enabled: true
93-
94-
# Node selector for database pods (recommended: memory-optimized machine types)
95-
nodeSelector:
96-
cloud.google.com/gke-nodepool: "database-pool"
97-
cloud.google.com/machine-family: "n2"
93+
94+
# Node selector for database pods
95+
# Uncomment and customize (recommended: memory-optimized machine types):
96+
# nodeSelector:
97+
# cloud.google.com/gke-nodepool: "database-pool"
9898

9999
# Database authentication (REQUIRED - set secure credentials)
100100
auth:
@@ -119,9 +119,9 @@ postgresql:
119119
accessModes:
120120
- ReadWriteOnce
121121

122-
# SSL/TLS configuration
122+
# SSL/TLS configuration (requires cert-manager to be installed)
123123
tls:
124-
enabled: true
124+
enabled: false # Set to true if cert-manager is installed
125125
certificatesSecret: postgres-tls-secret
126126

127127
# PostgreSQL performance tuning for GCP infrastructure
@@ -132,14 +132,16 @@ postgresql:
132132
minWalSize: "160MB"
133133

134134
# Ollama AI models with GPU acceleration (GCP GPU instances)
135+
# Set ollama.enabled: false if you don't need local AI models
135136
ollama:
136-
enabled: true
137+
enabled: false
137138
replicaCount: 1
138-
139-
# GPU node targeting (recommended: T4 or V100 GPU instances)
140-
nodeSelector:
141-
cloud.google.com/gke-nodepool: "gpu-pool"
142-
cloud.google.com/gke-accelerator: "nvidia-tesla-t4"
139+
140+
# GPU node targeting - uncomment and customize for GPU node pools
141+
# Recommended: T4 or V100 GPU instances
142+
# nodeSelector:
143+
# cloud.google.com/gke-nodepool: "gpu-pool"
144+
# cloud.google.com/gke-accelerator: "nvidia-tesla-t4"
143145

144146
tolerations:
145147
- key: "nvidia.com/gpu"

helm/sim/templates/_helpers.tpl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,15 @@ Validate required secrets and reject default placeholder values
204204
{{- if and .Values.postgresql.enabled (eq .Values.postgresql.auth.password "CHANGE-ME-SECURE-PASSWORD") }}
205205
{{- fail "postgresql.auth.password must not use the default placeholder value. Set a secure password for production" }}
206206
{{- end }}
207+
{{- if and .Values.postgresql.enabled (not (regexMatch "^[a-zA-Z0-9._-]+$" .Values.postgresql.auth.password)) }}
208+
{{- fail "postgresql.auth.password must only contain alphanumeric characters, hyphens, underscores, or periods to ensure DATABASE_URL compatibility. Generate with: openssl rand -base64 16 | tr -d '/+='" }}
209+
{{- end }}
207210
{{- if and .Values.externalDatabase.enabled (not .Values.externalDatabase.password) }}
208211
{{- fail "externalDatabase.password is required when using external database" }}
209212
{{- end }}
213+
{{- if and .Values.externalDatabase.enabled .Values.externalDatabase.password (not (regexMatch "^[a-zA-Z0-9._-]+$" .Values.externalDatabase.password)) }}
214+
{{- fail "externalDatabase.password must only contain alphanumeric characters, hyphens, underscores, or periods to ensure DATABASE_URL compatibility." }}
215+
{{- end }}
210216
{{- end }}
211217

212218
{{/*

helm/sim/templates/deployment-app.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ spec:
6868
- name: DATABASE_URL
6969
value: {{ include "sim.databaseUrl" . | quote }}
7070
- name: SOCKET_SERVER_URL
71-
value: {{ .Values.app.env.SOCKET_SERVER_URL | default "http://localhost:3002" | quote }}
71+
value: {{ include "sim.socketServerUrl" . | quote }}
7272
- name: OLLAMA_URL
7373
value: {{ include "sim.ollamaUrl" . | quote }}
7474
{{- range $key, $value := omit .Values.app.env "DATABASE_URL" "SOCKET_SERVER_URL" "OLLAMA_URL" }}

helm/sim/values.schema.json

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,7 @@
185185
},
186186
"OLLAMA_URL": {
187187
"type": "string",
188-
"format": "uri",
189-
"description": "Ollama local LLM server URL"
188+
"description": "Ollama local LLM server URL (leave empty if not using Ollama)"
190189
},
191190
"ELEVENLABS_API_KEY": {
192191
"type": "string",
@@ -238,18 +237,15 @@
238237
},
239238
"NEXT_PUBLIC_BRAND_LOGO_URL": {
240239
"type": "string",
241-
"format": "uri",
242-
"description": "Custom logo URL (must be a full URL, e.g., https://example.com/logo.png)"
240+
"description": "Custom logo URL (leave empty for default)"
243241
},
244242
"NEXT_PUBLIC_BRAND_FAVICON_URL": {
245243
"type": "string",
246-
"format": "uri",
247-
"description": "Custom favicon URL (must be a full URL, e.g., https://example.com/favicon.ico)"
244+
"description": "Custom favicon URL (leave empty for default)"
248245
},
249246
"NEXT_PUBLIC_CUSTOM_CSS_URL": {
250247
"type": "string",
251-
"format": "uri",
252-
"description": "Custom stylesheet URL (must be a full URL)"
248+
"description": "Custom stylesheet URL (leave empty for none)"
253249
},
254250
"NEXT_PUBLIC_SUPPORT_EMAIL": {
255251
"type": "string",

0 commit comments

Comments
 (0)