mirror of
https://github.com/outbackdingo/cozystack.git
synced 2026-01-27 18:18:41 +00:00
[etcd] Add VPA for etcd (#1489)
## What this PR does The etcd tenant module deploys by default with a large resource limit/request and these values are not exposed at deploy time. This patch lowers the default resources and adds a VPA to autoconfigure them according to the real needs. ### Release note ```release-note [etcd] Attach VPA to etcd and lower initial default resource requests. ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - New Features - Enabled automatic resource autoscaling for etcd with a Vertical Pod Autoscaler (VPA). - Chores - Updated default etcd resource requests to CPU 1000m and memory 512Mi (previously 4 and 1Gi), reflected across chart values and API schema. - Changed the output location for generated CRDs. - Documentation - Revised README to document the new default CPU and memory values for etcd. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -8,7 +8,7 @@ need yq; need jq; need base64
|
||||
CHART_YAML="${CHART_YAML:-Chart.yaml}"
|
||||
VALUES_YAML="${VALUES_YAML:-values.yaml}"
|
||||
SCHEMA_JSON="${SCHEMA_JSON:-values.schema.json}"
|
||||
CRD_DIR="../../system/cozystack-api/templates/cozystack-resource-definitions"
|
||||
CRD_DIR="../../system/cozystack-api/cozyrds"
|
||||
|
||||
[[ -f "$CHART_YAML" ]] || { echo "No $CHART_YAML found"; exit 1; }
|
||||
[[ -f "$SCHEMA_JSON" ]] || { echo "No $SCHEMA_JSON found"; exit 1; }
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
### Common parameters
|
||||
|
||||
| Name | Description | Type | Value |
|
||||
| ------------------ | ----------------------------------- | ----------- | ------ |
|
||||
| `size` | Persistent Volume size | `*quantity` | `4Gi` |
|
||||
| `storageClass` | StorageClass used to store the data | `*string` | `""` |
|
||||
| `replicas` | Number of etcd replicas | `*int` | `3` |
|
||||
| `resources` | Resource configuration for etcd | `*object` | `null` |
|
||||
| `resources.cpu` | The number of CPU cores allocated | `*quantity` | `4` |
|
||||
| `resources.memory` | The amount of memory allocated | `*quantity` | `1Gi` |
|
||||
| Name | Description | Type | Value |
|
||||
| ------------------ | ----------------------------------- | ----------- | ------- |
|
||||
| `size` | Persistent Volume size | `*quantity` | `4Gi` |
|
||||
| `storageClass` | StorageClass used to store the data | `*string` | `""` |
|
||||
| `replicas` | Number of etcd replicas | `*int` | `3` |
|
||||
| `resources` | Resource configuration for etcd | `*object` | `null` |
|
||||
| `resources.cpu` | The number of CPU cores allocated | `*quantity` | `1000m` |
|
||||
| `resources.memory` | The amount of memory allocated | `*quantity` | `512Mi` |
|
||||
|
||||
|
||||
21
packages/extra/etcd/templates/vpa.yaml
Normal file
21
packages/extra/etcd/templates/vpa.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
apiVersion: autoscaling.k8s.io/v1
|
||||
kind: VerticalPodAutoscaler
|
||||
metadata:
|
||||
name: etcd
|
||||
spec:
|
||||
targetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
name: etcd
|
||||
updatePolicy:
|
||||
updateMode: Auto
|
||||
resourcePolicy:
|
||||
containerPolicies:
|
||||
- containerName: etcd
|
||||
{{- with dict "cpu" "250m" "memory" "256Mi" }}
|
||||
minAllowed: {{- get (include "cozy-lib.resources.sanitize" (list . $) | fromYaml) "requests" | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with dict "cpu" "5000m" "memory" "8Gi" }}
|
||||
maxAllowed: {{- get (include "cozy-lib.resources.sanitize" (list . $) | fromYaml) "requests" | toYaml | nindent 8 }}
|
||||
{{- end }}
|
||||
@@ -14,7 +14,7 @@
|
||||
"properties": {
|
||||
"cpu": {
|
||||
"description": "The number of CPU cores allocated",
|
||||
"default": 4,
|
||||
"default": "1000m",
|
||||
"pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
|
||||
"anyOf": [
|
||||
{
|
||||
@@ -28,7 +28,7 @@
|
||||
},
|
||||
"memory": {
|
||||
"description": "The amount of memory allocated",
|
||||
"default": "1Gi",
|
||||
"default": "512Mi",
|
||||
"pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
|
||||
"anyOf": [
|
||||
{
|
||||
|
||||
@@ -12,5 +12,5 @@ replicas: 3
|
||||
## @field resources.cpu {*quantity} The number of CPU cores allocated
|
||||
## @field resources.memory {*quantity} The amount of memory allocated
|
||||
resources:
|
||||
cpu: 4
|
||||
memory: 1Gi
|
||||
cpu: 1000m
|
||||
memory: 512Mi
|
||||
|
||||
@@ -8,7 +8,7 @@ spec:
|
||||
plural: etcds
|
||||
singular: etcd
|
||||
openAPISchema: |-
|
||||
{"title":"Chart Values","type":"object","properties":{"replicas":{"description":"Number of etcd replicas","type":"integer","default":3},"resources":{"description":"Resource configuration for etcd","type":"object","default":{},"properties":{"cpu":{"description":"The number of CPU cores allocated","default":4,"pattern":"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$","anyOf":[{"type":"integer"},{"type":"string"}],"x-kubernetes-int-or-string":true},"memory":{"description":"The amount of memory allocated","default":"1Gi","pattern":"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$","anyOf":[{"type":"integer"},{"type":"string"}],"x-kubernetes-int-or-string":true}}},"size":{"description":"Persistent Volume size","default":"4Gi","pattern":"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$","anyOf":[{"type":"integer"},{"type":"string"}],"x-kubernetes-int-or-string":true},"storageClass":{"description":"StorageClass used to store the data","type":"string"}}}
|
||||
{"title":"Chart Values","type":"object","properties":{"replicas":{"description":"Number of etcd replicas","type":"integer","default":3},"resources":{"description":"Resource configuration for etcd","type":"object","default":{},"properties":{"cpu":{"description":"The number of CPU cores allocated","default":"1000m","pattern":"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$","anyOf":[{"type":"integer"},{"type":"string"}],"x-kubernetes-int-or-string":true},"memory":{"description":"The amount of memory allocated","default":"512Mi","pattern":"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$","anyOf":[{"type":"integer"},{"type":"string"}],"x-kubernetes-int-or-string":true}}},"size":{"description":"Persistent Volume size","default":"4Gi","pattern":"^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$","anyOf":[{"type":"integer"},{"type":"string"}],"x-kubernetes-int-or-string":true},"storageClass":{"description":"StorageClass used to store the data","type":"string"}}}
|
||||
release:
|
||||
prefix: ""
|
||||
labels:
|
||||
|
||||
Reference in New Issue
Block a user