Skip to content

Commit e3dc09c

Browse files
authored
Merge pull request #8646 from maxcao13/vpa-chart-recommender
feat(vpa-chart): add chart logic for the vpa recommender
2 parents 6f5c51e + f4a8aea commit e3dc09c

File tree

10 files changed

+558
-3
lines changed

10 files changed

+558
-3
lines changed

vertical-pod-autoscaler/charts/vertical-pod-autoscaler/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type: application
1515
# This is the chart version. This version number should be incremented each time you make changes
1616
# to the chart and its templates, including the app version.
1717
# Versions are expected to follow Semantic Versioning (https://semver.org/)
18-
version: 0.3.0
18+
version: 0.4.0
1919

2020
# This is the version number of the application being deployed. This version number should be
2121
# incremented each time you make changes to the application. Versions are not expected to

vertical-pod-autoscaler/charts/vertical-pod-autoscaler/README.md

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ WARNING: This chart is currently under development and is not ready for producti
44

55
Automatically adjust resources for your workloads
66

7-
![Version: 0.3.0](https://img.shields.io/badge/Version-0.3.0-informational?style=flat-square)
7+
![Version: 0.4.0](https://img.shields.io/badge/Version-0.4.0-informational?style=flat-square)
88
![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
99
![AppVersion: 1.5.1](https://img.shields.io/badge/AppVersion-1.5.1-informational?style=flat-square)
1010

@@ -65,3 +65,31 @@ The Vertical Pod Autoscaler (VPA) automatically adjusts the CPU and memory resou
6565
| imagePullSecrets | list | `[]` | |
6666
| nameOverride | string | `nil` | |
6767
| rbac.create | bool | `true` | |
68+
| recommender.affinity | object | `{}` | |
69+
| recommender.enabled | bool | `true` | |
70+
| recommender.extraArgs | list | `[]` | |
71+
| recommender.extraEnv | list | `[]` | |
72+
| recommender.image.pullPolicy | string | `"IfNotPresent"` | |
73+
| recommender.image.repository | string | `"registry.k8s.io/autoscaling/vpa-recommender"` | |
74+
| recommender.image.tag | string | `nil` | |
75+
| recommender.leaderElection.enabled | string | `nil` | |
76+
| recommender.leaderElection.leaseDuration | string | `"15s"` | |
77+
| recommender.leaderElection.renewDeadline | string | `"10s"` | |
78+
| recommender.leaderElection.resourceName | string | `"vpa-recommender-lease"` | |
79+
| recommender.leaderElection.resourceNamespace | string | `""` | |
80+
| recommender.leaderElection.retryPeriod | string | `"2s"` | |
81+
| recommender.nodeSelector | object | `{}` | |
82+
| recommender.podAnnotations | object | `{}` | |
83+
| recommender.podDisruptionBudget.enabled | bool | `true` | |
84+
| recommender.podDisruptionBudget.maxUnavailable | int or string | `nil` | Maximum number/percentage of pods that can be unavailable after the eviction. IMPORTANT: You can specify either 'minAvailable' or 'maxUnavailable', but not both. |
85+
| recommender.podDisruptionBudget.minAvailable | int or string | `1` | Minimum number/percentage of pods that must be available after the eviction. IMPORTANT: You can specify either 'minAvailable' or 'maxUnavailable', but not both. |
86+
| recommender.podLabels | object | `{}` | |
87+
| recommender.replicas | int | `2` | |
88+
| recommender.resources.limits.cpu | string | `"200m"` | |
89+
| recommender.resources.limits.memory | string | `"1000Mi"` | |
90+
| recommender.resources.requests.cpu | string | `"50m"` | |
91+
| recommender.resources.requests.memory | string | `"500Mi"` | |
92+
| recommender.serviceAccount.annotations | object | `{}` | |
93+
| recommender.serviceAccount.create | bool | `true` | |
94+
| recommender.serviceAccount.labels | object | `{}` | |
95+
| recommender.tolerations | list | `[]` | |

vertical-pod-autoscaler/charts/vertical-pod-autoscaler/templates/_helpers.tpl

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,27 @@ Create the name of the namespace to use
7979
*/}}
8080
{{- define "common.names.namespace" -}}
8181
{{- default .Release.Namespace .Values.namespaceOverride | trunc 63 | trimSuffix "-" -}}
82-
{{- end -}}
82+
{{- end -}}
83+
84+
85+
{{/*
86+
recommender
87+
*/}}
88+
{{- define "vertical-pod-autoscaler.recommender.fullname" -}}
89+
{{ include "vertical-pod-autoscaler.fullname" . }}-recommender
90+
{{- end }}
91+
92+
{{- define "vertical-pod-autoscaler.recommender.labels" -}}
93+
{{ include "vertical-pod-autoscaler.labels" . }}
94+
app.kubernetes.io/component: recommender
95+
app.kubernetes.io/component-instance: {{ .Release.Name }}-recommender
96+
{{- end }}
97+
98+
{{- define "vertical-pod-autoscaler.recommender.selectorLabels" -}}
99+
{{ include "vertical-pod-autoscaler.selectorLabels" . }}
100+
app.kubernetes.io/component: recommender
101+
{{- end }}
102+
103+
{{- define "vertical-pod-autoscaler.recommender.image" -}}
104+
{{- printf "%s:%s" .Values.recommender.image.repository (default .Chart.AppVersion .Values.recommender.image.tag) }}
105+
{{- end }}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
{{- if and (.Values.recommender.enabled) .Values.rbac.create -}}
2+
---
3+
apiVersion: rbac.authorization.k8s.io/v1
4+
kind: ClusterRoleBinding
5+
metadata:
6+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-metrics-reader
7+
labels:
8+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
9+
roleRef:
10+
apiGroup: rbac.authorization.k8s.io
11+
kind: ClusterRole
12+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-metrics-reader
13+
subjects:
14+
- kind: ServiceAccount
15+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}
16+
namespace: {{ .Release.Namespace }}
17+
---
18+
apiVersion: rbac.authorization.k8s.io/v1
19+
kind: ClusterRoleBinding
20+
metadata:
21+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-actor
22+
labels:
23+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
24+
roleRef:
25+
apiGroup: rbac.authorization.k8s.io
26+
kind: ClusterRole
27+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-actor
28+
subjects:
29+
- kind: ServiceAccount
30+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}
31+
namespace: {{ .Release.Namespace }}
32+
---
33+
apiVersion: rbac.authorization.k8s.io/v1
34+
kind: ClusterRoleBinding
35+
metadata:
36+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-status-actor
37+
labels:
38+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
39+
roleRef:
40+
apiGroup: rbac.authorization.k8s.io
41+
kind: ClusterRole
42+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-status-actor
43+
subjects:
44+
- kind: ServiceAccount
45+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}
46+
namespace: {{ .Release.Namespace }}
47+
---
48+
apiVersion: rbac.authorization.k8s.io/v1
49+
kind: ClusterRoleBinding
50+
metadata:
51+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-checkpoint-actor
52+
labels:
53+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
54+
roleRef:
55+
apiGroup: rbac.authorization.k8s.io
56+
kind: ClusterRole
57+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-checkpoint-actor
58+
subjects:
59+
- kind: ServiceAccount
60+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}
61+
namespace: {{ .Release.Namespace }}
62+
---
63+
apiVersion: rbac.authorization.k8s.io/v1
64+
kind: ClusterRoleBinding
65+
metadata:
66+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-target-reader
67+
labels:
68+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
69+
roleRef:
70+
apiGroup: rbac.authorization.k8s.io
71+
kind: ClusterRole
72+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-target-reader
73+
subjects:
74+
- kind: ServiceAccount
75+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}
76+
namespace: {{ .Release.Namespace }}
77+
{{- end -}}
78+
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
{{- if and (.Values.recommender.enabled) .Values.rbac.create -}}
2+
---
3+
apiVersion: rbac.authorization.k8s.io/v1
4+
kind: ClusterRole
5+
metadata:
6+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-metrics-reader
7+
labels:
8+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
9+
rules:
10+
- apiGroups:
11+
- "metrics.k8s.io"
12+
resources:
13+
- pods
14+
verbs:
15+
- get
16+
- list
17+
---
18+
apiVersion: rbac.authorization.k8s.io/v1
19+
kind: ClusterRole
20+
metadata:
21+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-actor
22+
labels:
23+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
24+
rules:
25+
- apiGroups:
26+
- ""
27+
resources:
28+
- pods
29+
- nodes
30+
- limitranges
31+
verbs:
32+
- get
33+
- list
34+
- watch
35+
- apiGroups:
36+
- ""
37+
- events.k8s.io
38+
resources:
39+
- events
40+
verbs:
41+
- create
42+
- get
43+
- list
44+
- watch
45+
- patch
46+
- update
47+
- apiGroups:
48+
- "poc.autoscaling.k8s.io"
49+
resources:
50+
- verticalpodautoscalers
51+
verbs:
52+
- get
53+
- list
54+
- watch
55+
- apiGroups:
56+
- "autoscaling.k8s.io"
57+
resources:
58+
- verticalpodautoscalers
59+
verbs:
60+
- get
61+
- list
62+
- watch
63+
---
64+
apiVersion: rbac.authorization.k8s.io/v1
65+
kind: ClusterRole
66+
metadata:
67+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-status-actor
68+
labels:
69+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
70+
rules:
71+
- apiGroups:
72+
- "autoscaling.k8s.io"
73+
resources:
74+
- verticalpodautoscalers/status
75+
verbs:
76+
- get
77+
- patch
78+
---
79+
apiVersion: rbac.authorization.k8s.io/v1
80+
kind: ClusterRole
81+
metadata:
82+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-checkpoint-actor
83+
labels:
84+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
85+
rules:
86+
- apiGroups:
87+
- "poc.autoscaling.k8s.io"
88+
resources:
89+
- verticalpodautoscalercheckpoints
90+
verbs:
91+
- get
92+
- list
93+
- watch
94+
- create
95+
- patch
96+
- delete
97+
- apiGroups:
98+
- "autoscaling.k8s.io"
99+
resources:
100+
- verticalpodautoscalercheckpoints
101+
verbs:
102+
- get
103+
- list
104+
- watch
105+
- create
106+
- patch
107+
- delete
108+
- apiGroups:
109+
- ""
110+
resources:
111+
- namespaces
112+
verbs:
113+
- get
114+
- list
115+
---
116+
apiVersion: rbac.authorization.k8s.io/v1
117+
kind: ClusterRole
118+
metadata:
119+
name: {{ include "vertical-pod-autoscaler.recommender.fullname" . }}-target-reader
120+
labels:
121+
{{- include "vertical-pod-autoscaler.recommender.labels" . | nindent 4 }}
122+
rules:
123+
- apiGroups:
124+
- '*'
125+
resources:
126+
- '*/scale'
127+
verbs:
128+
- get
129+
- watch
130+
- apiGroups:
131+
- ""
132+
resources:
133+
- replicationcontrollers
134+
verbs:
135+
- get
136+
- list
137+
- watch
138+
- apiGroups:
139+
- apps
140+
resources:
141+
- daemonsets
142+
- deployments
143+
- replicasets
144+
- statefulsets
145+
verbs:
146+
- get
147+
- list
148+
- watch
149+
- apiGroups:
150+
- batch
151+
resources:
152+
- jobs
153+
- cronjobs
154+
verbs:
155+
- get
156+
- list
157+
- watch
158+
{{- end -}}

0 commit comments

Comments
 (0)