From 6a42929df31ebdfcce1fae80411b332af2fb8b35 Mon Sep 17 00:00:00 2001 From: sergiotejon Date: Thu, 16 Dec 2021 13:32:17 +0100 Subject: [PATCH] Linux sysctls configuration and Kubelet config (#388) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Linux sysctls configuration and Kubelet config * Fix terraform linting issues * Updated README.md * Updated Kubelet config object type * Update readme Co-authored-by: Sergio Tejón Co-authored-by: Julio Castillo --- modules/gke-nodepool/README.md | 2 ++ modules/gke-nodepool/main.tf | 17 +++++++++++++++++ modules/gke-nodepool/variables.tf | 16 ++++++++++++++++ 3 files changed, 35 insertions(+) diff --git a/modules/gke-nodepool/README.md b/modules/gke-nodepool/README.md index 7757ddde..f5ea3a6e 100644 --- a/modules/gke-nodepool/README.md +++ b/modules/gke-nodepool/README.md @@ -45,6 +45,8 @@ module "cluster-1-nodepool-1" { | *autoscaling_config* | Optional autoscaling configuration. | object({...}) | | null | | *gke_version* | Kubernetes nodes version. Ignored if auto_upgrade is set in management_config. | string | | null | | *initial_node_count* | Initial number of nodes for the pool. | number | | 1 | +| *kubelet_config* | Kubelet configuration. | object({...}) | | null | +| *linux_node_config_sysctls* | Linux node configuration. | map(string) | | null | | *management_config* | Optional node management configuration. | object({...}) | | null | | *max_pods_per_node* | Maximum number of pods per node. | number | | null | | *name* | Optional nodepool name. | string | | null | diff --git a/modules/gke-nodepool/main.tf b/modules/gke-nodepool/main.tf index 585cbd23..536b31ae 100644 --- a/modules/gke-nodepool/main.tf +++ b/modules/gke-nodepool/main.tf @@ -144,6 +144,23 @@ resource "google_container_node_pool" "nodepool" { mode = var.workload_metadata_config } + dynamic "kubelet_config" { + for_each = var.kubelet_config != null ? [var.kubelet_config] : [] + iterator = config + content { + cpu_manager_policy = config.value.cpu_manager_policy + cpu_cfs_quota = config.value.cpu_cfs_quota + cpu_cfs_quota_period = config.value.cpu_cfs_quota_period + } + } + + dynamic "linux_node_config" { + for_each = var.linux_node_config_sysctls != null ? [var.linux_node_config_sysctls] : [] + iterator = config + content { + sysctls = config.value + } + } } dynamic "autoscaling" { diff --git a/modules/gke-nodepool/variables.tf b/modules/gke-nodepool/variables.tf index a162f2fd..0053d7aa 100644 --- a/modules/gke-nodepool/variables.tf +++ b/modules/gke-nodepool/variables.tf @@ -40,6 +40,22 @@ variable "initial_node_count" { default = 1 } +variable "kubelet_config" { + description = "Kubelet configuration." + type = object({ + cpu_cfs_quota = string + cpu_cfs_quota_period = string + cpu_manager_policy = string + }) + default = null +} + +variable "linux_node_config_sysctls" { + description = "Linux node configuration." + type = map(string) + default = null +} + variable "location" { description = "Cluster location." type = string