mirror of
https://github.com/storytold/terraform-aws-observability-accelerator.git
synced 2026-10-09 00:09:43 +00:00
6f973b95f9
* Bump eks blueprint version * Default EKS cluster version to 1.25 * fixup! Bump eks blueprint version * Pre-commit docs
120 lines
3.6 KiB
Terraform
120 lines
3.6 KiB
Terraform
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
|
|
}
|
|
}
|
|
|
|
data "aws_eks_cluster_auth" "this" {
|
|
name = module.eks_blueprints.eks_cluster_id
|
|
}
|
|
|
|
data "aws_availability_zones" "available" {}
|
|
|
|
locals {
|
|
name = basename(path.cwd)
|
|
cluster_name = coalesce(var.cluster_name, local.name)
|
|
region = var.aws_region
|
|
|
|
vpc_cidr = "10.0.0.0/16"
|
|
azs = slice(data.aws_availability_zones.available.names, 0, 3)
|
|
|
|
tags = {
|
|
Blueprint = local.name
|
|
GithubRepo = "github.com/aws-observability/terraform-aws-observability-accelerator"
|
|
}
|
|
}
|
|
|
|
#---------------------------------------------------------------
|
|
# EKS Blueprints
|
|
#---------------------------------------------------------------
|
|
|
|
module "eks_blueprints" {
|
|
source = "github.com/aws-ia/terraform-aws-eks-blueprints?ref=v4.32.1"
|
|
|
|
cluster_name = local.cluster_name
|
|
cluster_version = var.eks_version
|
|
|
|
vpc_id = module.vpc.vpc_id
|
|
private_subnet_ids = module.vpc.private_subnets
|
|
|
|
managed_node_groups = {
|
|
mg_5 = {
|
|
node_group_name = "managed-ondemand"
|
|
instance_types = [var.managed_node_instance_type]
|
|
min_size = var.managed_node_min_size
|
|
subnet_ids = module.vpc.private_subnets
|
|
}
|
|
}
|
|
|
|
tags = local.tags
|
|
}
|
|
|
|
module "eks_blueprints_kubernetes_addons" {
|
|
source = "github.com/aws-ia/terraform-aws-eks-blueprints//modules/kubernetes-addons?ref=v4.32.1"
|
|
|
|
eks_cluster_id = module.eks_blueprints.eks_cluster_id
|
|
eks_cluster_endpoint = module.eks_blueprints.eks_cluster_endpoint
|
|
eks_oidc_provider = module.eks_blueprints.oidc_provider
|
|
eks_cluster_version = module.eks_blueprints.eks_cluster_version
|
|
|
|
# EKS Managed Add-ons
|
|
enable_amazon_eks_vpc_cni = true
|
|
enable_amazon_eks_coredns = true
|
|
enable_amazon_eks_kube_proxy = true
|
|
enable_amazon_eks_aws_ebs_csi_driver = true
|
|
|
|
tags = local.tags
|
|
}
|
|
|
|
#---------------------------------------------------------------
|
|
# Supporting Resources
|
|
#---------------------------------------------------------------
|
|
|
|
module "vpc" {
|
|
source = "terraform-aws-modules/vpc/aws"
|
|
version = "~> 5.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.cluster_name}" = "shared"
|
|
"kubernetes.io/role/elb" = 1
|
|
}
|
|
|
|
private_subnet_tags = {
|
|
"kubernetes.io/cluster/${local.cluster_name}" = "shared"
|
|
"kubernetes.io/role/internal-elb" = 1
|
|
}
|
|
|
|
tags = local.tags
|
|
}
|