From bd46ce86af9337d96fc478cf3f4085e9cfbc7ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A7alo=20Heleno?= Date: Wed, 3 Apr 2024 11:34:19 +0200 Subject: [PATCH] feat: add variable to set resources with default values Having default values is good practice to prevent that our components could eventually starve other workloads on the cluster. However, these should probably be adapted in production clusters and are only a safeguard in case someone forgets to set them. --- locals.tf | 10 ++++++++++ variables.tf | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/locals.tf b/locals.tf index fcd495f..0aa0b58 100644 --- a/locals.tf +++ b/locals.tf @@ -7,6 +7,16 @@ locals { "eks.amazonaws.com/role-arn" = var.iam_role_arn != null ? var.iam_role_arn : module.iam_assumable_role_ebs.iam_role_arn } } + resources = { + requests = { for k, v in var.resources.controller.requests : k => v if v != null } + limits = { for k, v in var.resources.controller.limits : k => v if v != null } + } + } + node = { + resources = { + requests = { for k, v in var.resources.node.requests : k => v if v != null } + limits = { for k, v in var.resources.node.limits : k => v if v != null } + } } } }] diff --git a/variables.tf b/variables.tf index 69560cb..c1e4628 100644 --- a/variables.tf +++ b/variables.tf @@ -62,6 +62,40 @@ variable "dependency_ids" { ## Module variables ####################### +variable "resources" { + description = <<-EOT + Resource limits and requests for aws-ebs-csi-driver's components. Follow the style on https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/[official documentation] to understand the format of the values." + + NOTE: These are the same values as the defaults on the Helm chart aws-ebs-csi-driver. + EOT + type = object({ + + controller = optional(object({ + requests = optional(object({ + cpu = optional(string, "10m") + memory = optional(string, "40Mi") + }), {}) + limits = optional(object({ + cpu = optional(string) + memory = optional(string, "256Mi") + }), {}) + }), {}) + + node = optional(object({ + requests = optional(object({ + cpu = optional(string, "10m") + memory = optional(string, "40Mi") + }), {}) + limits = optional(object({ + cpu = optional(string) + memory = optional(string, "256Mi") + }), {}) + }), {}) + + }) + default = {} +} + variable "create_role" { description = "Boolean to indicate that the OIDC assumable IAM role should be created. **If passing `iam_role_arn` this should be false, otherwise if you want to create the OIDC assumable IAM role provided by this module, you will need to specify the variable `cluster_oidc_issuer_url`.**" type = bool @@ -78,4 +112,3 @@ variable "cluster_oidc_issuer_url" { type = string default = "" # Use empty string instead of null because of the replace() that uses this variable. } -