1
-
1
+ # eks-cluster/ekscluster.tf
2
2
# Create EKS cluster and node groups
3
3
resource "aws_eks_cluster" "eks-tf" {
4
4
@@ -28,8 +28,8 @@ resource "aws_eks_node_group" "private-node-group-1-tf" {
28
28
instance_types = [" t3.medium" ]
29
29
30
30
scaling_config {
31
- desired_size = 2
32
- max_size = 3
31
+ desired_size = 1
32
+ max_size = 2
33
33
min_size = 1
34
34
}
35
35
@@ -44,13 +44,6 @@ resource "aws_eks_node_group" "private-node-group-1-tf" {
44
44
]
45
45
}
46
46
47
- resource "aws_eks_addon" "cluster-addons" {
48
- for_each = { for addon in var . eks_addons : addon . name => addon }
49
- cluster_name = aws_eks_cluster. eks-tf . id
50
- addon_name = each. value . name
51
- # addon_version = each.value.version
52
- resolve_conflicts = " OVERWRITE"
53
- }
54
47
55
48
resource "aws_eks_node_group" "private-node-group-2-tf" {
56
49
cluster_name = aws_eks_cluster. eks-tf . name
@@ -61,8 +54,8 @@ resource "aws_eks_node_group" "private-node-group-2-tf" {
61
54
instance_types = [" t3.medium" ]
62
55
63
56
scaling_config {
64
- desired_size = 2
65
- max_size = 3
57
+ desired_size = 1
58
+ max_size = 2
66
59
min_size = 1
67
60
}
68
61
@@ -76,3 +69,52 @@ resource "aws_eks_node_group" "private-node-group-2-tf" {
76
69
aws_iam_role_policy_attachment . AmazonEC2ContainerRegistryReadOnly ,
77
70
]
78
71
}
72
+
73
+ # Create EKS Addons
74
+ resource "aws_eks_addon" "cluster-addons" {
75
+ for_each = { for addon in var . eks_addons : addon . name => addon }
76
+ cluster_name = aws_eks_cluster. eks-tf . id
77
+ addon_name = each. value . name
78
+ resolve_conflicts = " OVERWRITE"
79
+
80
+ # Add service account role ARN for EBS CSI driver
81
+ service_account_role_arn = each. value . name == " aws-ebs-csi-driver" ? aws_iam_role. ebs_csi_driver . arn : null
82
+
83
+ depends_on = [
84
+ aws_eks_node_group . private-node-group-1-tf ,
85
+ aws_eks_node_group . private-node-group-2-tf ,
86
+ aws_iam_role . ebs_csi_driver
87
+ ]
88
+ }
89
+
90
+ output "kubeconfig" {
91
+ value = << EOT
92
+ apiVersion: v1
93
+ clusters:
94
+ - cluster:
95
+ server: ${ aws_eks_cluster . eks-tf . endpoint }
96
+ certificate-authority-data: ${ aws_eks_cluster . eks-tf . certificate_authority [0 ]. data }
97
+ name: ${ aws_eks_cluster . eks-tf . arn } # Use ARN as context name
98
+ contexts:
99
+ - context:
100
+ cluster: ${ aws_eks_cluster . eks-tf . arn }
101
+ user: ${ aws_eks_cluster . eks-tf . arn }
102
+ name: ${ aws_eks_cluster . eks-tf . arn } # Dynamic context name
103
+ current-context: ${ aws_eks_cluster . eks-tf . arn }
104
+ kind: Config
105
+ users:
106
+ - name: ${ aws_eks_cluster . eks-tf . arn }
107
+ user:
108
+ exec:
109
+ apiVersion: client.authentication.k8s.io/v1beta1
110
+ command: aws
111
+ args:
112
+ - "eks"
113
+ - "get-token"
114
+ - "--cluster-name"
115
+ - ${ aws_eks_cluster . eks-tf . name }
116
+ - "--region"
117
+ - ${ local . aws_region }
118
+ EOT
119
+ sensitive = true
120
+ }
0 commit comments