Skip to content

Commit c3f0d37

Browse files
committed
feat: add grove multinode support
1 parent dbb4caa commit c3f0d37

23 files changed

+5207
-574
lines changed

deploy/cloud/helm/crds/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ apiVersion: v2
1616
name: dynamo-crds
1717
description: A Helm chart for dynamo CRDs
1818
type: application
19-
version: 0.4.0
19+
version: 0.4.1
2020
dependencies: []

deploy/cloud/helm/crds/templates/nvidia.com_dynamocomponentdeployments.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,12 @@ spec:
404404
minReplicas:
405405
type: integer
406406
type: object
407+
backendFramework:
408+
enum:
409+
- sglang
410+
- vllm
411+
- trtllm
412+
type: string
407413
componentType:
408414
type: string
409415
dynamoComponent:
@@ -5039,6 +5045,8 @@ spec:
50395045
type: string
50405046
memory:
50415047
type: string
5048+
nodes:
5049+
type: string
50425050
type: object
50435051
requests:
50445052
properties:
@@ -5052,6 +5060,8 @@ spec:
50525060
type: string
50535061
memory:
50545062
type: string
5063+
nodes:
5064+
type: string
50555065
type: object
50565066
type: object
50575067
runMode:

deploy/cloud/helm/crds/templates/nvidia.com_dynamographdeployments.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ spec:
4444
type: object
4545
spec:
4646
properties:
47+
backendFramework:
48+
enum:
49+
- sglang
50+
- vllm
51+
- trtllm
52+
type: string
4753
dynamoGraph:
4854
type: string
4955
envs:
@@ -5094,6 +5100,8 @@ spec:
50945100
type: string
50955101
memory:
50965102
type: string
5103+
nodes:
5104+
type: string
50975105
type: object
50985106
requests:
50995107
properties:
@@ -5107,6 +5115,8 @@ spec:
51075115
type: string
51085116
memory:
51095117
type: string
5118+
nodes:
5119+
type: string
51105120
type: object
51115121
type: object
51125122
runMode:

deploy/cloud/operator/api/dynamo/common/common.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ type ResourceItem struct {
2626
CPU string `json:"cpu,omitempty"`
2727
Memory string `json:"memory,omitempty"`
2828
GPU string `json:"gpu,omitempty"`
29+
Nodes string `json:"nodes,omitempty"`
2930
Custom map[string]string `json:"custom,omitempty"`
3031
}
3132

deploy/cloud/operator/api/v1alpha1/dynamocomponentdeployment_types.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ type DynamoComponentDeploymentSpec struct {
4242
// contains the tag of the DynamoComponent: for example, "my_package:MyService"
4343
DynamoTag string `json:"dynamoTag,omitempty"`
4444

45+
// BackendFramework specifies the backend framework (e.g., "sglang", "vllm", "trtllm")
46+
// +kubebuilder:validation:Enum=sglang;vllm;trtllm
47+
BackendFramework string `json:"backendFramework,omitempty"`
48+
4549
DynamoComponentDeploymentSharedSpec `json:",inline"`
4650
}
4751

@@ -110,6 +114,13 @@ type IngressSpec struct {
110114
IngressControllerClassName *string `json:"ingressControllerClassName,omitempty"`
111115
}
112116

117+
func (i *IngressSpec) IsVirtualServiceEnabled() bool {
118+
if i == nil {
119+
return false
120+
}
121+
return i.Enabled && i.UseVirtualService && i.VirtualServiceGateway != nil
122+
}
123+
113124
// DynamoComponentDeploymentStatus defines the observed state of DynamoComponentDeployment
114125
type DynamoComponentDeploymentStatus struct {
115126
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
@@ -195,11 +206,3 @@ func (s *DynamoComponentDeployment) SetDynamoDeploymentConfig(config []byte) {
195206
Value: string(config),
196207
})
197208
}
198-
199-
// GetImage returns the docker image of the DynamoComponent
200-
func (s *DynamoComponentDeployment) GetImage() string {
201-
if s.Spec.ExtraPodSpec != nil && s.Spec.ExtraPodSpec.MainContainer != nil {
202-
return s.Spec.ExtraPodSpec.MainContainer.Image
203-
}
204-
return ""
205-
}

deploy/cloud/operator/api/v1alpha1/dynamographdeployment_types.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ type DynamoGraphDeploymentSpec struct {
4040
// Environment variables to be set in the deployment
4141
// +kubebuilder:validation:Optional
4242
Envs []corev1.EnvVar `json:"envs,omitempty"`
43+
// BackendFramework specifies the backend framework (e.g., "sglang", "vllm", "trtllm")
44+
// +kubebuilder:validation:Enum=sglang;vllm;trtllm
45+
BackendFramework string `json:"backendFramework,omitempty"`
4346
}
4447

4548
// DynamoGraphDeploymentStatus defines the observed state of DynamoGraphDeployment.

deploy/cloud/operator/config/crd/bases/nvidia.com_dynamocomponentdeployments.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,12 @@ spec:
404404
minReplicas:
405405
type: integer
406406
type: object
407+
backendFramework:
408+
enum:
409+
- sglang
410+
- vllm
411+
- trtllm
412+
type: string
407413
componentType:
408414
type: string
409415
dynamoComponent:
@@ -5039,6 +5045,8 @@ spec:
50395045
type: string
50405046
memory:
50415047
type: string
5048+
nodes:
5049+
type: string
50425050
type: object
50435051
requests:
50445052
properties:
@@ -5052,6 +5060,8 @@ spec:
50525060
type: string
50535061
memory:
50545062
type: string
5063+
nodes:
5064+
type: string
50555065
type: object
50565066
type: object
50575067
runMode:

deploy/cloud/operator/config/crd/bases/nvidia.com_dynamographdeployments.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ spec:
4444
type: object
4545
spec:
4646
properties:
47+
backendFramework:
48+
enum:
49+
- sglang
50+
- vllm
51+
- trtllm
52+
type: string
4753
dynamoGraph:
4854
type: string
4955
envs:
@@ -5094,6 +5100,8 @@ spec:
50945100
type: string
50955101
memory:
50965102
type: string
5103+
nodes:
5104+
type: string
50975105
type: object
50985106
requests:
50995107
properties:
@@ -5107,6 +5115,8 @@ spec:
51075115
type: string
51085116
memory:
51095117
type: string
5118+
nodes:
5119+
type: string
51105120
type: object
51115121
type: object
51125122
runMode:

deploy/cloud/operator/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ toolchain go1.24.3
66

77
require (
88
emperror.dev/errors v0.8.1
9-
github.com/NVIDIA/grove/operator/api v0.0.0-20250717114148-daac6e53774f
9+
github.com/NVIDIA/grove/operator/api v0.0.0-20250801123021-8b42bac59ef2
1010
github.com/bsm/gomega v1.27.10
1111
github.com/google/go-cmp v0.7.0
1212
github.com/imdario/mergo v0.3.6

deploy/cloud/operator/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
emperror.dev/errors v0.8.1 h1:UavXZ5cSX/4u9iyvH6aDcuGkVjeexUGJ7Ij7G4VfQT0=
22
emperror.dev/errors v0.8.1/go.mod h1:YcRvLPh626Ubn2xqtoprejnA5nFha+TJ+2vew48kWuE=
3-
github.com/NVIDIA/grove/operator/api v0.0.0-20250717114148-daac6e53774f h1:2ePSNDm7/Tep8F99yCQVH8/vmn86L1cUzTbVlyNopmQ=
4-
github.com/NVIDIA/grove/operator/api v0.0.0-20250717114148-daac6e53774f/go.mod h1:nJL33lsBe+9xCcZLYkNYg1wucE4hJfa4ZfHm1zamuG0=
3+
github.com/NVIDIA/grove/operator/api v0.0.0-20250801123021-8b42bac59ef2 h1:JLOj0GiubP3VlR0okIbuqljvl+e2Vccnu6LX6wL34G0=
4+
github.com/NVIDIA/grove/operator/api v0.0.0-20250801123021-8b42bac59ef2/go.mod h1:QlsR2wQLj9m/zVEqv5SsCPzyjN2ykYZ0r/NEnDf4WB4=
55
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
66
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
77
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=

0 commit comments

Comments
 (0)