Skip to content

Commit 23ac41c

Browse files
authored
feat: Add VPA deployment + CRDs to cluster-apps (#65)
1 parent e548c4b commit 23ac41c

File tree

15 files changed

+396
-16
lines changed

15 files changed

+396
-16
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ module "cluster_apps" {
4444
enabled = false
4545
}
4646
47+
vpa = {
48+
enabled = false
49+
}
50+
4751
metrics_server = {
4852
enabled = true
4953
node_selector = {
@@ -69,7 +73,7 @@ module "cluster_apps" {
6973
|------|---------|
7074
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.9, < 2.0 |
7175
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 5.27 |
72-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.14 |
76+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0 |
7377
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | ~> 2.30 |
7478

7579
## Providers
@@ -92,6 +96,7 @@ module "cluster_apps" {
9296
| <a name="module_keda"></a> [keda](#module\_keda) | ./modules/keda | n/a |
9397
| <a name="module_kyverno"></a> [kyverno](#module\_kyverno) | ./modules/kyverno | n/a |
9498
| <a name="module_metrics_server"></a> [metrics\_server](#module\_metrics\_server) | ./modules/metrics-server | n/a |
99+
| <a name="module_vpa"></a> [vpa](#module\_vpa) | ./modules/vpa | n/a |
95100

96101
## Resources
97102

@@ -115,6 +120,7 @@ module "cluster_apps" {
115120
| <a name="input_namespace"></a> [namespace](#input\_namespace) | value of the namespace to deploy cluster apps | <pre>object({<br/> name = string<br/> create = bool<br/> })</pre> | <pre>{<br/> "create": true,<br/> "name": "cluster-apps"<br/>}</pre> | no |
116121
| <a name="input_node_selector"></a> [node\_selector](#input\_node\_selector) | node selector to deploy cluster apps | `map(string)` | <pre>{<br/> "node.kubernetes.io/pool": "critical"<br/>}</pre> | no |
117122
| <a name="input_tolerations"></a> [tolerations](#input\_tolerations) | tolerations to deploy cluster apps | <pre>list(object({<br/> key = string<br/> operator = string<br/> value = optional(string, null)<br/> effect = optional(string, null)<br/> }))</pre> | <pre>[<br/> {<br/> "effect": "NoSchedule",<br/> "key": "CriticalAddonsOnly",<br/> "operator": "Exists"<br/> }<br/>]</pre> | no |
123+
| <a name="input_vpa"></a> [vpa](#input\_vpa) | vpa configuration | <pre>object({<br/> enabled = optional(bool, false)<br/> release_name = optional(string, "vpa")<br/> crds = optional(object({<br/> enabled = optional(bool, true)<br/> }), {})<br/> recommender = optional(object({<br/> enabled = optional(bool, true)<br/> replica_count = optional(number, 1)<br/> service_account_enabled = optional(bool, true)<br/> resources = optional(object({<br/> limits = optional(object({<br/> cpu = optional(string, "200m")<br/> memory = optional(string, "200Mi")<br/> }), {})<br/> requests = optional(object({<br/> cpu = optional(string, "50m")<br/> memory = optional(string, "50Mi")<br/> }), {})<br/> }), {})<br/> }), {})<br/> updater = optional(object({<br/> enabled = optional(bool, true)<br/> replica_count = optional(number, 1)<br/> service_account_enabled = optional(bool, true)<br/> resources = optional(object({<br/> limits = optional(object({<br/> cpu = optional(string, "200m")<br/> memory = optional(string, "200Mi")<br/> }), {})<br/> requests = optional(object({<br/> cpu = optional(string, "50m")<br/> memory = optional(string, "50Mi")<br/> }), {})<br/> }), {})<br/> }), {})<br/> admissionController = optional(object({<br/> enabled = optional(bool, true)<br/> replica_count = optional(number, 1)<br/> service_account_enabled = optional(bool, true)<br/> resources = optional(object({<br/> limits = optional(object({<br/> cpu = optional(string, "200m")<br/> memory = optional(string, "200Mi")<br/> }), {})<br/> requests = optional(object({<br/> cpu = optional(string, "50m")<br/> memory = optional(string, "50Mi")<br/> }), {})<br/> }), {})<br/> }), {})<br/> })</pre> | `{}` | no |
118124

119125
## Outputs
120126

main.tf

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,3 +251,60 @@ module "cert_manager" {
251251
node_selector = var.cert_manager.node_selector != null ? var.cert_manager.node_selector : var.node_selector
252252
tolerations = var.cert_manager.tolerations != null ? var.cert_manager.tolerations : var.tolerations
253253
}
254+
255+
module "vpa" {
256+
count = var.vpa.enabled ? 1 : 0
257+
258+
source = "./modules/vpa"
259+
260+
namespace = local.namespace
261+
release_name = var.vpa.release_name
262+
crds = {
263+
enabled = var.vpa.crds.enabled
264+
}
265+
recommender = {
266+
enabled = var.vpa.recommender.enabled
267+
replica_count = var.vpa.recommender.replica_count
268+
service_account_enabled = var.vpa.recommender.service_account_enabled
269+
resources = {
270+
limits = {
271+
cpu = var.vpa.recommender.resources.limits.cpu
272+
memory = var.vpa.recommender.resources.limits.memory
273+
}
274+
requests = {
275+
cpu = var.vpa.recommender.resources.requests.cpu
276+
memory = var.vpa.recommender.resources.requests.memory
277+
}
278+
}
279+
}
280+
updater = {
281+
enabled = var.vpa.updater.enabled
282+
replica_count = var.vpa.updater.replica_count
283+
service_account_enabled = var.vpa.updater.service_account_enabled
284+
resources = {
285+
limits = {
286+
cpu = var.vpa.updater.resources.limits.cpu
287+
memory = var.vpa.updater.resources.limits.memory
288+
}
289+
requests = {
290+
cpu = var.vpa.updater.resources.requests.cpu
291+
memory = var.vpa.updater.resources.requests.memory
292+
}
293+
}
294+
}
295+
admissionController = {
296+
enabled = var.vpa.admissionController.enabled
297+
replica_count = var.vpa.admissionController.replica_count
298+
service_account_enabled = var.vpa.admissionController.service_account_enabled
299+
resources = {
300+
limits = {
301+
cpu = var.vpa.admissionController.resources.limits.cpu
302+
memory = var.vpa.admissionController.resources.limits.memory
303+
}
304+
requests = {
305+
cpu = var.vpa.admissionController.resources.requests.cpu
306+
memory = var.vpa.admissionController.resources.requests.memory
307+
}
308+
}
309+
}
310+
}

modules/cert-manager/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
|------|---------|
66
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.9, < 2.0 |
77
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 5.27 |
8-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.14 |
8+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0 |
99
| <a name="requirement_http"></a> [http](#requirement\_http) | ~> 3.4 |
1010

1111
## Providers
1212

1313
| Name | Version |
1414
|------|---------|
15-
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 2.14 |
15+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 3.0 |
1616
| <a name="provider_http"></a> [http](#provider\_http) | ~> 3.4 |
1717
| <a name="provider_kubernetes"></a> [kubernetes](#provider\_kubernetes) | n/a |
1818

modules/external-secrets/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
| Name | Version |
55
|------|---------|
66
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.9, < 2.0 |
7-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.14 |
7+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0 |
88

99
## Providers
1010

1111
| Name | Version |
1212
|------|---------|
13-
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 2.14 |
13+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 3.0 |
1414

1515
## Modules
1616

modules/fluent-bit/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@ EOF
6969
| Name | Version |
7070
|------|---------|
7171
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.5, < 2.0 |
72-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.17.0 |
72+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0.0 |
7373

7474
## Providers
7575

7676
| Name | Version |
7777
|------|---------|
78-
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 2.17.0 |
78+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 3.0.0 |
7979

8080
## Modules
8181

modules/karpenter/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@
55
|------|---------|
66
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.9, < 2.0 |
77
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | ~> 5.27 |
8-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.14 |
8+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0 |
99
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | ~> 2.30 |
1010

1111
## Providers
1212

1313
| Name | Version |
1414
|------|---------|
1515
| <a name="provider_aws"></a> [aws](#provider\_aws) | ~> 5.27 |
16-
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 2.14 |
16+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 3.0 |
1717
| <a name="provider_kubernetes"></a> [kubernetes](#provider\_kubernetes) | ~> 2.30 |
1818

1919
## Modules
2020

2121
| Name | Source | Version |
2222
|------|--------|---------|
23-
| <a name="module_irsa"></a> [irsa](#module\_irsa) | terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks | 5.55.0 |
23+
| <a name="module_irsa"></a> [irsa](#module\_irsa) | terraform-aws-modules/iam/aws//modules/iam-role-for-service-accounts-eks | 5.58.0 |
2424

2525
## Resources
2626

modules/keda/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
| Name | Version |
55
|------|---------|
66
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.9, < 2.0 |
7-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.14 |
7+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0 |
88
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | ~> 2.30 |
99

1010
## Providers
1111

1212
| Name | Version |
1313
|------|---------|
14-
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 2.14 |
14+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 3.0 |
1515

1616
## Modules
1717

modules/kyverno/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
| Name | Version |
55
|------|---------|
66
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.9, < 2.0 |
7-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.14 |
7+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0 |
88

99
## Providers
1010

1111
| Name | Version |
1212
|------|---------|
13-
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 2.14 |
13+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 3.0 |
1414

1515
## Modules
1616

modules/metrics-server/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
| Name | Version |
55
|------|---------|
66
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.9, < 2.0 |
7-
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 2.14 |
7+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0 |
88

99
## Providers
1010

1111
| Name | Version |
1212
|------|---------|
13-
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 2.14 |
13+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 3.0 |
1414

1515
## Modules
1616

modules/vpa/README.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<!-- BEGIN_TF_DOCS -->
2+
## Requirements
3+
4+
| Name | Version |
5+
|------|---------|
6+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.9, < 2.0 |
7+
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | ~> 3.0 |
8+
9+
## Providers
10+
11+
| Name | Version |
12+
|------|---------|
13+
| <a name="provider_helm"></a> [helm](#provider\_helm) | ~> 3.0 |
14+
15+
## Modules
16+
17+
No modules.
18+
19+
## Resources
20+
21+
| Name | Type |
22+
|------|------|
23+
| [helm_release.vpa](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
24+
25+
## Inputs
26+
27+
| Name | Description | Type | Default | Required |
28+
|------|-------------|------|---------|:--------:|
29+
| <a name="input_admissionController"></a> [admissionController](#input\_admissionController) | The VPA admission controller configuration | <pre>object({<br/> enabled = optional(bool)<br/> replica_count = optional(number)<br/> service_account_enabled = optional(bool)<br/> resources = optional(object({<br/> limits = optional(object({<br/> cpu = optional(string)<br/> memory = optional(string)<br/> }))<br/> requests = optional(object({<br/> cpu = optional(string)<br/> memory = optional(string)<br/> }))<br/> }))<br/> })</pre> | <pre>{<br/> "enabled": true,<br/> "replica_count": 1,<br/> "resources": {<br/> "limits": {<br/> "cpu": "200m",<br/> "memory": "200Mi"<br/> },<br/> "requests": {<br/> "cpu": "50m",<br/> "memory": "50Mi"<br/> }<br/> },<br/> "service_account_enabled": true<br/>}</pre> | no |
30+
| <a name="input_crds"></a> [crds](#input\_crds) | The CRDs to install | <pre>object({<br/> enabled = optional(bool)<br/> })</pre> | <pre>{<br/> "enabled": true<br/>}</pre> | no |
31+
| <a name="input_helm_chart_version"></a> [helm\_chart\_version](#input\_helm\_chart\_version) | The version of the VPA Helm chart to install | `string` | `"10.2.1"` | no |
32+
| <a name="input_namespace"></a> [namespace](#input\_namespace) | The namespace to install the VPA in | `string` | `"cluster-apps"` | no |
33+
| <a name="input_recommender"></a> [recommender](#input\_recommender) | The VPA recommender configuration | <pre>object({<br/> enabled = optional(bool)<br/> replica_count = optional(number)<br/> service_account_enabled = optional(bool)<br/> resources = optional(object({<br/> limits = optional(object({<br/> cpu = optional(string)<br/> memory = optional(string)<br/> }))<br/> requests = optional(object({<br/> cpu = optional(string)<br/> memory = optional(string)<br/> }))<br/> }))<br/> })</pre> | <pre>{<br/> "enabled": true,<br/> "replica_count": 1,<br/> "resources": {<br/> "limits": {<br/> "cpu": "200m",<br/> "memory": "200Mi"<br/> },<br/> "requests": {<br/> "cpu": "50m",<br/> "memory": "50Mi"<br/> }<br/> },<br/> "service_account_enabled": true<br/>}</pre> | no |
34+
| <a name="input_release_name"></a> [release\_name](#input\_release\_name) | The name of the Helm release | `string` | `"vpa"` | no |
35+
| <a name="input_updater"></a> [updater](#input\_updater) | The VPA updater configuration | <pre>object({<br/> enabled = optional(bool)<br/> replica_count = optional(number)<br/> service_account_enabled = optional(bool)<br/> resources = optional(object({<br/> limits = optional(object({<br/> cpu = optional(string)<br/> memory = optional(string)<br/> }))<br/> requests = optional(object({<br/> cpu = optional(string)<br/> memory = optional(string)<br/> }))<br/> }))<br/> })</pre> | <pre>{<br/> "enabled": true,<br/> "replica_count": 1,<br/> "resources": {<br/> "limits": {<br/> "cpu": "200m",<br/> "memory": "200Mi"<br/> },<br/> "requests": {<br/> "cpu": "50m",<br/> "memory": "50Mi"<br/> }<br/> },<br/> "service_account_enabled": true<br/>}</pre> | no |
36+
37+
## Outputs
38+
39+
No outputs.
40+
<!-- END_TF_DOCS -->

0 commit comments

Comments
 (0)