mirror of
https://github.com/storytold/terraform-aws-observability-accelerator.git
synced 2026-10-09 00:09:43 +00:00
Split core and workloads modules
This commit is contained in:
@@ -1,24 +0,0 @@
|
|||||||
#---------------------------------------------------------------
|
|
||||||
# EKS Blueprints
|
|
||||||
#---------------------------------------------------------------
|
|
||||||
|
|
||||||
module "eks_blueprints" {
|
|
||||||
source = "../../.."
|
|
||||||
|
|
||||||
cluster_name = local.name
|
|
||||||
cluster_version = "1.22"
|
|
||||||
|
|
||||||
vpc_id = module.vpc.vpc_id
|
|
||||||
private_subnet_ids = module.vpc.private_subnets
|
|
||||||
|
|
||||||
managed_node_groups = {
|
|
||||||
t3_l = {
|
|
||||||
node_group_name = "managed-ondemand"
|
|
||||||
instance_types = ["t3.large"]
|
|
||||||
min_size = 2
|
|
||||||
subnet_ids = module.vpc.private_subnets
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tags = local.tags
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
provider "aws" {
|
||||||
|
region = local.region
|
||||||
|
}
|
||||||
|
|
||||||
|
data "aws_eks_cluster_auth" "this" {
|
||||||
|
name = var.eks_cluster_id
|
||||||
|
}
|
||||||
|
|
||||||
|
data "aws_eks_cluster" "this" {
|
||||||
|
name = var.eks_cluster_id
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "kubernetes" {
|
||||||
|
host = local.eks_cluster_endpoint
|
||||||
|
cluster_ca_certificate = base64decode(data.aws_eks_cluster.this.certificate_authority[0].data)
|
||||||
|
token = data.aws_eks_cluster_auth.this.token
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "helm" {
|
||||||
|
kubernetes {
|
||||||
|
host = local.eks_cluster_endpoint
|
||||||
|
cluster_ca_certificate = base64decode(data.aws_eks_cluster.this.certificate_authority[0].data)
|
||||||
|
token = data.aws_eks_cluster_auth.this.token
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
grafana = {
|
||||||
|
source = "grafana/grafana"
|
||||||
|
version = "1.24.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
name = basename(path.cwd)
|
||||||
|
region = var.aws_region
|
||||||
|
|
||||||
|
eks_oidc_issuer_url = replace(data.aws_eks_cluster.this.identity[0].oidc[0].issuer, "https://", "")
|
||||||
|
eks_cluster_endpoint = data.aws_eks_cluster.this.endpoint
|
||||||
|
eks_cluster_version = data.aws_eks_cluster.this.version
|
||||||
|
|
||||||
|
tags = {
|
||||||
|
Source = "github.com/aws-ia/terraform-aws-observability-accelerator"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# deploys the base module
|
||||||
|
module "eks_observability_accelerator" {
|
||||||
|
# source = "aws-ia/terrarom-aws-observability-accelerator?ref=dev"
|
||||||
|
source = "../../"
|
||||||
|
|
||||||
|
aws_region = var.aws_region
|
||||||
|
eks_cluster_id = var.eks_cluster_id
|
||||||
|
|
||||||
|
# deploys AWS Distro for OpenTelemetry operator into the cluster
|
||||||
|
enable_amazon_eks_adot = true
|
||||||
|
|
||||||
|
# reusing existing certificate manager? defaults to true
|
||||||
|
enable_cert_manager = true
|
||||||
|
|
||||||
|
# # -- or enable opentelemetry operator
|
||||||
|
enable_opentelemetry_operator = false
|
||||||
|
#open_telemetry_operator_config = map() // custom config
|
||||||
|
|
||||||
|
# creates a new AMP workspace, defaults to true
|
||||||
|
enable_managed_prometheus = false
|
||||||
|
|
||||||
|
# reusing existing AMP -- needs data source for alerting rules
|
||||||
|
managed_prometheus_id = var.managed_prometheus_workspace_id
|
||||||
|
managed_prometheus_region = null # defaults to the current region, useful for cross region scenarios (same account)
|
||||||
|
|
||||||
|
# sets up the AMP alert manager at the workspace level
|
||||||
|
enable_alertmanager = true
|
||||||
|
|
||||||
|
# create a new Grafana workspace - TODO review design
|
||||||
|
enable_managed_grafana = false
|
||||||
|
managed_grafana_workspace_id = var.managed_grafana_workspace_id
|
||||||
|
grafana_api_key = var.grafana_api_key
|
||||||
|
|
||||||
|
tags = local.tags
|
||||||
|
}
|
||||||
|
|
||||||
|
module "workloads_infra" {
|
||||||
|
source = "../../workloads/infra"
|
||||||
|
# source = "aws-ia/terrarom-aws-observability-accelerator/workloads/infra?ref=dev"
|
||||||
|
|
||||||
|
|
||||||
|
enable_infra_metrics = true
|
||||||
|
# infra_metrics_config = {}
|
||||||
|
}
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
provider "aws" {
|
|
||||||
region = local.region
|
|
||||||
}
|
|
||||||
|
|
||||||
data "aws_eks_cluster_auth" "this" {
|
|
||||||
name = var.eks_cluster_id
|
|
||||||
}
|
|
||||||
|
|
||||||
data "aws_eks_cluster" "this" {
|
|
||||||
name = var.eks_cluster_id
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "kubernetes" {
|
|
||||||
host = local.eks_cluster_endpoint
|
|
||||||
cluster_ca_certificate = base64decode(data.aws_eks_cluster.this.certificate_authority[0].data)
|
|
||||||
token = data.aws_eks_cluster_auth.this.token
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "helm" {
|
|
||||||
kubernetes {
|
|
||||||
host = local.eks_cluster_endpoint
|
|
||||||
cluster_ca_certificate = base64decode(data.aws_eks_cluster.this.certificate_authority[0].data)
|
|
||||||
token = data.aws_eks_cluster_auth.this.token
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
terraform {
|
|
||||||
required_providers {
|
|
||||||
grafana = {
|
|
||||||
source = "grafana/grafana"
|
|
||||||
version = "1.24.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
locals {
|
|
||||||
name = basename(path.cwd)
|
|
||||||
region = var.aws_region
|
|
||||||
|
|
||||||
eks_oidc_issuer_url = replace(data.aws_eks_cluster.this.identity[0].oidc[0].issuer, "https://", "")
|
|
||||||
eks_cluster_endpoint = data.aws_eks_cluster.this.endpoint
|
|
||||||
eks_cluster_version = data.aws_eks_cluster.this.version
|
|
||||||
|
|
||||||
tags = {
|
|
||||||
Source = "github.com/aws-ia/terraform-aws-observability-accelerator"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
module "vpc" {
|
|
||||||
source = "terraform-aws-modules/vpc/aws"
|
|
||||||
version = "~> 3.0"
|
|
||||||
|
|
||||||
name = local.name
|
|
||||||
cidr = local.vpc_cidr
|
|
||||||
|
|
||||||
azs = local.azs
|
|
||||||
public_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k)]
|
|
||||||
private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 10)]
|
|
||||||
|
|
||||||
enable_nat_gateway = true
|
|
||||||
single_nat_gateway = true
|
|
||||||
enable_dns_hostnames = true
|
|
||||||
|
|
||||||
# Manage so we can name
|
|
||||||
manage_default_network_acl = true
|
|
||||||
default_network_acl_tags = { Name = "${local.name}-default" }
|
|
||||||
manage_default_route_table = true
|
|
||||||
default_route_table_tags = { Name = "${local.name}-default" }
|
|
||||||
manage_default_security_group = true
|
|
||||||
default_security_group_tags = { Name = "${local.name}-default" }
|
|
||||||
|
|
||||||
public_subnet_tags = {
|
|
||||||
"kubernetes.io/cluster/${local.name}" = "shared"
|
|
||||||
"kubernetes.io/role/elb" = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
private_subnet_tags = {
|
|
||||||
"kubernetes.io/cluster/${local.name}" = "shared"
|
|
||||||
"kubernetes.io/role/internal-elb" = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
tags = local.tags
|
|
||||||
}
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
module "eks_observability_accelerator" {
|
|
||||||
#source = "aws-ia/terrarom-aws-observability-accelerator"
|
|
||||||
source = "../"
|
|
||||||
|
|
||||||
aws_region = var.aws_region
|
|
||||||
eks_cluster_id = var.eks_cluster_id
|
|
||||||
|
|
||||||
# deploys AWS Distro for OpenTelemetry operator into the cluster
|
|
||||||
enable_amazon_eks_adot = true
|
|
||||||
|
|
||||||
# reusing existing certificate manager? defaults to true
|
|
||||||
enable_cert_manager = true
|
|
||||||
|
|
||||||
# # -- or enable opentelemetry operator
|
|
||||||
enable_opentelemetry_operator = false
|
|
||||||
#open_telemetry_operator_config = map() // custom config
|
|
||||||
|
|
||||||
# creates a new AMP workspace, defaults to true
|
|
||||||
enable_managed_prometheus = false
|
|
||||||
|
|
||||||
# reusing existing AMP -- needs data source for alerting rules
|
|
||||||
managed_prometheus_id = var.managed_prometheus_workspace_id
|
|
||||||
managed_prometheus_region = null # defaults to the current region, useful for cross region scenarios (same account)
|
|
||||||
|
|
||||||
# sets up the AMP alert manager at the workspace level
|
|
||||||
enable_alertmanager = true
|
|
||||||
|
|
||||||
# create a new Grafana workspace - TODO review design
|
|
||||||
enable_managed_grafana = false
|
|
||||||
managed_grafana_workspace_id = var.managed_grafana_workspace_id
|
|
||||||
grafana_api_key = var.grafana_api_key
|
|
||||||
|
|
||||||
# enable workload-specific collector, metrics, alerts and dashboards
|
|
||||||
enable_java = false
|
|
||||||
enable_java_recording_rules = false
|
|
||||||
|
|
||||||
# enable_haproxy = true
|
|
||||||
# haproxy_config = {
|
|
||||||
# amp_endpoint = module / amp.endpoint
|
|
||||||
# grafana_endpoint = module.grafana.endpoint
|
|
||||||
# }
|
|
||||||
|
|
||||||
enable_infra_metrics = true
|
|
||||||
# infra_metrics_config = {}
|
|
||||||
|
|
||||||
tags = local.tags
|
|
||||||
}
|
|
||||||
# module "amp" {
|
|
||||||
|
|
||||||
# }
|
|
||||||
|
|
||||||
# module "grafana" {
|
|
||||||
|
|
||||||
# }
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
module "operator" {
|
module "operator" {
|
||||||
source = "./modules/core/opentelemetry-operator"
|
source = "./modules/opentelemetry-operator"
|
||||||
|
|
||||||
enable_cert_manager = var.enable_cert_manager
|
enable_cert_manager = var.enable_cert_manager
|
||||||
|
|
||||||
@@ -17,7 +17,6 @@ resource "aws_prometheus_workspace" "this" {
|
|||||||
tags = var.tags
|
tags = var.tags
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
resource "aws_prometheus_alert_manager_definition" "this" {
|
resource "aws_prometheus_alert_manager_definition" "this" {
|
||||||
count = var.enable_alertmanager ? 1 : 0
|
count = var.enable_alertmanager ? 1 : 0
|
||||||
|
|
||||||
@@ -65,46 +64,45 @@ resource "grafana_data_source" "amp" {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# dashboards
|
# dashboards
|
||||||
resource "grafana_folder" "this" {
|
resource "grafana_folder" "this" {
|
||||||
title = "Observability Accelerator Dashboards"
|
title = "Observability Accelerator Dashboards"
|
||||||
}
|
}
|
||||||
|
|
||||||
module "java" {
|
# module "java" {
|
||||||
count = var.enable_java ? 1 : 0
|
# count = var.enable_java ? 1 : 0
|
||||||
source = "./modules/workloads/java"
|
# source = "./modules/workloads/java"
|
||||||
|
|
||||||
addon_context = local.context
|
# addon_context = local.context
|
||||||
|
|
||||||
amp_endpoint = local.amp_ws_endpoint
|
# amp_endpoint = local.amp_ws_endpoint
|
||||||
amp_id = local.amp_ws_id
|
# amp_id = local.amp_ws_id
|
||||||
amp_region = local.amp_ws_region
|
# amp_region = local.amp_ws_region
|
||||||
|
|
||||||
enable_recording_rules = var.enable_java_recording_rules
|
# enable_recording_rules = var.enable_java_recording_rules
|
||||||
|
|
||||||
dashboards_folder_id = grafana_folder.this.id
|
# dashboards_folder_id = grafana_folder.this.id
|
||||||
|
|
||||||
depends_on = [
|
# depends_on = [
|
||||||
module.operator
|
# module.operator
|
||||||
]
|
# ]
|
||||||
}
|
# }
|
||||||
|
|
||||||
module "infra" {
|
# module "infra" {
|
||||||
count = var.enable_infra_metrics ? 1 : 0
|
# count = var.enable_infra_metrics ? 1 : 0
|
||||||
source = "./modules/workloads/kube-prometheus"
|
# source = "./modules/workloads/kube-prometheus"
|
||||||
|
|
||||||
addon_context = local.context
|
# addon_context = local.context
|
||||||
|
|
||||||
amp_endpoint = local.amp_ws_endpoint
|
# amp_endpoint = local.amp_ws_endpoint
|
||||||
amp_id = local.amp_ws_id
|
# amp_id = local.amp_ws_id
|
||||||
amp_region = local.amp_ws_region
|
# amp_region = local.amp_ws_region
|
||||||
config = var.infra_metrics_config
|
# config = var.infra_metrics_config
|
||||||
|
|
||||||
dashboards_folder_id = grafana_folder.this.id
|
# dashboards_folder_id = grafana_folder.this.id
|
||||||
|
|
||||||
depends_on = [
|
# depends_on = [
|
||||||
module.operator
|
# module.operator
|
||||||
]
|
# ]
|
||||||
|
|
||||||
}
|
# }
|
||||||
|
|||||||
Reference in New Issue
Block a user