-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patheks.tf
More file actions
111 lines (94 loc) · 3.67 KB
/
Copy patheks.tf
File metadata and controls
111 lines (94 loc) · 3.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
locals {
cluster_name = substr((var.cluster_name != "" ? var.cluster_name : var.nuon_id), 0, 38)
cluster_version = var.cluster_version
instance_types = [var.default_instance_type]
min_size = var.min_size
max_size = var.max_size
desired_size = var.desired_size
// access entries
// three roles in play: provision, deprovision, maintenance
// this becomes the provision role
default_access_entries = {
"provision" = {
principal_arn = var.provision_iam_role_arn
kubernetes_groups = concat(["provision"], var.provision_role_eks_kubernetes_groups)
policy_associations = var.provision_role_eks_access_entry_policy_associations,
tags = local.tags
},
"maintenance" = {
principal_arn = var.maintenance_iam_role_arn
kubernetes_groups = concat(["maintenance"], var.maintenance_role_eks_kubernetes_groups)
policy_associations = var.maintenance_role_eks_access_entry_policy_associations,
tags = local.tags
},
"deprovision" = {
principal_arn = var.deprovision_iam_role_arn
kubernetes_groups = concat(["deprovision"], var.deprovision_role_eks_kubernetes_groups)
policy_associations = var.deprovision_role_eks_access_entry_policy_associations,
tags = local.tags
},
}
break_glass_access_entry = var.break_glass_iam_role_arn != "" ? {
"break_glass" = {
principal_arn = var.break_glass_iam_role_arn
kubernetes_groups = concat(["break_glass"], var.break_glass_role_eks_kubernetes_groups)
policy_associations = var.break_glass_role_eks_access_entry_policy_associations,
tags = local.tags
}
} : {}
access_entries = merge(local.default_access_entries, local.break_glass_access_entry, var.additional_access_entry)
}
resource "aws_kms_key" "eks" {
description = "Key for ${local.cluster_name} EKS cluster"
}
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "20.35.0"
cluster_name = local.cluster_name
cluster_version = local.cluster_version
cluster_endpoint_private_access = true
cluster_endpoint_public_access = var.cluster_endpoint_public_access
vpc_id = data.aws_vpc.vpc.id
subnet_ids = local.subnets.private.ids
create_kms_key = false
cluster_encryption_config = {
provider_key_arn = aws_kms_key.eks.arn
resources = ["secrets"]
}
cluster_addons = {
coredns = {}
eks-pod-identity-agent = {}
kube-proxy = {}
vpc-cni = {
most_recent = true
preserve = true
}
}
authentication_mode = "API_AND_CONFIG_MAP"
access_entries = local.access_entries
enable_cluster_creator_admin_permissions = false
node_security_group_additional_rules = {}
eks_managed_node_groups = {
default = {
instance_types = local.instance_types
min_size = local.min_size
max_size = local.max_size
desired_size = local.desired_size
iam_role_additional_policies = {
additional = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
}
}
}
tags = local.tags
}
# TODO: revisit this access method
resource "aws_security_group_rule" "runner_cluster_access" {
type = "ingress"
description = "Allow ingress traffic from runner."
from_port = 0
to_port = 0
protocol = "-1"
security_group_id = module.eks.cluster_security_group_id
source_security_group_id = data.aws_security_groups.runner.ids[0] # make this less brittle
depends_on = [module.eks]
}