This commit is contained in:
Rodrigue Koffi
2022-08-30 19:59:34 +02:00
parent 837c60b585
commit 05511992e9
34 changed files with 144 additions and 229 deletions
@@ -59,7 +59,6 @@ If you don't specify anything a new workspace will be created for you.
5. Grafana API Key
<!-- TODO: Remove section when CP Grafana API keys is supported by Terraform -->
- Give admin access to the SSO user you set up when creating the Amazon Managed Grafana Workspace:
- In the AWS Console, navigate to Amazon Grafana. In the left navigation bar, click **All workspaces**, then click on the workspace name you are using for this example.
@@ -131,11 +130,11 @@ add this `managed_prometheus_region=xxx` and `managed_prometheus_workspace_id=ws
| <a name="input_aws_region"></a> [aws\_region](#input\_aws\_region) | AWS Region | `string` | n/a | yes |
| <a name="input_eks_cluster_id"></a> [eks\_cluster\_id](#input\_eks\_cluster\_id) | EKS Cluster Id | `string` | n/a | yes |
| <a name="input_grafana_api_key"></a> [grafana\_api\_key](#input\_grafana\_api\_key) | API key for authorizing the Grafana provider to make changes to Amazon Managed Grafana | `string` | `""` | no |
| <a name="input_grafana_endpoint"></a> [grafana\_endpoint](#input\_grafana\_endpoint) | Grafana endpoint | `string` | `null` | no |
| <a name="input_managed_grafana_workspace_id"></a> [managed\_grafana\_workspace\_id](#input\_managed\_grafana\_workspace\_id) | n/a | `string` | `""` | no |
| <a name="input_managed_prometheus_endpoint"></a> [managed\_prometheus\_endpoint](#input\_managed\_prometheus\_endpoint) | n/a | `string` | `""` | no |
| <a name="input_managed_prometheus_region"></a> [managed\_prometheus\_region](#input\_managed\_prometheus\_region) | n/a | `string` | `""` | no |
| <a name="input_managed_prometheus_workspace_id"></a> [managed\_prometheus\_workspace\_id](#input\_managed\_prometheus\_workspace\_id) | n/a | `string` | `""` | no |
| <a name="input_grafana_endpoint"></a> [grafana\_endpoint](#input\_grafana\_endpoint) | AMG endpoint | `string` | `null` | no |
| <a name="input_managed_grafana_workspace_id"></a> [managed\_grafana\_workspace\_id](#input\_managed\_grafana\_workspace\_id) | Amazon Managed Grafana (AMG) workspace ID | `string` | `""` | no |
| <a name="input_managed_prometheus_endpoint"></a> [managed\_prometheus\_endpoint](#input\_managed\_prometheus\_endpoint) | AMP workspace ID | `string` | `""` | no |
| <a name="input_managed_prometheus_region"></a> [managed\_prometheus\_region](#input\_managed\_prometheus\_region) | Region where AMP is deployed | `string` | `""` | no |
| <a name="input_managed_prometheus_workspace_id"></a> [managed\_prometheus\_workspace\_id](#input\_managed\_prometheus\_workspace\_id) | Amazon Managed Service for Prometheus (AMP) workspace ID | `string` | `""` | no |
## Outputs
@@ -81,11 +81,9 @@ module "eks_observability_accelerator" {
# https://www.terraform.io/language/modules/develop/providers
# A module intended to be called by one or more other modules must not contain
# any provider blocks.
# This allows forcing depedency between base and workloads module
# This allows forcing dependency between base and workloads module
provider "grafana" {
url = module.eks_observability_accelerator.managed_grafana_workspace_endpoint
# TODO: manage with Secrets manager
url = module.eks_observability_accelerator.managed_grafana_workspace_endpoint
auth = var.grafana_api_key
}
@@ -98,13 +96,10 @@ module "workloads_infra" {
dashboards_folder_id = module.eks_observability_accelerator.grafana_dashboards_folder_id
managed_prometheus_workspace_id = module.eks_observability_accelerator.managed_prometheus_workspace_id
# TODO remove when Kevin's PR is live
managed_prometheus_workspace_endpoint = module.eks_observability_accelerator.managed_prometheus_workspace_endpoint
managed_prometheus_workspace_region = module.eks_observability_accelerator.managed_prometheus_workspace_region
enable_alerting_rules = false
# module custom configuration, check module documentation
# config = {}
tags = local.tags
@@ -7,23 +7,27 @@ variable "aws_region" {
type = string
}
variable "managed_prometheus_workspace_id" {
type = string
default = ""
description = "Amazon Managed Service for Prometheus (AMP) workspace ID"
type = string
default = ""
}
variable "managed_prometheus_endpoint" {
type = string
default = ""
description = "AMP workspace ID"
type = string
default = ""
}
variable "managed_prometheus_region" {
type = string
default = ""
description = "Region where AMP is deployed"
type = string
default = ""
}
variable "managed_grafana_workspace_id" {
type = string
default = ""
description = "Amazon Managed Grafana (AMG) workspace ID"
type = string
default = ""
}
variable "grafana_endpoint" {
description = "Grafana endpoint"
description = "AMG endpoint"
type = string
default = null
}
-110
View File
@@ -1,110 +0,0 @@
provider "aws" {
region = local.region
}
provider "kubernetes" {
host = module.eks_blueprints.eks_cluster_endpoint
cluster_ca_certificate = base64decode(module.eks_blueprints.eks_cluster_certificate_authority_data)
token = data.aws_eks_cluster_auth.this.token
}
provider "helm" {
kubernetes {
host = module.eks_blueprints.eks_cluster_endpoint
cluster_ca_certificate = base64decode(module.eks_blueprints.eks_cluster_certificate_authority_data)
token = data.aws_eks_cluster_auth.this.token
}
}
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
}
module "eks_blueprints" {
source = "github.com/aws-ia/terraform-aws-eks-blueprints"
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
}
module "observability_accelerator" {
source = "../../"
aws_region = local.region
eks_cluster_id = module.eks_blueprints.eks_cluster_id
enable_alertmanager = true
enable_managed_grafana = false
managed_grafana_workspace_id = var.managed_grafana_workspace_id
managed_grafana_region = var.managed_grafana_region
grafana_api_key = var.grafana_api_key
tags = {
Source = "aws-observability-accelerator"
}
}
module "infra" {
source = "../../modules/workloads/infra"
dashboards_folder_id = module.observability_accelerator.dashboards_folder_id
eks_cluster_id = module.eks_blueprints.eks_cluster_id
enable_alerting_rules = false
managed_prometheus_workspace_id = module.observability_accelerator.managed_prometheus_workspace_id
managed_prometheus_workspace_region = module.observability_accelerator.managed_prometheus_workspace_region
tags = {
Source = "aws-observability-accelerator"
}
}