🔎 Add AMP workspace (only)

This commit is contained in:
Rodrigue Koffi
2022-07-27 18:26:02 +02:00
parent b6c0d65455
commit c7a5b2c9e9
8 changed files with 87 additions and 14 deletions
+2 -1
View File
@@ -93,4 +93,5 @@ No outputs.
1. fetching EKS auth as config map? and pass to module (version, etc) as object? 1. fetching EKS auth as config map? and pass to module (version, etc) as object?
2. automatically pass config option as objects? (aws adot add-on: enable cert-manager, cert-manager version?) 2. automatically pass config option as objects? (aws adot add-on: enable cert-manager, cert-manager version?)
3. Test case for every option possible? 3. Test case for every option possible?
4. Need data source for AMP - https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/prometheus_workspace, Bryant's module doesn't seem to support splitting usage (eg. using multiple alerting rules ONLY)
+9
View File
@@ -11,3 +11,12 @@ output "aws_region" {
output "eks_cluster_version" { output "eks_cluster_version" {
value = module.eks_observability_accelerator.eks_cluster_version value = module.eks_observability_accelerator.eks_cluster_version
} }
output "prometheus_endpoint" {
value = module.eks_observability_accelerator.prometheus_endpoint
}
output "prometheus_id" {
value = module.eks_observability_accelerator.prometheus_id
}
+2 -4
View File
@@ -17,10 +17,8 @@ module "eks_observability_accelerator" {
# enable_open_telemetry_operator = true # enable_open_telemetry_operator = true
# open_telemetry_operator_config = map() // custom config # open_telemetry_operator_config = map() // custom config
# # deploy selected workloads by count indexing # creates a new AMP workspace, defaults to true
create_managed_prometheus_workspace = true
# # this creates a new AMP workspace
# create_managed_prometheus_workspace = true
# enable_haproxy = true # enable_haproxy = true
# haproxy_config = { # haproxy_config = {
+2 -3
View File
@@ -9,9 +9,6 @@ data "aws_eks_cluster" "eks_cluster" {
} }
locals { locals {
# eks_oidc_issuer_url = var.eks_oidc_provider != null ? var.eks_oidc_provider : replace(data.aws_eks_cluster.eks_cluster.identity[0].oidc[0].issuer, "https://", "")
# eks_cluster_endpoint = var.eks_cluster_endpoint != null ? var.eks_cluster_endpoint : data.aws_eks_cluster.eks_cluster.endpoint
# eks_cluster_version = var.eks_cluster_version != null ? var.eks_cluster_version : data.aws_eks_cluster.eks_cluster.version
eks_oidc_issuer_url = replace(data.aws_eks_cluster.eks_cluster.identity[0].oidc[0].issuer, "https://", "") eks_oidc_issuer_url = replace(data.aws_eks_cluster.eks_cluster.identity[0].oidc[0].issuer, "https://", "")
eks_cluster_endpoint = data.aws_eks_cluster.eks_cluster.endpoint eks_cluster_endpoint = data.aws_eks_cluster.eks_cluster.endpoint
eks_cluster_version = data.aws_eks_cluster.eks_cluster.version eks_cluster_version = data.aws_eks_cluster.eks_cluster.version
@@ -29,4 +26,6 @@ locals {
irsa_iam_role_path = var.irsa_iam_role_path irsa_iam_role_path = var.irsa_iam_role_path
irsa_iam_permissions_boundary = var.irsa_iam_permissions_boundary irsa_iam_permissions_boundary = var.irsa_iam_permissions_boundary
} }
name = "aws-observability-accelerator"
} }
+25 -5
View File
@@ -3,19 +3,39 @@
# VPC and supporting resources # VPC and supporting resources
# EKS and Managed node groups # EKS and Managed node groups
# # locals {
//* # # if both adot and otel are enabled, just deploys adot
module "adot_operator" { # enable_otel = (var.enable_amazon_eks_adot && var.enable_opentelemetry_operator) ? false : var.enable_opentelemetry_operator
# # if both adot and otel are disabled, just deploys adot
# enable_adot = (!var.enable_amazon_eks_adot && !var.enable_opentelemetry_operator) ? true : var.enable_amazon_eks_adot
# #possible side effects? maybe customer wants only dashboards?
# }
module "operator" {
source = "./modules/core/opentelemetry-operator" source = "./modules/core/opentelemetry-operator"
count = var.enable_amazon_eks_adot ? 1 : 0
enable_cert_manager = var.enable_cert_manager enable_cert_manager = var.enable_cert_manager
enable_amazon_eks_adot = var.enable_amazon_eks_adot
enable_opentelemetry_operator = var.enable_opentelemetry_operator
kubernetes_version = local.eks_cluster_version kubernetes_version = local.eks_cluster_version
addon_context = local.context addon_context = local.context
} }
//*/
module "java" { module "java" {
source = "./modules/workloads/java" source = "./modules/workloads/java"
amp_endpoint = var.create_managed_prometheus_workspace ? aws_prometheus_workspace.this[0].prometheus_endpoint : var.managed_prometheus_endpoint
amp_id = var.create_managed_prometheus_workspace ? aws_prometheus_workspace.this[0].id : var.managed_prometheus_id
}
resource "aws_prometheus_workspace" "this" {
count = var.create_managed_prometheus_workspace ? 1 : 0
alias = local.name
tags = var.tags
} }
+16
View File
@@ -0,0 +1,16 @@
variable "java" {
default = {
a = ""
b = ""
}
}
variable "amp_endpoint" {
description = "Managed Prometheus endpoint"
type = string
}
variable "amp_id" {
description = "Managed Prometheus workspace id"
type = string
}
+8 -1
View File
@@ -8,7 +8,14 @@ output "aws_region" {
value = var.aws_region value = var.aws_region
} }
output "eks_cluster_version" { output "eks_cluster_version" {
value = data.aws_eks_cluster.eks_cluster.version value = data.aws_eks_cluster.eks_cluster.version
} }
output "prometheus_endpoint" {
value = [aws_prometheus_workspace.this.*.prometheus_endpoint]
}
output "prometheus_id" {
value = [aws_prometheus_workspace.this.*.id]
}
+23
View File
@@ -39,6 +39,29 @@ variable "enable_cert_manager" {
default = true default = true
} }
variable "enable_opentelemetry_operator" {
type = bool
default = false
}
variable "create_managed_prometheus_workspace" {
type = bool
default = true
}
variable "managed_prometheus_id" {
description = "AWS Managed Prometheus Workspace ID"
type = string
default = ""
}
variable "managed_prometheus_endpoint" {
description = "AWS Managed Prometheus Workspace endpoint"
type = string
default = ""
}
variable "tags" { variable "tags" {
description = "Additional tags (e.g. `map('BusinessUnit`,`XYZ`)" description = "Additional tags (e.g. `map('BusinessUnit`,`XYZ`)"
type = map(string) type = map(string)