Skip to content

Instantly share code, notes, and snippets.

@rafaeljesus
Last active December 1, 2020 07:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save rafaeljesus/fd79559626e0f5401ab2bd7c3ce21bcc to your computer and use it in GitHub Desktop.
Save rafaeljesus/fd79559626e0f5401ab2bd7c3ce21bcc to your computer and use it in GitHub Desktop.
k8s cluster creation terraform
module "vpc" {
source = "git::git@github.com:rafaeljesus/vpc?ref=master"
vpc_id = var.vpc_id
vpc_cidr_block = var.vpc_cidr_block
azs = slice(data.aws_availability_zones.available.names, 0, 3)
public_subnets = var.vpc_public_subnets
private_subnets = var.vpc_private_subnets
igw_id = var.vpc_igw_id
tags = {
Team = var.team
Environment = var.environment
KubernetesCluster = format("eks-%s", var.environment)
format("kubernetes.io/cluster/eks-%s", var.environment) = "owned"
}
public_subnets_tags = {
SubnetType = "Utility",
"kubernetes.io/role/elb" = "1"
}
private_subnets_tags = {
SubnetType = "Private",
"kubernetes.io/role/internal-elb" = "1"
}
}
module "vpc_peering" {
source = "git::git@github.com:rafaeljesus/vpc-peering?ref=master"
providers = {
aws.requester = aws.prod
aws.accepter = aws.mgm
}
create_vpc_peering = var.vpc_peering_create
create_requester_routes = var.vpc_peering_requester_create_routes
requester_vpc_id = var.vpc_peering_requester_vpc_id
requester_assume_role_arn = var.vpc_peering_requester_assume_role_arn
accepter_vpc_id = module.vpc.vpc_id
accepter_assume_role_arn = var.vpc_peering_accepter_assume_role_arn
accepter_route_table_ids = concat(
module.vpc.public_route_table_ids,
module.vpc.private_route_table_ids,
)
vpc_depends_on = [
module.vpc.public_route_table_ids,
module.vpc.private_route_table_ids,
]
}
module "eks_cluster" {
}
module "helm_charts" {
helm_charts = var.helm_charts
cluster_depends_on = [module.eks_cluster.name]
}
module "k8s_cluster" {
source = "git::git@github.com:rafaeljesus/k8s-cluster?ref=master"
environment = var.environment
# vpc module input args
vpc_id = var.vpc_id
vpc_cidr_block = var.vpc_cidr_block
vpc_public_subnets = var.vpc_public_subnets
vpc_private_subnets = var.vpc_private_subnets
vpc_igw_id = var.vpc_igw_id
# vpc-peering module input args
vpc_peering_create = var.vpc_peering_create
vpc_peering_requester_create_routes = var.vpc_peering_requester_create_routes
vpc_peering_requester_vpc_id = var.vpc_peering_requester_vpc_id
vpc_peering_requester_assume_role_arn = var.vpc_peering_requester_assume_role_arn
vpc_peering_accepter_vpc_id = var.vpc_peering_accepter_vpc_id
vpc_peering_accepter_assume_role_arn = var.vpc_peering_accepter_assume_role_arn
# eks module input args
# helm chart module input args
helm_charts = var.helm_charts
}
team = "Platform"
environment = "prod"
vpc_id = "vpc-123"
vpc_cidr_block = "10.0.0.0/16"
vpc_public_subnets = ["10.0.3.0/24", "10.0.4.0/24", "10.0.5.0/24"]
vpc_private_subnets = ["10.0.32.0/20", "10.0.48.0/20", "10.0.64.0/20"]
vpc_igw_id = "igw-1234"
vpc_peering_create = false
vpc_peering_requester_create_routes = false
vpc_peering_requester_vpc_id = "vpc-456"
vpc_peering_requester_assume_role_arn = "arn:aws:iam::xxxxxxxxxxxx:role/vpc-peering-requester"
vpc_peering_accepter_assume_role_arn = "arn:aws:iam::xxxxxxxxxxxx:role/vpc-peering-accepter"
# TODO add eks input args
helm_charts = [
{
name = "node-local-dns"
version = "0.0.1"
chart = format("%s/node-local-dns", path.module)
namespace = "kube-system",
},
{
name = "prometheus-operator"
version = "0.0.1"
chart = format("%s/prometheus-operator", path.module)
namespace = "monitoring",
},
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment