Repository navigation
Expand file tree
/
Copy pathkarpenter.tf
More file actions
105 lines (95 loc) · 2.58 KB
/
Copy pathkarpenter.tf
File metadata and controls
105 lines (95 loc) · 2.58 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
module "karpenter" {
count = var.enable_karpenter ? 1 : 0
source = "terraform-aws-modules/eks/aws//modules/karpenter"
version = "21.2.0"
cluster_name = module.eks.cluster_name
# irsa_oidc_provider_arn = module.eks.oidc_provider_arn
# enable_irsa = true
create_node_iam_role = true
create_instance_profile = true
create_access_entry = true
namespace = "karpenter"
service_account = "karpenter"
node_iam_role_additional_policies = {
AmazonSSMManagedInstanceCore = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
}
create_pod_identity_association = true
tags = var.tags
}
resource "kubernetes_manifest" "karpenter_nodeclass" {
manifest = {
apiVersion = "karpenter.k8s.aws/v1"
kind = "EC2NodeClass"
metadata = {
name = "default"
}
spec = {
amiSelectorTerms = [{
alias = "al2023@latest"
}]
role = module.karpenter[0].node_iam_role_name
subnetSelectorTerms = [{
tags = {
"karpenter.sh/discovery" = module.eks.cluster_name
}
}]
securityGroupSelectorTerms = [{
tags = {
"karpenter.sh/discovery" = module.eks.cluster_name
}
}]
tags = {
"karpenter.sh/discovery" = module.eks.cluster_name
}
}
}
}
resource "kubernetes_manifest" "karpenter_nodepool" {
manifest = {
apiVersion = "karpenter.sh/v1"
kind = "NodePool"
metadata = {
name = "default"
}
spec = {
template = {
spec = {
nodeClassRef = {
group = "karpenter.k8s.aws"
kind = "EC2NodeClass"
name = kubernetes_manifest.karpenter_nodeclass.manifest.metadata.name
}
requirements = [
{
key = "karpenter.k8s.aws/instance-category"
operator = "In"
values = ["c", "m", "r"]
},
{
key = "karpenter.k8s.aws/instance-cpu"
operator = "In"
values = ["4", "8", "16", "32"]
},
{
key = "karpenter.k8s.aws/instance-hypervisor"
operator = "In"
values = ["nitro"]
},
{
key = "karpenter.k8s.aws/instance-generation"
operator = "Gt"
values = ["2"]
}
]
}
}
limits = {
cpu = "1000"
}
disruption = {
consolidationPolicy = "WhenEmpty"
consolidateAfter = "30s"
}
}
}
}