From 9be8dee88c1a977e91647448e5fba17dffaef2ac Mon Sep 17 00:00:00 2001 From: kolosovpetro Date: Wed, 5 Mar 2025 21:15:09 +0100 Subject: [PATCH 1/6] infra updates --- terraform/.tflint.hcl | 12 ++++++++++++ terraform/main.tf | 7 +++---- terraform/modules/{acr => acr-access}/main.tf | 8 -------- terraform/modules/{acr => acr-access}/variables.tf | 0 terraform/terraform.auto.tfvars.json | 5 ++--- terraform/variables.tf | 5 ----- terraform/versions.tf | 2 +- 7 files changed, 18 insertions(+), 21 deletions(-) create mode 100644 terraform/.tflint.hcl rename terraform/modules/{acr => acr-access}/main.tf (78%) rename terraform/modules/{acr => acr-access}/variables.tf (100%) diff --git a/terraform/.tflint.hcl b/terraform/.tflint.hcl new file mode 100644 index 0000000..55f7758 --- /dev/null +++ b/terraform/.tflint.hcl @@ -0,0 +1,12 @@ +plugin "terraform" { + enabled = true + preset = "recommended" +} + +rule "terraform_unused_declarations" { + enabled = true +} + +rule "terraform_required_providers" { + enabled = true +} diff --git a/terraform/main.tf b/terraform/main.tf index aa0032a..9a60563 100644 --- a/terraform/main.tf +++ b/terraform/main.tf @@ -31,12 +31,11 @@ module "aks" { ] } -module "acr" { - count = var.should_deploy_acr ? 1 : 0 - source = "./modules/acr" +module "configure_acr_access" { + source = "./modules/acr-access" acr_name = var.acr_name aks_identity_principal_id = module.aks.principal_id - resource_group_name = "rg-azure-devops-acr-d01" # ACR is deployed outside AKS resource group + resource_group_name = "rg-azure-devops-acr-d01" aks_name = module.aks.name aks_resource_group = module.aks.resource_group_name diff --git a/terraform/modules/acr/main.tf b/terraform/modules/acr-access/main.tf similarity index 78% rename from terraform/modules/acr/main.tf rename to terraform/modules/acr-access/main.tf index 4a0855f..9b9340a 100644 --- a/terraform/modules/acr/main.tf +++ b/terraform/modules/acr-access/main.tf @@ -1,11 +1,3 @@ -# resource "azurerm_container_registry" "acr" { -# name = var.acr_name -# resource_group_name = var.resource_group_name -# location = var.resource_group_location -# sku = "Standard" -# admin_enabled = true -# } - data "azurerm_kubernetes_cluster" "aks" { name = var.aks_name resource_group_name = var.aks_resource_group diff --git a/terraform/modules/acr/variables.tf b/terraform/modules/acr-access/variables.tf similarity index 100% rename from terraform/modules/acr/variables.tf rename to terraform/modules/acr-access/variables.tf diff --git a/terraform/terraform.auto.tfvars.json b/terraform/terraform.auto.tfvars.json index e642697..3af570c 100644 --- a/terraform/terraform.auto.tfvars.json +++ b/terraform/terraform.auto.tfvars.json @@ -8,9 +8,8 @@ "default_node_pool_type": "VirtualMachineScaleSets", "system_node_count": 3, "log_analytics_sku": "PerGB2018", - "should_deploy_acr": false, - "should_deploy_log_analytics": false, - "should_deploy_prometheus": false, + "should_deploy_log_analytics": true, + "should_deploy_prometheus": true, "acr_name": "azuredevopsacrd01", "subscription_id": "f32f6566-8fa0-4198-9c91-a3b8ac69e89a", "tenant_id": "b40a105f-0643-4922-8e60-10fc1abf9c4b", diff --git a/terraform/variables.tf b/terraform/variables.tf index 30beb0c..797a586 100644 --- a/terraform/variables.tf +++ b/terraform/variables.tf @@ -48,11 +48,6 @@ variable "kubernetes_version" { description = "Kubernetes version" } -variable "should_deploy_acr" { - type = bool - description = "Should deploy ACR" -} - variable "should_deploy_log_analytics" { type = bool description = "Should deploy log analytics" diff --git a/terraform/versions.tf b/terraform/versions.tf index ff64132..705d863 100644 --- a/terraform/versions.tf +++ b/terraform/versions.tf @@ -15,6 +15,6 @@ terraform { version = ">=1.9.0" } } - + required_version = ">=1.11.0" backend "azurerm" {} } From 6c8b2276cd7a0941712f105136150c5bf6712b6a Mon Sep 17 00:00:00 2001 From: kolosovpetro Date: Thu, 6 Mar 2025 19:11:22 +0100 Subject: [PATCH 2/6] add hpa rules --- .../auth-deployment-cluster-ip/hpa.yaml | 25 +++++++++++++++++++ .../consumer-deployment-cluster-ip/hpa.yaml | 25 +++++++++++++++++++ .../sender-deployment-cluster-ip/hpa.yaml | 25 +++++++++++++++++++ terraform/terraform.auto.tfvars.json | 4 +-- 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 kubernetes/auth-deployment-cluster-ip/hpa.yaml create mode 100644 kubernetes/consumer-deployment-cluster-ip/hpa.yaml create mode 100644 kubernetes/sender-deployment-cluster-ip/hpa.yaml diff --git a/kubernetes/auth-deployment-cluster-ip/hpa.yaml b/kubernetes/auth-deployment-cluster-ip/hpa.yaml new file mode 100644 index 0000000..7a1728a --- /dev/null +++ b/kubernetes/auth-deployment-cluster-ip/hpa.yaml @@ -0,0 +1,25 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: event-triangle-auth-hpa + namespace: event-triangle +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: event-triangle-auth-deployment + minReplicas: 1 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 50 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 70 diff --git a/kubernetes/consumer-deployment-cluster-ip/hpa.yaml b/kubernetes/consumer-deployment-cluster-ip/hpa.yaml new file mode 100644 index 0000000..7116d19 --- /dev/null +++ b/kubernetes/consumer-deployment-cluster-ip/hpa.yaml @@ -0,0 +1,25 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: event-triangle-consumer-hpa + namespace: event-triangle +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: event-triangle-consumer-deployment + minReplicas: 1 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 50 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 70 diff --git a/kubernetes/sender-deployment-cluster-ip/hpa.yaml b/kubernetes/sender-deployment-cluster-ip/hpa.yaml new file mode 100644 index 0000000..165d8d7 --- /dev/null +++ b/kubernetes/sender-deployment-cluster-ip/hpa.yaml @@ -0,0 +1,25 @@ +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: event-triangle-sender-hpa + namespace: event-triangle +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: event-triangle-sender-deployment + minReplicas: 1 + maxReplicas: 5 + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: 50 + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: 70 diff --git a/terraform/terraform.auto.tfvars.json b/terraform/terraform.auto.tfvars.json index 3af570c..e233dd2 100644 --- a/terraform/terraform.auto.tfvars.json +++ b/terraform/terraform.auto.tfvars.json @@ -8,8 +8,8 @@ "default_node_pool_type": "VirtualMachineScaleSets", "system_node_count": 3, "log_analytics_sku": "PerGB2018", - "should_deploy_log_analytics": true, - "should_deploy_prometheus": true, + "should_deploy_log_analytics": false, + "should_deploy_prometheus": false, "acr_name": "azuredevopsacrd01", "subscription_id": "f32f6566-8fa0-4198-9c91-a3b8ac69e89a", "tenant_id": "b40a105f-0643-4922-8e60-10fc1abf9c4b", From 294fe2f4ebb4659e2c6dadfcc70fa78aebc534a8 Mon Sep 17 00:00:00 2001 From: kolosovpetro Date: Thu, 6 Mar 2025 19:20:54 +0100 Subject: [PATCH 3/6] configure deployment hpa --- kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml | 7 +++++++ .../consumer-deployment.yaml | 7 +++++++ .../sender-deployment-cluster-ip/sender-deployment.yaml | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml b/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml index ec57143..8553186 100644 --- a/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml +++ b/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml @@ -18,6 +18,13 @@ spec: - name: event-triangle-auth-api image: kaminome/auth-service:latest imagePullPolicy: Always + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi ports: - containerPort: 80 - containerPort: 81 diff --git a/kubernetes/consumer-deployment-cluster-ip/consumer-deployment.yaml b/kubernetes/consumer-deployment-cluster-ip/consumer-deployment.yaml index 833c1b4..1635332 100644 --- a/kubernetes/consumer-deployment-cluster-ip/consumer-deployment.yaml +++ b/kubernetes/consumer-deployment-cluster-ip/consumer-deployment.yaml @@ -18,6 +18,13 @@ spec: - name: event-triangle-consumer-api image: kaminome/consumer-service:latest imagePullPolicy: Always + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi ports: - containerPort: 80 env: diff --git a/kubernetes/sender-deployment-cluster-ip/sender-deployment.yaml b/kubernetes/sender-deployment-cluster-ip/sender-deployment.yaml index 5edd31a..797a437 100644 --- a/kubernetes/sender-deployment-cluster-ip/sender-deployment.yaml +++ b/kubernetes/sender-deployment-cluster-ip/sender-deployment.yaml @@ -18,6 +18,13 @@ spec: - name: event-triangle-sender-api image: kaminome/sender-service:latest imagePullPolicy: Always + resources: + requests: + cpu: 100m + memory: 128Mi + limits: + cpu: 500m + memory: 512Mi ports: - containerPort: 80 - containerPort: 81 From 56d6a5d63d436a49d60fea376ffede6853324022 Mon Sep 17 00:00:00 2001 From: kolosovpetro Date: Thu, 6 Mar 2025 20:50:31 +0100 Subject: [PATCH 4/6] replicas count up --- kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml | 7 ++++++- .../consumer-deployment.yaml | 7 ++++++- .../sender-deployment-cluster-ip/sender-deployment.yaml | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml b/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml index 8553186..613d75a 100644 --- a/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml +++ b/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml @@ -8,7 +8,12 @@ spec: selector: matchLabels: app: event-triangle-auth-api - replicas: 1 + replicas: 3 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 # Create at most 1 extra pod during update + maxUnavailable: 1 # At most 1 pod can be unavailable template: metadata: labels: diff --git a/kubernetes/consumer-deployment-cluster-ip/consumer-deployment.yaml b/kubernetes/consumer-deployment-cluster-ip/consumer-deployment.yaml index 1635332..e70a0e0 100644 --- a/kubernetes/consumer-deployment-cluster-ip/consumer-deployment.yaml +++ b/kubernetes/consumer-deployment-cluster-ip/consumer-deployment.yaml @@ -8,7 +8,12 @@ spec: selector: matchLabels: app: event-triangle-consumer-api - replicas: 1 + replicas: 3 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 # Create at most 1 extra pod during update + maxUnavailable: 1 # At most 1 pod can be unavailable template: metadata: labels: diff --git a/kubernetes/sender-deployment-cluster-ip/sender-deployment.yaml b/kubernetes/sender-deployment-cluster-ip/sender-deployment.yaml index 797a437..3f7c17e 100644 --- a/kubernetes/sender-deployment-cluster-ip/sender-deployment.yaml +++ b/kubernetes/sender-deployment-cluster-ip/sender-deployment.yaml @@ -8,7 +8,12 @@ spec: selector: matchLabels: app: event-triangle-sender-api - replicas: 1 + replicas: 3 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 # Create at most 1 extra pod during update + maxUnavailable: 1 # At most 1 pod can be unavailable template: metadata: labels: From 028343f3dd855e43fc520f343ce88a552e9a3a9a Mon Sep 17 00:00:00 2001 From: kolosovpetro Date: Thu, 6 Mar 2025 21:49:56 +0100 Subject: [PATCH 5/6] auth replica count --- kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml b/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml index 613d75a..f5e595a 100644 --- a/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml +++ b/kubernetes/auth-deployment-cluster-ip/auth-deployment.yaml @@ -8,7 +8,7 @@ spec: selector: matchLabels: app: event-triangle-auth-api - replicas: 3 + replicas: 1 strategy: type: RollingUpdate rollingUpdate: From 07030bc34838c438df8bc96a2942b71e1f8d971e Mon Sep 17 00:00:00 2001 From: kolosovpetro Date: Thu, 6 Mar 2025 21:50:59 +0100 Subject: [PATCH 6/6] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd30129..d983bb9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,3 +30,4 @@ and this project adheres to [Semantic Versioning v2.0.0](https://semver.org/spec - Configure ingress for Prometheus Grafana Alert manager - Fix encoding - Merge plan and plan-destroy terraform pipelines +- Configure HPA for services