feat: add resource requests and limits to all Helm charts
- Add default resource requests (500Mi memory, 100m CPU) and limits (1Gi memory) to standard charts: - forgejoRunner, hugo, postgres, prometheusAgent, taskfileBuild, vshnPostgres, vuepress - Add higher resource requests (1Gi memory, 250m CPU) and limits (2Gi memory) to Odoo and Nextcloud charts - Update deployment templates to reference `.Values.resources` instead of hardcoded values - Replace hardcoded resource limits in forgejoRunner and vshnPostgres templates - Update documentation (README.md) for all affected charts - Update prometheusAgent default values to align with new standards - Include task execution log in prompts directory
This commit is contained in:
27 files changed
+228
-31
No files matched your search
@@ -81,3 +81,11 @@ Here is are examples of Forgejo action steps:
|
||||
| `forgejoInstanceUrl` | Forgejo instance url. | `https://codeberg.org` |
|
||||
| `secretRef` | The secret reference for the Forgejo Runner | `forgejo-runner` |
|
||||
| `storageClassName` | Set the storage class | `""` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
@@ -47,12 +47,7 @@ spec:
|
||||
- name: runner-config
|
||||
mountPath: /config
|
||||
resources:
|
||||
limits:
|
||||
cpu: "1"
|
||||
memory: "1024Mi"
|
||||
requests:
|
||||
cpu: "50m"
|
||||
memory: "32Mi"
|
||||
{{- toYaml .Values.resources | nindent 10 }}
|
||||
containers:
|
||||
- name: runner
|
||||
image: {{ .Values.image }}
|
||||
@@ -77,12 +72,7 @@ spec:
|
||||
- name: runner-config
|
||||
mountPath: /config
|
||||
resources:
|
||||
limits:
|
||||
cpu: "1"
|
||||
memory: "1024Mi"
|
||||
requests:
|
||||
cpu: "50m"
|
||||
memory: "32Mi"
|
||||
{{- toYaml .Values.resources | nindent 10 }}
|
||||
- name: daemon
|
||||
image: docker:27.5.1-dind
|
||||
env:
|
||||
@@ -96,12 +86,7 @@ spec:
|
||||
- name: docker-data
|
||||
mountPath: /var/lib/docker
|
||||
resources:
|
||||
limits:
|
||||
cpu: "2"
|
||||
memory: "4096Mi"
|
||||
requests:
|
||||
cpu: "50m"
|
||||
memory: "32Mi"
|
||||
{{- toYaml .Values.resources | nindent 10 }}
|
||||
volumes:
|
||||
- name: docker-certs
|
||||
emptyDir: {}
|
||||
|
||||
@@ -9,3 +9,13 @@ forgejoInstanceUrl: https://codeberg.org
|
||||
secretRef: forgejo-runner
|
||||
## @param storageClassName Set the storage class
|
||||
storageClassName: ""
|
||||
## @section Resources requests and limits
|
||||
resources:
|
||||
## @param resources.requests.memory Memory request for the container
|
||||
requests:
|
||||
memory: "500Mi"
|
||||
## @param resources.requests.cpu CPU request for the container
|
||||
cpu: "100m"
|
||||
limits:
|
||||
## @param resources.limits.memory Memory limit for the container
|
||||
memory: "1Gi"
|
||||
@@ -20,3 +20,11 @@ This Helm chart deploys a Hugo site.
|
||||
| ----------------- | -------------------------- | -------- |
|
||||
| `image` | The image for Hugo | `""` |
|
||||
| `imagePullPolicy` | Pull policy for Hugo image | `Always` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
@@ -19,3 +19,5 @@ spec:
|
||||
imagePullPolicy: {{ .Values.imagePullPolicy }}
|
||||
ports:
|
||||
- containerPort: 80
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
@@ -16,3 +16,13 @@ ingress:
|
||||
image: ""
|
||||
## @param imagePullPolicy Pull policy for Hugo image
|
||||
imagePullPolicy: Always
|
||||
## @section Resources requests and limits
|
||||
resources:
|
||||
## @param resources.requests.memory Memory request for the container
|
||||
requests:
|
||||
memory: "500Mi"
|
||||
## @param resources.requests.cpu CPU request for the container
|
||||
cpu: "100m"
|
||||
limits:
|
||||
## @param resources.limits.memory Memory limit for the container
|
||||
memory: "1Gi"
|
||||
@@ -65,6 +65,9 @@ kubectl create secret generic s3-credentials \
|
||||
| `nextcloud.externalDatabase.existingSecret.secretName` | Name of the existing Kubernetes secret | `nextcloud-postgresql-app` |
|
||||
| `nextcloud.externalDatabase.existingSecret.usernameKey` | Key in the secret containing the database username | `username` |
|
||||
| `nextcloud.externalDatabase.existingSecret.passwordKey` | Key in the secret containing the database password | `password` |
|
||||
| `nextcloud.resources.requests.memory` | Memory request for the container | `1Gi` |
|
||||
| `nextcloud.resources.requests.cpu` | CPU request for the container | `250m` |
|
||||
| `nextcloud.resources.limits.memory` | Memory limit for the container | `2Gi` |
|
||||
|
||||
### Redis parameters
|
||||
|
||||
|
||||
@@ -66,6 +66,15 @@ nextcloud:
|
||||
usernameKey: username
|
||||
## @param nextcloud.externalDatabase.existingSecret.passwordKey Key in the secret containing the database password
|
||||
passwordKey: password
|
||||
resources:
|
||||
## @param nextcloud.resources.requests.memory Memory request for the container
|
||||
requests:
|
||||
memory: "1Gi"
|
||||
## @param nextcloud.resources.requests.cpu CPU request for the container
|
||||
cpu: "250m"
|
||||
limits:
|
||||
## @param nextcloud.resources.limits.memory Memory limit for the container
|
||||
memory: "2Gi"
|
||||
|
||||
## @section Redis parameters
|
||||
redis:
|
||||
|
||||
@@ -95,6 +95,14 @@ kubectl create job --from=cronjob/<release>-staging-reset <release>-staging-rese
|
||||
| `secretRef` | The secret reference for Odoo | `odoo-creds` |
|
||||
| `storageClassName` | Set the storage class | `""` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------ |
|
||||
| `resources.requests.memory` | Memory request for the container | `1Gi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `250m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `2Gi` |
|
||||
|
||||
### K8up parameters
|
||||
|
||||
| Name | Description | Value |
|
||||
|
||||
@@ -102,6 +102,8 @@ spec:
|
||||
securityContext:
|
||||
runAsUser: 0
|
||||
runAsGroup: 0
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
containers:
|
||||
- name: odoo
|
||||
image: {{ or .Values.staging.image .Values.image }}
|
||||
@@ -184,6 +186,8 @@ spec:
|
||||
readOnly: true
|
||||
mountPath: "/mnt/{{ .Values.vshnPostgres.secretRef }}"
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
volumes:
|
||||
- name: odoo-staging
|
||||
persistentVolumeClaim:
|
||||
|
||||
@@ -104,6 +104,8 @@ spec:
|
||||
readOnly: true
|
||||
mountPath: "/mnt/{{ .Values.vshnPostgres.secretRef }}"
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
containers:
|
||||
- name: odoo
|
||||
image: {{ .Values.image }}
|
||||
@@ -184,6 +186,8 @@ spec:
|
||||
readOnly: true
|
||||
mountPath: "/mnt/{{ .Values.vshnPostgres.secretRef }}"
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
volumes:
|
||||
- name: odoo-main
|
||||
persistentVolumeClaim:
|
||||
|
||||
@@ -91,6 +91,16 @@ workers: 5
|
||||
secretRef: odoo-creds
|
||||
## @param storageClassName Set the storage class
|
||||
storageClassName: ""
|
||||
## @section Resources requests and limits
|
||||
resources:
|
||||
## @param resources.requests.memory Memory request for the container
|
||||
requests:
|
||||
memory: "1Gi"
|
||||
## @param resources.requests.cpu CPU request for the container
|
||||
cpu: "250m"
|
||||
limits:
|
||||
## @param resources.limits.memory Memory limit for the container
|
||||
memory: "2Gi"
|
||||
|
||||
## @section K8up parameters
|
||||
k8up:
|
||||
|
||||
@@ -17,3 +17,11 @@ This chart deploys a Postgres container and stores the credentials in a secret.
|
||||
| `secretRef` | The secret reference for Postgres | `postgres` |
|
||||
| `userPasswordKey` | The user password key for Postgres | `password` |
|
||||
| `storageClassName` | Set the storage class | `""` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
@@ -36,6 +36,8 @@ spec:
|
||||
secretKeyRef:
|
||||
name: {{ .Values.secretRef }}
|
||||
key: {{ .Values.userPasswordKey }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
volumeMounts:
|
||||
- mountPath: /var/lib/postgresql/data/
|
||||
name: postgres
|
||||
|
||||
@@ -17,3 +17,13 @@ secretRef: postgres
|
||||
userPasswordKey: "password"
|
||||
## @param storageClassName Set the storage class
|
||||
storageClassName: ""
|
||||
## @section Resources requests and limits
|
||||
resources:
|
||||
## @param resources.requests.memory Memory request for the container
|
||||
requests:
|
||||
memory: "500Mi"
|
||||
## @param resources.requests.cpu CPU request for the container
|
||||
cpu: "100m"
|
||||
limits:
|
||||
## @param resources.limits.memory Memory limit for the container
|
||||
memory: "1Gi"
|
||||
@@ -33,10 +33,9 @@ kubectl create secret generic prometheus-remote-write-credentials \
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `64Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `250m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `128Mi` |
|
||||
| `resources.limits.cpu` | CPU limit for the container | `500m` |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
|
||||
### Kube-state-metrics configuration
|
||||
|
||||
|
||||
@@ -94,14 +94,12 @@ scrapeConfigs: |
|
||||
resources:
|
||||
requests:
|
||||
## @param resources.requests.memory Memory request for the container
|
||||
memory: "64Mi"
|
||||
memory: "500Mi"
|
||||
## @param resources.requests.cpu CPU request for the container
|
||||
cpu: "250m"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
## @param resources.limits.memory Memory limit for the container
|
||||
memory: "128Mi"
|
||||
## @param resources.limits.cpu CPU limit for the container
|
||||
cpu: "500m"
|
||||
memory: "1Gi"
|
||||
|
||||
## @section Kube-state-metrics configuration
|
||||
## @param kube-state-metrics.enabled Enable kube-state-metrics as sub-chart
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
---
|
||||
title: "Add memory limit to all charts"
|
||||
state: completed
|
||||
model: infomaniak/moonshotai/Kimi-K2.6
|
||||
input_tokens:
|
||||
---
|
||||
|
||||
# Run 08
|
||||
|
||||
Note: @Clanker refers to the "ai agent" (you) who is working on this task.
|
||||
|
||||
@Clanker when working on this task, make sure to:
|
||||
|
||||
- Read context and task section first
|
||||
- Prepare a list of todos
|
||||
- Update the todo list while working on the task
|
||||
|
||||
## Context
|
||||
|
||||
@Clanker Read the `AGENTS.md` and `README.md` to get an understanding of the project.
|
||||
|
||||
## Task
|
||||
|
||||
Set this limit for all charts:
|
||||
|
||||
```yml
|
||||
resources:
|
||||
requests:
|
||||
memory: "500Mi"
|
||||
cpu: "100m"
|
||||
limits:
|
||||
memory: "1Gi"
|
||||
```
|
||||
|
||||
And for odoo and nextcloud use this:
|
||||
|
||||
```yaml
|
||||
resources:
|
||||
requests:
|
||||
memory: 1Gi
|
||||
cpu: 250m
|
||||
limits:
|
||||
memory: 2Gi
|
||||
```
|
||||
|
||||
## Worklog
|
||||
|
||||
Set resource limits for all charts with deployments:
|
||||
|
||||
- **odoo**, **nextcloud**: requests `memory: 1Gi`, `cpu: 250m`; limits `memory: 2Gi`
|
||||
- **hugo**, **vuepress**, **taskfileBuild**, **postgres**, **prometheusAgent**, **forgejoRunner**, **vshnPostgres**: requests `memory: 500Mi`, `cpu: 100m`; limits `memory: 1Gi`
|
||||
|
||||
Changes made:
|
||||
1. Added `resources` block to `values.yaml` for all relevant charts.
|
||||
2. Updated deployment templates to reference `{{- toYaml .Values.resources | nindent 12 }}` (or appropriate indentation) where missing.
|
||||
3. Replaced hardcoded resource limits in **forgejoRunner** and **vshnPostgres** templates with values references.
|
||||
4. For **nextcloud**, passed resources to the upstream `nextcloud` subchart via `nextcloud.resources`.
|
||||
5. Updated **prometheusAgent** values to the new default limits.
|
||||
6. Ran `./task lint` and `./task docs` successfully to validate formatting and regenerate READMEs.
|
||||
|
||||
Skipped charts without container workloads: `clusterIssuer`, `deploymentUpdater`.
|
||||
|
||||
@Clanker Set frontmatter state to completed and update info about model and token usage.
|
||||
@@ -25,3 +25,11 @@ This Helm chart deploys a taskfile.build container.
|
||||
| `caddyRoot` | Static site path relative to repo root. | `""` |
|
||||
| `additionalEnvs` | Additional environment variables to set | `{}` |
|
||||
| `storageClassName` | Set the storage class | `""` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
@@ -32,6 +32,8 @@ spec:
|
||||
{{- end }}
|
||||
ports:
|
||||
- containerPort: 80
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
volumeMounts:
|
||||
- name: app-data
|
||||
mountPath: /app
|
||||
|
||||
@@ -25,4 +25,14 @@ caddyRoot: ""
|
||||
## @param additionalEnvs Additional environment variables to set
|
||||
additionalEnvs: {}
|
||||
## @param storageClassName Set the storage class
|
||||
storageClassName: ""
|
||||
storageClassName: ""
|
||||
## @section Resources requests and limits
|
||||
resources:
|
||||
## @param resources.requests.memory Memory request for the container
|
||||
requests:
|
||||
memory: "500Mi"
|
||||
## @param resources.requests.cpu CPU request for the container
|
||||
cpu: "100m"
|
||||
limits:
|
||||
## @param resources.limits.memory Memory limit for the container
|
||||
memory: "1Gi"
|
||||
@@ -11,3 +11,11 @@ This chart deploys a VSHN Postgres service.
|
||||
| `enabled` | Enable or disable vshnPostgres | `false` |
|
||||
| `secretRef` | The secret reference for vshnPostgres | `postgres-creds` |
|
||||
| `client.enabled` | Enable or disable the vshnPostgres client | `false` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
@@ -43,9 +43,7 @@ spec:
|
||||
- name: postgres-client
|
||||
image: postgres:16
|
||||
resources:
|
||||
limits:
|
||||
memory: "128Mi"
|
||||
cpu: "500m"
|
||||
{{- toYaml .Values.resources | nindent 6 }}
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
|
||||
@@ -10,3 +10,13 @@ client:
|
||||
## @param client.enabled Enable or disable the vshnPostgres client
|
||||
##
|
||||
enabled: false
|
||||
## @section Resources requests and limits
|
||||
resources:
|
||||
## @param resources.requests.memory Memory request for the container
|
||||
requests:
|
||||
memory: "500Mi"
|
||||
## @param resources.requests.cpu CPU request for the container
|
||||
cpu: "100m"
|
||||
limits:
|
||||
## @param resources.limits.memory Memory limit for the container
|
||||
memory: "1Gi"
|
||||
@@ -20,3 +20,11 @@ This Helm chart deploys a Vuepress site.
|
||||
| ----------------- | ------------------------------ | -------- |
|
||||
| `image` | The image for Vuepress | `""` |
|
||||
| `imagePullPolicy` | Pull policy for Vuepress image | `Always` |
|
||||
|
||||
### Resources requests and limits
|
||||
|
||||
| Name | Description | Value |
|
||||
| --------------------------- | -------------------------------- | ------- |
|
||||
| `resources.requests.memory` | Memory request for the container | `500Mi` |
|
||||
| `resources.requests.cpu` | CPU request for the container | `100m` |
|
||||
| `resources.limits.memory` | Memory limit for the container | `1Gi` |
|
||||
@@ -19,3 +19,5 @@ spec:
|
||||
imagePullPolicy: {{ .Values.imagePullPolicy }}
|
||||
ports:
|
||||
- containerPort: 80
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
@@ -17,3 +17,13 @@ image: ""
|
||||
## @param imagePullPolicy Pull policy for Vuepress image
|
||||
##
|
||||
imagePullPolicy: Always
|
||||
## @section Resources requests and limits
|
||||
resources:
|
||||
## @param resources.requests.memory Memory request for the container
|
||||
requests:
|
||||
memory: "500Mi"
|
||||
## @param resources.requests.cpu CPU request for the container
|
||||
cpu: "100m"
|
||||
limits:
|
||||
## @param resources.limits.memory Memory limit for the container
|
||||
memory: "1Gi"
|
||||
Reference in new issue
Block a user