1+ # Enable to test multi-region deployment
2+ config .define_bool ('multi_region' )
3+ cfg = config .parse ()
4+
15update_settings (max_parallel_updates = 6 )
26
37# *:ci images are defined in .github/actions/tilt/docker-bake.hcl and used for .github/actions/tilt/action.yaml.
@@ -157,10 +161,21 @@ k8s_yaml(
157161 'helm template --set-file rustFrontendService.configuration=rust/frontend/sample_configs/distributed.yaml,rustLogService.configuration=rust/worker/chroma_config.yaml,heapTenderService.configuration=rust/worker/chroma_config.yaml,compactionService.configuration=rust/worker/chroma_config.yaml,queryService.configuration=rust/worker/chroma_config.yaml,garbageCollector.configuration=rust/worker/chroma_config.yaml --values k8s/distributed-chroma/values.yaml,k8s/distributed-chroma/values.dev.yaml k8s/distributed-chroma'
158162 ),
159163)
164+
165+ k8s_yaml (
166+ local (
167+ 'helm template --set-file rustFrontendService.configuration=rust/frontend/sample_configs/distributed2.yaml,rustLogService.configuration=rust/worker/chroma_config2.yaml,heapTenderService.configuration=rust/worker/chroma_config2.yaml,compactionService.configuration=rust/worker/chroma_config2.yaml,queryService.configuration=rust/worker/chroma_config2.yaml,garbageCollector.configuration=rust/worker/chroma_config2.yaml --values k8s/distributed-chroma/values2.yaml,k8s/distributed-chroma/values2.dev.yaml k8s/distributed-chroma'
168+ ),
169+ )
170+
160171watch_file ('rust/frontend/sample_configs/distributed.yaml' )
172+ watch_file ('rust/frontend/sample_configs/distributed2.yaml' )
161173watch_file ('rust/worker/chroma_config.yaml' )
174+ watch_file ('rust/worker/chroma_config2.yaml' )
162175watch_file ('k8s/distributed-chroma/values.yaml' )
163176watch_file ('k8s/distributed-chroma/values.dev.yaml' )
177+ watch_file ('k8s/distributed-chroma/values2.yaml' )
178+ watch_file ('k8s/distributed-chroma/values2.dev.yaml' )
164179watch_file ('k8s/distributed-chroma/*.yaml' )
165180
166181
@@ -177,60 +192,151 @@ k8s_yaml([
177192 'k8s/test/prometheus.yaml' ,
178193 'k8s/test/test-memberlist-cr.yaml' ,
179194 'k8s/test/postgres.yaml' ,
195+ 'k8s/test/postgres2.yaml' ,
180196])
181197
182198# Lots of things assume the cluster is in a basic state. Get it into a basic
183199# state before deploying anything else.
184200k8s_resource (
185201 objects = [
186- 'pod-watcher:Role' ,
187202 'memberlists.chroma.cluster:CustomResourceDefinition' ,
188- 'query-service-memberlist:MemberList' ,
189- 'compaction-service-memberlist:MemberList' ,
190- 'garbage-collection-service-memberlist:MemberList' ,
191- 'rust-log-service-memberlist:MemberList' ,
192-
193- 'sysdb-serviceaccount:ServiceAccount' ,
194- 'sysdb-serviceaccount-rolebinding:RoleBinding' ,
195- 'sysdb-query-service-memberlist-binding:RoleBinding' ,
196- 'sysdb-compaction-service-memberlist-binding:RoleBinding' ,
197-
198- 'query-service-serviceaccount:ServiceAccount' ,
199- 'query-service-serviceaccount-rolebinding:RoleBinding' ,
200- 'query-service-memberlist-readerwriter:Role' ,
201- 'query-service-query-service-memberlist-binding:RoleBinding' ,
202- 'query-service-memberlist-readerwriter-binding:RoleBinding' ,
203-
204- 'compaction-service-memberlist-readerwriter:Role' ,
205- 'compaction-service-compaction-service-memberlist-binding:RoleBinding' ,
206- 'compaction-service-memberlist-readerwriter-binding:RoleBinding' ,
207- 'compaction-service-serviceaccount:ServiceAccount' ,
208- 'compaction-service-serviceaccount-rolebinding:RoleBinding' ,
209-
210- 'test-memberlist:MemberList' ,
211- 'test-memberlist-reader:Role' ,
212- 'test-memberlist-reader-binding:RoleBinding' ,
213- 'lease-watcher:Role' ,
214- 'rust-frontend-service-config:ConfigMap' ,
203+
204+ 'pod-watcher:Role:chroma' ,
205+ 'query-service-memberlist:MemberList:chroma' ,
206+ 'compaction-service-memberlist:MemberList:chroma' ,
207+ 'garbage-collection-service-memberlist:MemberList:chroma' ,
208+ 'rust-log-service-memberlist:MemberList:chroma' ,
209+
210+ 'sysdb-serviceaccount:ServiceAccount:chroma' ,
211+ 'sysdb-serviceaccount-rolebinding:RoleBinding:chroma' ,
212+ 'sysdb-query-service-memberlist-binding:RoleBinding:chroma' ,
213+ 'sysdb-compaction-service-memberlist-binding:RoleBinding:chroma' ,
214+
215+ 'query-service-serviceaccount:ServiceAccount:chroma' ,
216+ 'query-service-serviceaccount-rolebinding:RoleBinding:chroma' ,
217+ 'query-service-memberlist-readerwriter:Role:chroma' ,
218+ 'query-service-query-service-memberlist-binding:RoleBinding:chroma' ,
219+ 'query-service-memberlist-readerwriter-binding:RoleBinding:chroma' ,
220+
221+ 'compaction-service-memberlist-readerwriter:Role:chroma' ,
222+ 'compaction-service-compaction-service-memberlist-binding:RoleBinding:chroma' ,
223+ 'compaction-service-memberlist-readerwriter-binding:RoleBinding:chroma' ,
224+ 'compaction-service-serviceaccount:ServiceAccount:chroma' ,
225+ 'compaction-service-serviceaccount-rolebinding:RoleBinding:chroma' ,
226+
227+ 'test-memberlist:MemberList:chroma' ,
228+ 'test-memberlist-reader:Role:chroma' ,
229+ 'test-memberlist-reader-binding:RoleBinding:chroma' ,
230+ 'lease-watcher:Role:chroma' ,
231+ 'rust-frontend-service-config:ConfigMap:chroma' ,
215232 ],
216233 new_name = 'k8s_setup' ,
217234 labels = ["infrastructure" ],
218235)
219236
237+ # Lots of things assume the cluster is in a basic state. Get it into a basic
238+ # state before deploying anything else.
239+ k8s_resource (
240+ objects = [
241+ 'pod-watcher:Role:chroma2' ,
242+ 'query-service-memberlist:MemberList:chroma2' ,
243+ 'compaction-service-memberlist:MemberList:chroma2' ,
244+ 'garbage-collection-service-memberlist:MemberList:chroma2' ,
245+ 'rust-log-service-memberlist:MemberList:chroma2' ,
246+
247+ 'sysdb-serviceaccount:ServiceAccount:chroma2' ,
248+ 'sysdb-serviceaccount-rolebinding:RoleBinding:chroma2' ,
249+ 'sysdb-query-service-memberlist-binding:RoleBinding:chroma2' ,
250+ 'sysdb-compaction-service-memberlist-binding:RoleBinding:chroma2' ,
251+
252+ 'query-service-serviceaccount:ServiceAccount:chroma2' ,
253+ 'query-service-serviceaccount-rolebinding:RoleBinding:chroma2' ,
254+ 'query-service-memberlist-readerwriter:Role:chroma2' ,
255+ 'query-service-query-service-memberlist-binding:RoleBinding:chroma2' ,
256+ 'query-service-memberlist-readerwriter-binding:RoleBinding:chroma2' ,
257+
258+ 'compaction-service-memberlist-readerwriter:Role:chroma2' ,
259+ 'compaction-service-compaction-service-memberlist-binding:RoleBinding:chroma2' ,
260+ 'compaction-service-memberlist-readerwriter-binding:RoleBinding:chroma2' ,
261+ 'compaction-service-serviceaccount:ServiceAccount:chroma2' ,
262+ 'compaction-service-serviceaccount-rolebinding:RoleBinding:chroma2' ,
263+
264+ 'lease-watcher:Role:chroma2' ,
265+ 'rust-frontend-service-config:ConfigMap:chroma2' ,
266+ ],
267+ new_name = 'k8s_setup2' ,
268+ labels = ["infrastructure2" ],
269+ )
270+
220271# Production Chroma
221- k8s_resource ('postgres' , resource_deps = ['k8s_setup' ], labels = ["infrastructure" ], port_forwards = '5432:5432' )
272+ k8s_resource ('postgres:deployment:chroma ' , resource_deps = ['k8s_setup' ], labels = ["infrastructure" ], port_forwards = '5432:5432' )
222273# Jobs are suffixed with the image tag to ensure they are unique. In this context, the image tag is defined in k8s/distributed-chroma/values.yaml.
223- k8s_resource ('sysdb-migration-latest' , resource_deps = ['postgres' ], labels = ["infrastructure" ])
224- k8s_resource ('rust-log-service' , labels = ["chroma" ], port_forwards = ['50054:50051' , '50052:50052' ], resource_deps = ['minio-deployment' ])
225- k8s_resource ('sysdb' , resource_deps = ['sysdb-migration-latest' ], labels = ["chroma" ], port_forwards = '50051:50051' )
226- k8s_resource ('rust-frontend-service' , resource_deps = ['sysdb' , 'rust-log-service' ], labels = ["chroma" ], port_forwards = '8000:8000' )
227- k8s_resource ('query-service' , resource_deps = ['sysdb' ], labels = ["chroma" ], port_forwards = '50053:50051' )
228- k8s_resource ('compaction-service' , resource_deps = ['sysdb' ], labels = ["chroma" ])
274+ k8s_resource ('sysdb-migration-latest:job:chroma' , resource_deps = ['postgres:deployment:chroma' ], labels = ["infrastructure" ])
275+ k8s_resource ('rust-log-service:statefulset:chroma' , labels = ["chroma" ], port_forwards = ['50054:50051' , '50052:50052' ], resource_deps = ['minio-deployment' ])
276+ k8s_resource ('sysdb:deployment:chroma' , resource_deps = ['sysdb-migration-latest:job:chroma' ], labels = ["chroma" ], port_forwards = '50051:50051' )
277+ k8s_resource ('rust-frontend-service:deployment:chroma' , resource_deps = ['sysdb:deployment:chroma' , 'rust-log-service:statefulset:chroma' ], labels = ["chroma" ], port_forwards = '8000:8000' )
278+ k8s_resource ('query-service:statefulset:chroma' , resource_deps = ['sysdb:deployment:chroma' ], labels = ["chroma" ], port_forwards = '50053:50051' )
279+ k8s_resource ('compaction-service:statefulset:chroma' , resource_deps = ['sysdb:deployment:chroma' ], labels = ["chroma" ])
280+ k8s_resource ('garbage-collector:statefulset:chroma' , resource_deps = ['k8s_setup' , 'minio-deployment' ], labels = ["chroma" ], port_forwards = '50055:50055' )
229281k8s_resource ('load-service' , resource_deps = ['k8s_setup' ], labels = ["infrastructure" ], port_forwards = '3001:3001' )
282+
283+ # Production Chroma 2
284+ k8s_resource ('postgres:deployment:chroma2' , resource_deps = ['k8s_setup2' ], labels = ["infrastructure2" ], port_forwards = '6432:5432' )
285+ # Jobs are suffixed with the image tag to ensure they are unique. In this context, the image tag is defined in k8s/distributed-chroma/values.yaml.
286+ k8s_resource ('sysdb-migration-latest:job:chroma2' , resource_deps = ['postgres:deployment:chroma2' ], labels = ["infrastructure2" ])
287+ k8s_resource ('rust-log-service:statefulset:chroma2' , labels = ["chroma2" ], port_forwards = ['60054:50051' , '60052:50052' ], resource_deps = ['minio-deployment' ])
288+ k8s_resource ('sysdb:deployment:chroma2' , resource_deps = ['sysdb-migration-latest:job:chroma2' ], labels = ["chroma2" ], port_forwards = '60051:50051' )
289+ k8s_resource ('rust-frontend-service:deployment:chroma2' , resource_deps = ['sysdb:deployment:chroma2' , 'rust-log-service:statefulset:chroma2' ], labels = ["chroma2" ], port_forwards = '8001:8000' )
290+ k8s_resource ('query-service:statefulset:chroma2' , resource_deps = ['sysdb:deployment:chroma2' ], labels = ["chroma2" ], port_forwards = '60053:50051' )
291+ k8s_resource ('compaction-service:statefulset:chroma2' , resource_deps = ['sysdb:deployment:chroma2' ], labels = ["chroma2" ])
292+ k8s_resource ('garbage-collector:statefulset:chroma2' , resource_deps = ['k8s_setup2' , 'minio-deployment' ], labels = ["chroma2" ], port_forwards = '60055:50055' )
293+
294+ # Observability
230295k8s_resource ('jaeger' , resource_deps = ['k8s_setup' ], labels = ["observability" ])
231296k8s_resource ('grafana' , resource_deps = ['k8s_setup' ], labels = ["observability" ])
232297k8s_resource ('prometheus' , resource_deps = ['k8s_setup' ], labels = ["observability" ])
233298k8s_resource ('otel-collector' , resource_deps = ['k8s_setup' ], labels = ["observability" ])
234- k8s_resource ( 'garbage-collector' , resource_deps = [ 'k8s_setup' , 'minio-deployment' ], labels = [ "chroma" ], port_forwards = '50055:50055' )
299+
235300# Local S3
236301k8s_resource ('minio-deployment' , resource_deps = ['k8s_setup' ], labels = ["debug" ], port_forwards = ['9000:9000' , '9005:9005' ])
302+
303+
304+ # Set the enabled resources
305+ # - Basic resources are always enabled.
306+ # - Multi-region resources are only enabled if the multi-region flag is set.
307+ config .clear_enabled_resources ()
308+
309+ groups = {
310+ 'basic' : [
311+ 'k8s_setup' ,
312+ 'postgres:deployment:chroma' ,
313+ 'sysdb-migration-latest:job:chroma' ,
314+ 'rust-log-service:statefulset:chroma' ,
315+ 'sysdb:deployment:chroma' ,
316+ 'rust-frontend-service:deployment:chroma' ,
317+ 'query-service:statefulset:chroma' ,
318+ 'compaction-service:statefulset:chroma' ,
319+ 'load-service' ,
320+ 'garbage-collector:statefulset:chroma' ,
321+ 'jaeger' ,
322+ 'grafana' ,
323+ 'prometheus' ,
324+ 'otel-collector' ,
325+ 'minio-deployment' ,
326+ ],
327+ 'multi_region' : [
328+ 'postgres:deployment:chroma2' ,
329+ 'sysdb-migration-latest:job:chroma2' ,
330+ 'rust-log-service:statefulset:chroma2' ,
331+ 'sysdb:deployment:chroma2' ,
332+ 'rust-frontend-service:deployment:chroma2' ,
333+ 'query-service:statefulset:chroma2' ,
334+ 'compaction-service:statefulset:chroma2' ,
335+ 'garbage-collector:statefulset:chroma2' ,
336+ ],
337+ }
338+
339+ if cfg .get ('multi_region' ):
340+ config .set_enabled_resources (groups ['basic' ] + groups ['multi_region' ])
341+ else :
342+ config .set_enabled_resources (groups ['basic' ])
0 commit comments