avx-pmarie-aws-infra/infra/config.hcl

176 lines
4.8 KiB
HCL

locals {
# Common tags
environment = "dev"
source = "terraform"
repository = "avx-pmarie-aws-infra"
# VPC
vpc_name = "avx-pmarie-aws-infra-vpc"
cidr = "10.88.0.0/16"
azs = ["eu-west-3a", "eu-west-3b"]
private_subnets = ["10.88.0.0/24", "10.88.1.0/24"]
public_subnets = ["10.88.128.0/24", "10.88.129.0/24"]
enable_nat_gateway = true
enable_vpn_gateway = false
# EKS
eks_cluster_name = "avx-pmarie-eks"
eks_cluster_version = "1.22"
enable_irsa = true
# EKS addons
cluster_addons = {
coredns = {
resolve_conflicts = "OVERWRITE"
addon_version = "v1.8.7-eksbuild.4"
}
kube-proxy = {
resolve_conflicts = "OVERWRITE"
addon_version = "v1.22.17-eksbuild.2"
}
vpc-cni = {
resolve_conflicts = "OVERWRITE"
addon_version = "v1.12.6-eksbuild.1"
}
aws-ebs-csi-driver = {
resolve_conflicts = "OVERWRITE"
addon_version = "v1.17.0-eksbuild.1"
}
}
# EKS addon CSI EBS; This is obsolete and should be removed.
eks_addon_versions = {
aws-ebs-csi-driver = "v1.17.0-eksbuild.1"
}
node_group_defaults = {
disk_size = 50
instance_types = ["t3.small"]
}
node_groups = {
"eks-${local.environment}" = {
min_size = 1
max_size = 10
desired_size = 3
bootstrap_extra_args = "--container-runtime containerd"
instance_types = ["t3.small"]
tags = {
environment = local.environment
repository = local.repository
source = local.source
}
}
}
eks_cluster_security_group_additional_rules = {
egress_nodes_ephemeral_ports_tcp = {
description = "Validation webhooks"
protocol = "tcp"
from_port = 1024
to_port = 65535
type = "egress"
source_node_security_group = true
}
}
eks_node_security_group_additional_rules = {
ingress_cluster_api_validation_webhooks = {
description = "Control Plane to webhooks"
protocol = "tcp"
from_port = 1024
to_port = 65535
type = "ingress"
source_cluster_security_group = true
}
ingress_self_all = {
description = "Node to node all ports/protocols"
protocol = "-1"
from_port = 0
to_port = 0
type = "ingress"
self = true
}
egress_all = {
description = "Node all egress"
protocol = "-1"
from_port = 0
to_port = 0
type = "egress"
cidr_blocks = ["0.0.0.0/0"]
ipv6_cidr_blocks = ["::/0"]
}
}
# EKS aws auth
eks_aws_auth_additional_roles = [{
rolearn = "arn:aws:iam::563042046245:role/AWSReservedSSO_SubAccountAdmin_6abfb8362d0dfbc0"
username = "sre-admins"
groups = ["system:masters"]
}, {
rolearn = "arn:aws:iam::${get_aws_account_id()}:role/k8s_admin"
username = "admins"
groups = ["system:masters"]
}]
# AWS load balancer
aws_load_balancer_service_account_name = "aws-load-balancer"
aws_load_balancer_namespace = "aws-load-balancer"
aws_load_balancer_iam_role_prefix = "AWSLoadBalancerController"
# DNS
dns_public_domain = "aws.mkz.me"
dns_private_domain = "aws-priv.mkz.me"
# Ingress
eks_ingress_controller = {
namespace = "nginx-ingress"
create_namespace = true
enable_internal_lb = true
ingress_config = {
use-proxy-protocol = false
proxy-real-ip-cidr = "0.0.0.0/0"
use-forwarded-headers = false
compute-full-forwarded-for = false
}
load_balancer_config = {
public = {
dns_record = "*"
backend-protocol = "tcp"
connection-idle-timeout = "60"
cross-zone-load-balancing-enabled = true
type = "nlb"
proxy-protocol = ""
nlb-target-type = ""
eip-allocations = ""
}
internal = {
dns_record = "*"
backend-protocol = "tcp"
connection-idle-timeout = "60"
cross-zone-load-balancing-enabled = true
type = "nlb"
proxy-protocol = ""
nlb-target-type = ""
eip-allocations = ""
}
}
}
elastic_ips = {
"eks_public_nlb" = {
count = length(local.azs)
vpc = true
tags = {
cluster = local.eks_cluster_name
usage = "eks_public_nlb"
}
}
}
}