From 0dbe9e22bfba7cbaf4acef7d548156ffbe9db99f Mon Sep 17 00:00:00 2001 From: Aram Karapetyan Date: Thu, 26 Sep 2024 09:55:35 +0400 Subject: [PATCH] fix(priority-class): DMVP-5359 add priority class --- README.md | 2 +- modules/priority-class/README.md | 4 ++-- modules/priority-class/main.tf | 5 ++--- .../tests/add-new-priority-class/README.md | 2 +- .../tests/add-new-priority-class/main.tf | 6 +----- .../tests/add-new-priority-class/output.tf | 3 +++ modules/priority-class/tests/basic/main.tf | 4 ---- modules/priority-class/tests/basic/output.tf | 3 +++ modules/priority-class/variables.tf | 11 +++++++---- priority-class.tf | 2 +- variables.tf | 11 +++++++---- 11 files changed, 28 insertions(+), 25 deletions(-) create mode 100644 modules/priority-class/tests/add-new-priority-class/output.tf create mode 100644 modules/priority-class/tests/basic/output.tf diff --git a/README.md b/README.md index 8a306ab..9c22756 100644 --- a/README.md +++ b/README.md @@ -237,6 +237,7 @@ worker_groups = { | Name | Description | Type | Default | Required | |------|-------------|------|---------|:--------:| | [account\_id](#input\_account\_id) | AWS Account Id to apply changes into | `string` | `null` | no | +| [additional\_priority\_classes](#input\_additional\_priority\_classes) | Defines Priority Classes in Kubernetes, used to assign different levels of priority to pods. By default, this module creates three Priority Classes: 'high'(1000000), 'medium'(500000) and 'low'(250000) . You can also provide a custom list of Priority Classes if needed. |
list(object({
name = string
value = string # number in string form
}))
| `[]` | no | | [adot\_config](#input\_adot\_config) | accept\_namespace\_regex defines the list of namespaces from which metrics will be exported, and additional\_metrics defines additional metrics to export. |
object({
accept_namespace_regex = optional(string, "(default|kube-system)")
additional_metrics = optional(list(string), [])
log_group_name = optional(string, "adot")
log_retention = optional(number, 14)
helm_values = optional(any, null)
logging_enable = optional(bool, false)
resources = optional(object({
limit = object({
cpu = optional(string, "200m")
memory = optional(string, "200Mi")
})
requests = object({
cpu = optional(string, "200m")
memory = optional(string, "200Mi")
})
}), {
limit = {
cpu = "200m"
memory = "200Mi"
}
requests = {
cpu = "200m"
memory = "200Mi"
}
})
})
|
{
"accept_namespace_regex": "(default|kube-system)",
"additional_metrics": [],
"helm_values": null,
"log_group_name": "adot",
"log_retention": 14,
"logging_enable": false,
"resources": {
"limit": {
"cpu": "200m",
"memory": "200Mi"
},
"requests": {
"cpu": "200m",
"memory": "200Mi"
}
}
}
| no | | [adot\_version](#input\_adot\_version) | The version of the AWS Distro for OpenTelemetry addon to use. | `string` | `"v0.78.0-eksbuild.1"` | no | | [alarms](#input\_alarms) | Alarms enabled by default you need set sns topic name for send alarms for customize alarms threshold use custom\_values |
object({
enabled = optional(bool, true)
sns_topic = string
custom_values = optional(any, {})
})
| n/a | yes | @@ -279,7 +280,6 @@ worker_groups = { | [node\_groups\_default](#input\_node\_groups\_default) | Map of EKS managed node group default configurations | `any` |
{
"disk_size": 50,
"iam_role_additional_policies": [
"arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
],
"instance_types": [
"t3.large"
]
}
| no | | [node\_security\_group\_additional\_rules](#input\_node\_security\_group\_additional\_rules) | n/a | `any` |
{
"ingress_cluster_10250": {
"description": "Metric server to node groups",
"from_port": 10250,
"protocol": "tcp",
"self": true,
"to_port": 10250,
"type": "ingress"
},
"ingress_cluster_8443": {
"description": "Metric server to node groups",
"from_port": 8443,
"protocol": "tcp",
"source_cluster_security_group": true,
"to_port": 8443,
"type": "ingress"
}
}
| no | | [portainer\_config](#input\_portainer\_config) | Portainer hostname and ingress config. |
object({
host = optional(string, "portainer.dasmeta.com")
enable_ingress = optional(bool, true)
})
| `{}` | no | -| [priority\_class](#input\_priority\_class) | Defines Priority Classes in Kubernetes, used to assign different levels of priority to pods. By default, this module creates three Priority Classes: 'high', 'medium' and 'low' . You can also provide a custom list of Priority Classes if needed. | `list(any)` |
[
{}
]
| no | | [prometheus\_metrics](#input\_prometheus\_metrics) | Prometheus Metrics | `any` | `[]` | no | | [region](#input\_region) | AWS Region name. | `string` | `null` | no | | [roles](#input\_roles) | Variable describes which role will user have K8s |
list(object({
actions = list(string)
resources = list(string)
}))
| `[]` | no | diff --git a/modules/priority-class/README.md b/modules/priority-class/README.md index 0246457..41009b3 100644 --- a/modules/priority-class/README.md +++ b/modules/priority-class/README.md @@ -21,13 +21,13 @@ No modules. | Name | Type | |------|------| -| [kubernetes_priority_class.example](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/priority_class) | resource | +| [kubernetes_priority_class.this](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/priority_class) | resource | ## Inputs | Name | Description | Type | Default | Required | |------|-------------|------|---------|:--------:| -| [priority\_class](#input\_priority\_class) | Defines Priority Classes in Kubernetes, used to assign different levels of priority to pods. By default, this module creates three Priority Classes: 'high', 'medium' and 'low' . You can also provide a custom list of Priority Classes if needed. | `list(any)` |
[
{}
]
| no | +| [additional\_priority\_classes](#input\_additional\_priority\_classes) | Defines Priority Classes in Kubernetes, used to assign different levels of priority to pods. By default, this module creates three Priority Classes: 'high'(1000000), 'medium'(500000) and 'low'(250000) . You can also provide a custom list of Priority Classes if needed. |
list(object({
name = string
value = string # number in string form
}))
| `[]` | no | ## Outputs diff --git a/modules/priority-class/main.tf b/modules/priority-class/main.tf index 2d401f2..b5fde0e 100644 --- a/modules/priority-class/main.tf +++ b/modules/priority-class/main.tf @@ -13,15 +13,14 @@ locals { value = "250000" } ] - merged_priority_class = concat(local.priority_class_default, var.priority_class) - priority_class = [for map in local.merged_priority_class : map if length(map) > 0] + priority_class = concat(local.priority_class_default, var.additional_priority_classes) } output "priority_class" { value = local.priority_class } -resource "kubernetes_priority_class" "example" { +resource "kubernetes_priority_class" "this" { # Transform the list of maps into a key-value map suitable for for_each for_each = { for pc in local.priority_class : pc.name => pc } diff --git a/modules/priority-class/tests/add-new-priority-class/README.md b/modules/priority-class/tests/add-new-priority-class/README.md index d3423b6..ac7b4c1 100644 --- a/modules/priority-class/tests/add-new-priority-class/README.md +++ b/modules/priority-class/tests/add-new-priority-class/README.md @@ -9,7 +9,7 @@ No requirements. | Name | Version | |------|---------| -| [aws](#provider\_aws) | n/a | +| [aws](#provider\_aws) | 5.68.0 | ## Modules diff --git a/modules/priority-class/tests/add-new-priority-class/main.tf b/modules/priority-class/tests/add-new-priority-class/main.tf index 3ad027a..786020c 100644 --- a/modules/priority-class/tests/add-new-priority-class/main.tf +++ b/modules/priority-class/tests/add-new-priority-class/main.tf @@ -1,14 +1,10 @@ module "test" { source = "../../" - priority_class = [ + additional_priority_classes = [ { name = "important" value = "2000000" }, ] } - -output "priority_class" { - value = module.test.priority_class -} diff --git a/modules/priority-class/tests/add-new-priority-class/output.tf b/modules/priority-class/tests/add-new-priority-class/output.tf new file mode 100644 index 0000000..01e8162 --- /dev/null +++ b/modules/priority-class/tests/add-new-priority-class/output.tf @@ -0,0 +1,3 @@ +output "priority_class" { + value = module.test.priority_class +} diff --git a/modules/priority-class/tests/basic/main.tf b/modules/priority-class/tests/basic/main.tf index e385052..016442f 100644 --- a/modules/priority-class/tests/basic/main.tf +++ b/modules/priority-class/tests/basic/main.tf @@ -1,7 +1,3 @@ module "test" { source = "../../" } - -output "priority_class" { - value = module.test.priority_class -} diff --git a/modules/priority-class/tests/basic/output.tf b/modules/priority-class/tests/basic/output.tf new file mode 100644 index 0000000..01e8162 --- /dev/null +++ b/modules/priority-class/tests/basic/output.tf @@ -0,0 +1,3 @@ +output "priority_class" { + value = module.test.priority_class +} diff --git a/modules/priority-class/variables.tf b/modules/priority-class/variables.tf index 6fabe87..e9fb597 100644 --- a/modules/priority-class/variables.tf +++ b/modules/priority-class/variables.tf @@ -1,5 +1,8 @@ -variable "priority_class" { - type = list(any) - description = "Defines Priority Classes in Kubernetes, used to assign different levels of priority to pods. By default, this module creates three Priority Classes: 'high', 'medium' and 'low' . You can also provide a custom list of Priority Classes if needed." - default = [{}] +variable "additional_priority_classes" { + type = list(object({ + name = string + value = string # number in string form + })) + description = "Defines Priority Classes in Kubernetes, used to assign different levels of priority to pods. By default, this module creates three Priority Classes: 'high'(1000000), 'medium'(500000) and 'low'(250000) . You can also provide a custom list of Priority Classes if needed." + default = [] } diff --git a/priority-class.tf b/priority-class.tf index c3a3cfe..c5695fe 100644 --- a/priority-class.tf +++ b/priority-class.tf @@ -1,5 +1,5 @@ module "priority_class" { source = "./modules/priority-class/" - priority_class = var.priority_class + additional_priority_classes = var.additional_priority_classes } diff --git a/variables.tf b/variables.tf index 761bae4..28842c0 100644 --- a/variables.tf +++ b/variables.tf @@ -564,8 +564,11 @@ variable "alarms" { description = "Alarms enabled by default you need set sns topic name for send alarms for customize alarms threshold use custom_values" } -variable "priority_class" { - type = list(any) - description = "Defines Priority Classes in Kubernetes, used to assign different levels of priority to pods. By default, this module creates three Priority Classes: 'high', 'medium' and 'low' . You can also provide a custom list of Priority Classes if needed." - default = [{}] +variable "additional_priority_classes" { + type = list(object({ + name = string + value = string # number in string form + })) + description = "Defines Priority Classes in Kubernetes, used to assign different levels of priority to pods. By default, this module creates three Priority Classes: 'high'(1000000), 'medium'(500000) and 'low'(250000) . You can also provide a custom list of Priority Classes if needed." + default = [] }