Split core and workloads modules

This commit is contained in:
Rodrigue Koffi
2022-08-09 12:35:14 +02:00
parent cd827f6fb9
commit 5b5d5e7dd1
59 changed files with 119 additions and 191 deletions
-24
View File
@@ -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 = {}
}
-47
View File
@@ -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"
}
}
-35
View File
@@ -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
}
-56
View File
@@ -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" {
# }
+27 -29
View File
@@ -1,5 +1,5 @@
module "operator" {
source = "./modules/core/opentelemetry-operator"
source = "./modules/opentelemetry-operator"
enable_cert_manager = var.enable_cert_manager
@@ -17,7 +17,6 @@ resource "aws_prometheus_workspace" "this" {
tags = var.tags
}
resource "aws_prometheus_alert_manager_definition" "this" {
count = var.enable_alertmanager ? 1 : 0
@@ -65,46 +64,45 @@ resource "grafana_data_source" "amp" {
}
}
# dashboards
resource "grafana_folder" "this" {
title = "Observability Accelerator Dashboards"
}
module "java" {
count = var.enable_java ? 1 : 0
source = "./modules/workloads/java"
# module "java" {
# count = var.enable_java ? 1 : 0
# source = "./modules/workloads/java"
addon_context = local.context
# addon_context = local.context
amp_endpoint = local.amp_ws_endpoint
amp_id = local.amp_ws_id
amp_region = local.amp_ws_region
# amp_endpoint = local.amp_ws_endpoint
# amp_id = local.amp_ws_id
# 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 = [
module.operator
]
}
# depends_on = [
# module.operator
# ]
# }
module "infra" {
count = var.enable_infra_metrics ? 1 : 0
source = "./modules/workloads/kube-prometheus"
# module "infra" {
# count = var.enable_infra_metrics ? 1 : 0
# source = "./modules/workloads/kube-prometheus"
addon_context = local.context
# addon_context = local.context
amp_endpoint = local.amp_ws_endpoint
amp_id = local.amp_ws_id
amp_region = local.amp_ws_region
config = var.infra_metrics_config
# amp_endpoint = local.amp_ws_endpoint
# amp_id = local.amp_ws_id
# amp_region = local.amp_ws_region
# config = var.infra_metrics_config
dashboards_folder_id = grafana_folder.this.id
# dashboards_folder_id = grafana_folder.this.id
depends_on = [
module.operator
]
# depends_on = [
# module.operator
# ]
}
# }