From b341335c292a50123dc3ae0190a193f5a7229f8b Mon Sep 17 00:00:00 2001 From: mcgin314 Date: Tue, 23 Jul 2024 14:44:31 -0400 Subject: [PATCH 1/5] Upgrade to latest versions --- variables.tf | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/variables.tf b/variables.tf index b3a8ffe..37bba80 100644 --- a/variables.tf +++ b/variables.tf @@ -26,21 +26,21 @@ variable "create_namespace" { variable "prometheus_chart_version" { description = "The version of prometheus to install into the cluster." type = string - default = "24.3.0" + default = "25.24.1" } # The `APP VERSION` of the output found while determining the chart version variable "prometheus_server_tag" { description = "The image tag of prometheus server to install into the cluster." type = string - default = "v2.46.0" + default = "v2.53.1" } # helm show values prometheus-community/prometheus | less variable "prometheus_config_reloader_tag" { description = "The image tag of the prometheus-config-reloader image." type = string - default = "v0.67.0" + default = "v0.75.1" } # The `APP VERSION` of the output: @@ -48,7 +48,7 @@ variable "prometheus_config_reloader_tag" { variable "alertmanager_tag" { description = "The image tag of the alertmanager image." type = string - default = "v0.26.0" + default = "v0.27.0" } # The `APP VERSION` of the output: @@ -56,7 +56,7 @@ variable "alertmanager_tag" { variable "kube_state_metrics_tag" { description = "The image tag of the kube-state-metrics image." type = string - default = "v2.6.0" + default = "v2.13.0" } # The `APP VERSION` of the output: @@ -64,7 +64,7 @@ variable "kube_state_metrics_tag" { variable "node_exporter_tag" { description = "The image tag of the node-exporter image." type = string - default = "v1.8.1" + default = "v1.8.2" } # The `APP VERSION` of the output: @@ -72,7 +72,7 @@ variable "node_exporter_tag" { variable "pushgateway_tag" { description = "The image tag of the pushgateway image." type = string - default = "v1.6.0" + default = "v1.9.0" } variable "rwo_storage_class" { From e40b99f11db5d46011c20dd6288d28cb02198939 Mon Sep 17 00:00:00 2001 From: mcgin314 Date: Tue, 23 Jul 2024 14:45:05 -0400 Subject: [PATCH 2/5] Created simple example for local testing/validation --- examples/simple/main.tf | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 examples/simple/main.tf diff --git a/examples/simple/main.tf b/examples/simple/main.tf new file mode 100644 index 0000000..74dcec8 --- /dev/null +++ b/examples/simple/main.tf @@ -0,0 +1,58 @@ +provider "aws" { + profile = local.profile + region = local.region +} + +provider "helm" { + kubernetes { + host = data.aws_eks_cluster.cluster.endpoint + + cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority[0].data) + token = data.aws_eks_cluster_auth.cluster.token + } +} + +provider "kubernetes" { + host = data.aws_eks_cluster.cluster.endpoint + + cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority[0].data) + token = data.aws_eks_cluster_auth.cluster.token +} + +data "aws_eks_cluster" "cluster" { + name = local.cluster_name +} + +data "aws_eks_cluster_auth" "cluster" { + name = local.cluster_name +} + +locals { + region = "us-gov-east-1" + profile = "terraform" + cluster_name = "platform-test-1" + namespace = "prometheus" + create_namespace = "true" + +# tags = { +# project_number = "fs0000000078" +# project_name = "csvd_platformbaseline" +# project_role = "csvd_platformbaseline_app" +# organization = "census:ocio:csvd" +# created_by = "luther.coleman.mcginty@census.gov" +# created_for = "luther.coleman.mcginty@census.gov" +# created_reason = "Testing eks module operation" +# Terraform = "true" +# Terragrunt = "true" +# test_adjustment = "testing adding tags" +# } +} + +module "prometheus" { + source = "../.." + + profile = local.profile + cluster_name = local.cluster_name + namespace = local.namespace + create_namespace = local.create_namespace +} \ No newline at end of file From 322083bab7d194ad66475cfb49704993c60ed955 Mon Sep 17 00:00:00 2001 From: mcgin314 Date: Tue, 23 Jul 2024 14:45:32 -0400 Subject: [PATCH 3/5] Strate documentation in README --- README.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/README.md b/README.md index 7238472..9ef021b 100644 --- a/README.md +++ b/README.md @@ -1 +1,68 @@ # tfmod-prometheus + +Prometheus is an open source monitoring and alerting tool designed for dynamic cloud systems and especially well suited for monitoring microservice architectures. Prometheus collects and stores metrics as time series data. Metrics are a key means in understanding an applications behavior and a critical facet of operations support. Collectively, "it collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts if some condition is observed to be true." - [prometheus.io](https://prometheus.io/) + +This modules uses Helm to deploy Prometheus to a cluster using the official chart. By default this will install dependent charts/components: +- [alertmanager](https://github.com/prometheus-community/helm-charts/tree/main/charts/alertmanager) +- [kube-state-metrics](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-state-metrics) +- [prometheus-node-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-node-exporter) +- [prometheus-pushgateway](https://github.com/walker-tom/helm-charts/tree/main/charts/prometheus-pushgateway) + + +## Requirements + +| Name | Version | +|------|---------| +| [terraform](#requirement\_terraform) | >= 0.13 | +| [aws](#requirement\_aws) | >= 5.14.0 | +| [helm](#requirement\_helm) | >= 2.11.0 | +| [kubernetes](#requirement\_kubernetes) | >= 2.23.0 | +| [null](#requirement\_null) | >= 3.2.1 | + +## Providers + +| Name | Version | +|------|---------| +| [helm](#provider\_helm) | >= 2.11.0 | +| [kubernetes](#provider\_kubernetes) | >= 2.23.0 | + +## Modules + +| Name | Source | Version | +|------|--------|---------| +| [images](#module\_images) | git@github.e.it.census.gov:terraform-modules/aws-ecr-copy-images.git/ | 2.0.2 | + +## Resources + +| Name | Type | +|------|------| +| [helm_release.prometheus](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource | +| [kubernetes_namespace.ns](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace) | resource | +| [kubernetes_namespace.existing-ns](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/data-sources/namespace) | data source | + +## Inputs + +| Name | Description | Type | Default | Required | +|------|-------------|------|---------|:--------:| +| [alertmanager\_tag](#input\_alertmanager\_tag) | The image tag of the alertmanager image. | `string` | `"v0.27.0"` | no | +| [cluster\_name](#input\_cluster\_name) | The name of the cluster into which prometheus will be installed. | `string` | n/a | yes | +| [create\_namespace](#input\_create\_namespace) | Indicates whether the `namespace` needs to be created ('true') or already exists (not `true`) | `bool` | `true` | no | +| [kube\_state\_metrics\_tag](#input\_kube\_state\_metrics\_tag) | The image tag of the kube-state-metrics image. | `string` | `"v2.13.0"` | no | +| [namespace](#input\_namespace) | The namespace to install the prometheus components. Defaults to 'prometheus' | `string` | `"prometheus"` | no | +| [node\_exporter\_tag](#input\_node\_exporter\_tag) | The image tag of the node-exporter image. | `string` | `"v1.8.2"` | no | +| [profile](#input\_profile) | AWS\_PROFILE to use to apply the terraform script. | `string` | `""` | no | +| [prometheus\_chart\_version](#input\_prometheus\_chart\_version) | The version of prometheus to install into the cluster. | `string` | `"25.24.1"` | no | +| [prometheus\_config\_reloader\_tag](#input\_prometheus\_config\_reloader\_tag) | The image tag of the prometheus-config-reloader image. | `string` | `"v0.75.1"` | no | +| [prometheus\_server\_tag](#input\_prometheus\_server\_tag) | The image tag of prometheus server to install into the cluster. | `string` | `"v2.53.1"` | no | +| [pushgateway\_tag](#input\_pushgateway\_tag) | The image tag of the pushgateway image. | `string` | `"v1.9.0"` | no | +| [rwo\_storage\_class](#input\_rwo\_storage\_class) | Specify the storage class for read/write/once persistent volumes. | `string` | `"gp3-encrypted"` | no | + +## Outputs + +| Name | Description | +|------|-------------| +| [alertmanager\_headless\_internal\_endpoint](#output\_alertmanager\_headless\_internal\_endpoint) | n/a | +| [alertmanager\_internal\_endpoint](#output\_alertmanager\_internal\_endpoint) | n/a | +| [prometheus\_server\_internal\_endpoint](#output\_prometheus\_server\_internal\_endpoint) | n/a | +| [pushgateway\_internal\_endpoint](#output\_pushgateway\_internal\_endpoint) | n/a | + \ No newline at end of file From 127f9e8d335f55fddb6068fa3062565ddcf70ac9 Mon Sep 17 00:00:00 2001 From: mcgin314 Date: Tue, 23 Jul 2024 14:52:13 -0400 Subject: [PATCH 4/5] Terraform fmt, should be a hook --- examples/simple/main.tf | 24 ++++++++++++------------ main.tf | 16 ++++++++-------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/simple/main.tf b/examples/simple/main.tf index 74dcec8..b2ed1d7 100644 --- a/examples/simple/main.tf +++ b/examples/simple/main.tf @@ -34,18 +34,18 @@ locals { namespace = "prometheus" create_namespace = "true" -# tags = { -# project_number = "fs0000000078" -# project_name = "csvd_platformbaseline" -# project_role = "csvd_platformbaseline_app" -# organization = "census:ocio:csvd" -# created_by = "luther.coleman.mcginty@census.gov" -# created_for = "luther.coleman.mcginty@census.gov" -# created_reason = "Testing eks module operation" -# Terraform = "true" -# Terragrunt = "true" -# test_adjustment = "testing adding tags" -# } + # tags = { + # project_number = "fs0000000078" + # project_name = "csvd_platformbaseline" + # project_role = "csvd_platformbaseline_app" + # organization = "census:ocio:csvd" + # created_by = "luther.coleman.mcginty@census.gov" + # created_for = "luther.coleman.mcginty@census.gov" + # created_reason = "Testing eks module operation" + # Terraform = "true" + # Terragrunt = "true" + # test_adjustment = "testing adding tags" + # } } module "prometheus" { diff --git a/main.tf b/main.tf index c436ac3..f901ec8 100644 --- a/main.tf +++ b/main.tf @@ -49,7 +49,7 @@ resource "helm_release" "prometheus" { # Prometheus chart: set { - name = "configmapReload.prometheus.image.repository" + name = "configmapReload.prometheus.image.repository" value = split(":", module.images.images[local.prom_config_reload_key].dest_full_path)[0] } set { @@ -57,7 +57,7 @@ resource "helm_release" "prometheus" { value = split(":", module.images.images[local.prom_config_reload_key].dest_full_path)[1] } set { - name = "server.image.repository" + name = "server.image.repository" value = split(":", module.images.images[local.prom_key].dest_full_path)[0] } set { @@ -71,7 +71,7 @@ resource "helm_release" "prometheus" { # alertmanager subchart: set { - name = "alertmanager.image.repository" + name = "alertmanager.image.repository" value = split(":", module.images.images[local.alertman_key].dest_full_path)[0] } set { @@ -79,7 +79,7 @@ resource "helm_release" "prometheus" { value = module.images.images[local.alertman_key].tag } set { - name = "alertmanager.configmapReload.image.repository" + name = "alertmanager.configmapReload.image.repository" value = split(":", module.images.images[local.prom_config_reload_key].dest_full_path)[0] } set { @@ -93,11 +93,11 @@ resource "helm_release" "prometheus" { # kube-state-metrics subchart: set { - name = "kube-state-metrics.image.registry" + name = "kube-state-metrics.image.registry" value = module.images.images[local.ksm_key].dest_registry } set { - name = "kube-state-metrics.image.repository" + name = "kube-state-metrics.image.repository" value = module.images.images[local.ksm_key].dest_repository } set { @@ -112,7 +112,7 @@ resource "helm_release" "prometheus" { } set { name = "prometheus-node-exporter.image.repository" - value = module.images.images[local.node_exporter_key].dest_repository + value = module.images.images[local.node_exporter_key].dest_repository } set { name = "prometheus-node-exporter.image.tag" @@ -121,7 +121,7 @@ resource "helm_release" "prometheus" { # prometheus-pushgateway set { - name = "prometheus-pushgateway.image.repository" + name = "prometheus-pushgateway.image.repository" value = split(":", module.images.images[local.pushgateway_key].dest_full_path)[0] } set { From d5d7e55a35474be4091bbea9266e4f5a7f7875ed Mon Sep 17 00:00:00 2001 From: mcgin314 Date: Tue, 23 Jul 2024 14:52:31 -0400 Subject: [PATCH 5/5] Add changelog to README --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 9ef021b..bcea3cc 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,15 @@ This modules uses Helm to deploy Prometheus to a cluster using the official char - [prometheus-node-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-node-exporter) - [prometheus-pushgateway](https://github.com/walker-tom/helm-charts/tree/main/charts/prometheus-pushgateway) +Versions are module variables, but latest versions are intended to be be reflected in the default values. + +# CHANGELOG + +* 0.0.1 -- 2024-07-23 + - updated to latest versions for all components and helm chart (defined in default variables) + - created content in the README + - created changelog + ## Requirements