diff --git a/examples/existing-cluster-with-base-and-infra/README.md b/examples/existing-cluster-with-base-and-infra/README.md index e906b1b..ee3b976 100644 --- a/examples/existing-cluster-with-base-and-infra/README.md +++ b/examples/existing-cluster-with-base-and-infra/README.md @@ -38,7 +38,7 @@ terraform init To run this example, you need to provide your EKS cluster ID. If you don't have a cluster ready, visit [this example](../new-empty-eks-cluster) first to create a new one. -Add `eks_cluster_id=xxx` to your `terraform.tfvars` or use an +Create a `terraform.tfvars` file and add `eks_cluster_id=xxx` to your `terraform.tfvars` or environment variable `export TF_VAR_eks_cluster_id=xxx`. 3. Amazon Managed Service for Prometheus workspace @@ -75,7 +75,7 @@ If you don't specify anything a new workspace will be created for you. ## Deploy ```sh -terraform apply -var terraform.tfvars +terraform apply -var-file=terraform.tfvars ``` or if you had setup environment variables diff --git a/examples/new-cluster-with-base/main.tf b/examples/new-cluster-with-base/main.tf new file mode 100644 index 0000000..d566af4 --- /dev/null +++ b/examples/new-cluster-with-base/main.tf @@ -0,0 +1,110 @@ +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" + } +} +