From 37580514fd0247635f7983dc8f447588ec2a050d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Charri=C3=A8re?= Date: Tue, 16 Jan 2024 10:43:49 -0300 Subject: [PATCH] Add VPA for viz components (#72) * Add VPA for viz components Signed-off-by: Matias Charriere * update schema Signed-off-by: Matias Charriere --------- Signed-off-by: Matias Charriere --- CHANGELOG.md | 4 ++ helm/linkerd-viz/templates/vpa.yaml | 93 +++++++++++++++++++++++++++++ helm/linkerd-viz/values.schema.json | 42 +++++++++++++ helm/linkerd-viz/values.yaml | 18 ++++++ vendir.lock.yml | 6 +- 5 files changed, 160 insertions(+), 3 deletions(-) create mode 100644 helm/linkerd-viz/templates/vpa.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 876d199..d27d816 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add VPA for tap, tap-injector and metrics-api. + ## [1.4.1] - 2023-12-13 ### Changed diff --git a/helm/linkerd-viz/templates/vpa.yaml b/helm/linkerd-viz/templates/vpa.yaml new file mode 100644 index 0000000..05e4904 --- /dev/null +++ b/helm/linkerd-viz/templates/vpa.yaml @@ -0,0 +1,93 @@ +{{ if .Values.vpa.enabled }} +apiVersion: autoscaling.k8s.io/v1 +kind: VerticalPodAutoscaler +metadata: + name: tap + namespace: {{ .Release.Namespace }} + labels: + linkerd.io/extension: viz + component: tap + {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 4 }}{{- end }} +spec: + resourcePolicy: + containerPolicies: + - containerName: tap + controlledValues: RequestsAndLimits + mode: Auto + {{- with .Values.vpa.tap.minAllowed }} + minAllowed: + {{ toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.vpa.tap.maxAllowed }} + maxAllowed: + {{ toYaml . | nindent 8 }} + {{- end }} + targetRef: + apiVersion: apps/v1 + kind: Deployment + name: tap + updatePolicy: + updateMode: Auto +--- + +apiVersion: autoscaling.k8s.io/v1 +kind: VerticalPodAutoscaler +metadata: + name: tap-injector + namespace: {{ .Release.Namespace }} + labels: + linkerd.io/extension: viz + component: tap-injector + {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 4 }}{{- end }} +spec: + resourcePolicy: + containerPolicies: + - containerName: tap-injector + controlledValues: RequestsAndLimits + mode: Auto + {{- with .Values.vpa.tapInjector.minAllowed }} + minAllowed: + {{ toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.vpa.tapInjector.maxAllowed }} + maxAllowed: + {{ toYaml . | nindent 8 }} + {{- end }} + targetRef: + apiVersion: apps/v1 + kind: Deployment + name: tap-injector + updatePolicy: + updateMode: Auto +--- + +apiVersion: autoscaling.k8s.io/v1 +kind: VerticalPodAutoscaler +metadata: + name: metrics-api + namespace: {{ .Release.Namespace }} + labels: + linkerd.io/extension: viz + component: metrics-api + {{- with .Values.commonLabels }}{{ toYaml . | trim | nindent 4 }}{{- end }} +spec: + resourcePolicy: + containerPolicies: + - containerName: metrics-api + controlledValues: RequestsAndLimits + mode: Auto + {{- with .Values.vpa.metricsApi.minAllowed }} + minAllowed: + {{ toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.vpa.metricsApi.maxAllowed }} + maxAllowed: + {{ toYaml . | nindent 8 }} + {{- end }} + targetRef: + apiVersion: apps/v1 + kind: Deployment + name: metrics-api + updatePolicy: + updateMode: Auto +{{ end }} diff --git a/helm/linkerd-viz/values.schema.json b/helm/linkerd-viz/values.schema.json index 08481b5..4da57a5 100644 --- a/helm/linkerd-viz/values.schema.json +++ b/helm/linkerd-viz/values.schema.json @@ -645,6 +645,48 @@ }, "tolerations": { "type": ["null", "array"] + + }, + "vpa": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "metricsApi": { + "type": "object", + "properties": { + "maxAllowed": { + "type": "object" + }, + "minAllowed": { + "type": "object" + } + } + }, + "tap": { + "type": "object", + "properties": { + "maxAllowed": { + "type": "object" + }, + "minAllowed": { + "type": "object" + } + } + }, + "tapInjector": { + "type": "object", + "properties": { + "maxAllowed": { + "type": "object" + }, + "minAllowed": { + "type": "object" + } + } + } + } } } } diff --git a/helm/linkerd-viz/values.yaml b/helm/linkerd-viz/values.yaml index d292e06..c8bd8e8 100644 --- a/helm/linkerd-viz/values.yaml +++ b/helm/linkerd-viz/values.yaml @@ -567,3 +567,21 @@ prometheus: # [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) # for more information tolerations: *default_tolerations + +vpa: + enabled: true + tap: + minAllowed: + Cpu: 100m + Memory: 50Mi + maxAllowed: {} + tapInjector: + minAllowed: + Cpu: 100m + Memory: 50Mi + maxAllowed: {} + metricsApi: + minAllowed: + Cpu: 100m + Memory: 50Mi + maxAllowed: {} diff --git a/vendir.lock.yml b/vendir.lock.yml index 79e320b..2902a6c 100644 --- a/vendir.lock.yml +++ b/vendir.lock.yml @@ -2,10 +2,10 @@ apiVersion: vendir.k14s.io/v1alpha1 directories: - contents: - git: - commitTitle: add nodetaint remover container... - sha: 05a70b5ffc1de5df36af2f4d447bad30c096dca6 + commitTitle: '[GS] add VPA for linkerd-viz...' + sha: 01055dd14c7a644c8ef82442f8143acf17bff90c tags: - - stable-2.10.1-3185-g05a70b5ff + - stable-2.10.1-3187-g01055dd14 path: linkerd path: vendor - contents: