Skip to content

Commit 0948bd9

Browse files
Add memory and CPU resource limits to containers missing them
The llama-stack and lightspeed-service-api containers had no resource limits, allowing unlimited memory consumption. The console plugin containers also lacked resource definitions. This adds appropriate requests and limits to prevent unbounded resource usage and protect node stability.
1 parent fcdd71a commit 0948bd9

5 files changed

Lines changed: 100 additions & 19 deletions

File tree

internal/controller/common.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,15 +99,6 @@ func generatePostgresSelectorLabels() map[string]string {
9999
}
100100
}
101101

102-
// getResourcesOrDefault returns the provided resource requirements if non-nil,
103-
// otherwise returns the given default resource requirements.
104-
func getResourcesOrDefault(custom *corev1.ResourceRequirements, defaults corev1.ResourceRequirements) corev1.ResourceRequirements {
105-
if custom != nil {
106-
return *custom
107-
}
108-
return defaults
109-
}
110-
111102
// isDeploymentReady checks whether the provided deployment is ready by verifying
112103
// that the deployment's observed generation matches the current generation and
113104
// all replicas (updated, available, and total) match the desired count.

internal/controller/console_deployment.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
appsv1 "k8s.io/api/apps/v1"
2424
corev1 "k8s.io/api/core/v1"
2525
networkingv1 "k8s.io/api/networking/v1"
26+
"k8s.io/apimachinery/pkg/api/resource"
2627
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2728
"k8s.io/apimachinery/pkg/util/intstr"
2829
)
@@ -85,6 +86,16 @@ func buildConsoleDeploymentSpec(consoleImage string) appsv1.DeploymentSpec {
8586
"awk '" + consoleLocalesRewriteAwk + "' " +
8687
consoleLocalesPath + " > /locales-rewrite/" + consoleLocalesFilename,
8788
},
89+
Resources: corev1.ResourceRequirements{
90+
Requests: corev1.ResourceList{
91+
corev1.ResourceCPU: resource.MustParse("50m"),
92+
corev1.ResourceMemory: resource.MustParse("64Mi"),
93+
},
94+
Limits: corev1.ResourceList{
95+
corev1.ResourceCPU: resource.MustParse("200m"),
96+
corev1.ResourceMemory: resource.MustParse("256Mi"),
97+
},
98+
},
8899
VolumeMounts: []corev1.VolumeMount{
89100
{
90101
Name: "locales-rewrite",
@@ -108,6 +119,16 @@ func buildConsoleDeploymentSpec(consoleImage string) appsv1.DeploymentSpec {
108119
SecurityContext: &corev1.SecurityContext{
109120
AllowPrivilegeEscalation: toPtr(false),
110121
},
122+
Resources: corev1.ResourceRequirements{
123+
Requests: corev1.ResourceList{
124+
corev1.ResourceCPU: resource.MustParse("50m"),
125+
corev1.ResourceMemory: resource.MustParse("64Mi"),
126+
},
127+
Limits: corev1.ResourceList{
128+
corev1.ResourceCPU: resource.MustParse("200m"),
129+
corev1.ResourceMemory: resource.MustParse("256Mi"),
130+
},
131+
},
111132
VolumeMounts: []corev1.VolumeMount{
112133
{
113134
Name: "lightspeed-console-plugin-cert",

internal/controller/lcore_deployment.go

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,16 @@ func buildLCorePodTemplateSpec(h *common_helper.Helper, ctx context.Context, ins
8181
InitialDelaySeconds: 5,
8282
PeriodSeconds: 10,
8383
},
84-
Resources: getResourcesOrDefault(nil, corev1.ResourceRequirements{}),
84+
Resources: corev1.ResourceRequirements{
85+
Requests: corev1.ResourceList{
86+
corev1.ResourceCPU: resource.MustParse("500m"),
87+
corev1.ResourceMemory: resource.MustParse("2Gi"),
88+
},
89+
Limits: corev1.ResourceList{
90+
corev1.ResourceCPU: resource.MustParse("2"),
91+
corev1.ResourceMemory: resource.MustParse("8Gi"),
92+
},
93+
},
8594
ImagePullPolicy: corev1.PullIfNotPresent,
8695
}
8796

@@ -108,15 +117,24 @@ func buildLCorePodTemplateSpec(h *common_helper.Helper, ctx context.Context, ins
108117
}
109118

110119
lightspeedStackContainer := corev1.Container{
111-
Name: "lightspeed-service-api",
112-
Image: apiv1beta1.OpenStackLightspeedDefaultValues.LCoreImageURL,
113-
Args: []string{"-c", VectorDBVolumeLightspeedStackConfigPath},
114-
Ports: []corev1.ContainerPort{{Name: "https", ContainerPort: OpenStackLightspeedAppServerContainerPort}},
115-
VolumeMounts: lightspeedStackMounts,
116-
Env: lsEnvVars,
117-
LivenessProbe: buildLightspeedStackLivenessProbe(),
118-
ReadinessProbe: buildLightspeedStackReadinessProbe(),
119-
Resources: getResourcesOrDefault(nil, corev1.ResourceRequirements{}),
120+
Name: "lightspeed-service-api",
121+
Image: apiv1beta1.OpenStackLightspeedDefaultValues.LCoreImageURL,
122+
Args: []string{"-c", VectorDBVolumeLightspeedStackConfigPath},
123+
Ports: []corev1.ContainerPort{{Name: "https", ContainerPort: OpenStackLightspeedAppServerContainerPort}},
124+
VolumeMounts: lightspeedStackMounts,
125+
Env: lsEnvVars,
126+
LivenessProbe: buildLightspeedStackLivenessProbe(),
127+
ReadinessProbe: buildLightspeedStackReadinessProbe(),
128+
Resources: corev1.ResourceRequirements{
129+
Requests: corev1.ResourceList{
130+
corev1.ResourceCPU: resource.MustParse("250m"),
131+
corev1.ResourceMemory: resource.MustParse("512Mi"),
132+
},
133+
Limits: corev1.ResourceList{
134+
corev1.ResourceCPU: resource.MustParse("1"),
135+
corev1.ResourceMemory: resource.MustParse("2Gi"),
136+
},
137+
},
120138
ImagePullPolicy: corev1.PullIfNotPresent,
121139
}
122140
containers := []corev1.Container{llamaStackContainer, lightspeedStackContainer}

test/kuttl/common/openstack-lightspeed-instance/assert-openstack-lightspeed-instance.yaml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,13 @@ spec:
159159
- name: vector-database-config-build
160160
containers:
161161
- name: llama-stack
162+
resources:
163+
requests:
164+
cpu: 500m
165+
memory: 2Gi
166+
limits:
167+
cpu: "2"
168+
memory: 8Gi
162169
env:
163170
- name: OPENSTACK_LIGHTSPEED_PROVIDER_API_KEY
164171
valueFrom:
@@ -186,6 +193,13 @@ spec:
186193
- name: llama-cache
187194
mountPath: /tmp/llama-stack
188195
- name: lightspeed-service-api
196+
resources:
197+
requests:
198+
cpu: 250m
199+
memory: 512Mi
200+
limits:
201+
cpu: "1"
202+
memory: 2Gi
189203
env:
190204
- name: LIGHTSPEED_STACK_LOG_LEVEL
191205
value: WARNING
@@ -309,9 +323,25 @@ spec:
309323
readOnlyRootFilesystem: true
310324
capabilities:
311325
drop: ["ALL"]
326+
resources:
327+
requests:
328+
cpu: 50m
329+
memory: 64Mi
330+
limits:
331+
cpu: 200m
332+
memory: 256Mi
312333
volumeMounts:
313334
- name: locales-rewrite
314335
mountPath: /locales-rewrite
336+
containers:
337+
- name: lightspeed-console-plugin
338+
resources:
339+
requests:
340+
cpu: 50m
341+
memory: 64Mi
342+
limits:
343+
cpu: 200m
344+
memory: 256Mi
315345
---
316346
apiVersion: v1
317347
kind: Service

test/kuttl/tests/update-openstacklightspeed/08-assert-openstacklightspeed-update.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ spec:
7474
- name: vector-database-config-build
7575
containers:
7676
- name: llama-stack
77+
resources:
78+
requests:
79+
cpu: 500m
80+
memory: 2Gi
81+
limits:
82+
cpu: "2"
83+
memory: 8Gi
7784
env:
7885
- name: OPENSTACK_LIGHTSPEED_PROVIDER_API_KEY
7986
valueFrom:
@@ -103,6 +110,13 @@ spec:
103110
- name: llama-cache
104111
mountPath: /tmp/llama-stack
105112
- name: lightspeed-service-api
113+
resources:
114+
requests:
115+
cpu: 250m
116+
memory: 512Mi
117+
limits:
118+
cpu: "1"
119+
memory: 2Gi
106120
env:
107121
- name: LIGHTSPEED_STACK_LOG_LEVEL
108122
value: ERROR
@@ -199,6 +213,13 @@ spec:
199213
spec:
200214
initContainers:
201215
- name: rewrite-locales
216+
resources:
217+
requests:
218+
cpu: 50m
219+
memory: 64Mi
220+
limits:
221+
cpu: 200m
222+
memory: 256Mi
202223
volumeMounts:
203224
- name: locales-rewrite
204225
mountPath: /locales-rewrite

0 commit comments

Comments
 (0)