@@ -11,24 +11,27 @@ This module provides a set of reusable, configurable, and scalable AWS EKS addon
11
11
``` hcl
12
12
module "eks-addons" {
13
13
source = "squareops/eks-addons/aws"
14
- version = "3.1.1 "
14
+ version = "4.0.2 "
15
15
name = local.name
16
16
tags = local.additional_tags
17
- vpc_id = "vpc-xxxxxx" # pass VPC ID
18
- private_subnet_ids = ["subnet-xxxxx", "subnet-xxxxx"] # pass Subnet IDs
17
+ vpc_id = local.vpc_id
18
+ private_subnet_ids = local.private_subnet_ids # pass the private subnet IDs
19
+ public_subnet_ids = local.public_subnet_ids # pass the private subnet IDs
19
20
environment = local.environment
20
21
ipv6_enabled = local.ipv6_enabled
21
22
kms_key_arn = local.kms_key_arn
22
- kms_policy_arn = "arn:aws:iam::xxx:policy/eks-kms-policy" # eks module will create kms_policy_arn
23
- worker_iam_role_name = "eks-node-role" # enter role name created by eks module
24
- worker_iam_role_arn = "arn:aws:iam::xxx:role/eks-node-role" # enter roll ARN
23
+ kms_policy_arn = local. kms_policy_arn
24
+ worker_iam_role_arn = local.worker_iam_role_arn
25
+ worker_iam_role_name = local.worker_iam_role_name
25
26
eks_cluster_name = data.aws_eks_cluster.cluster.name
26
27
27
28
#VPC-CNI-DRIVER
28
- amazon_eks_vpc_cni_enabled = false # enable VPC-CNI
29
+ amazon_eks_vpc_cni_enabled = true # enable VPC-CNI
30
+ vpc_cni_version = "v1.19.2-eksbuild.1"
29
31
30
32
#EBS-CSI-DRIVER
31
33
enable_amazon_eks_aws_ebs_csi_driver = false # enable EBS CSI Driver
34
+ ebs_csi_driver_version = "v1.36.0-eksbuild.1"
32
35
amazon_eks_aws_ebs_csi_driver_config = {
33
36
values = [file("${path.module}/config/ebs-csi.yaml")]
34
37
}
@@ -39,37 +42,47 @@ module "eks-addons" {
39
42
40
43
## EfS-STORAGE-CLASS
41
44
efs_storage_class_enabled = false # to enable EBS storage class
45
+ efs_version = "2.3.2"
42
46
43
47
## SERVICE-MONITORING-CRDs
44
48
service_monitor_crd_enabled = false # enable service monitor along with K8S-dashboard (required CRD) or when require service monitor in reloader and cert-manager
45
49
46
50
## METRIC-SERVER
47
51
metrics_server_enabled = false # to enable metrics server
52
+ metrics_server_version = "3.12.1"
48
53
metrics_server_helm_config = [file("${path.module}/config/metrics-server.yaml")]
54
+
55
+ # VerticalPodAutoscaler
56
+ vpa_enabled = false
57
+ vpa_version = "9.9.0"
49
58
vpa_config = {
50
59
values = [file("${path.module}/config/vpa-crd.yaml")]
51
60
}
52
61
53
62
## CLUSTER-AUTOSCALER
54
63
cluster_autoscaler_enabled = false # to enable cluster autoscaller
64
+ cluster_autoscaler_version = "9.37.0"
55
65
cluster_autoscaler_helm_config = [file("${path.module}/config/cluster-autoscaler.yaml")]
56
66
57
67
## NODE-TERMINATION-HANDLER
58
68
aws_node_termination_handler_enabled = false # to enable node termination handler
69
+ aws_node_termination_handler_version = "0.21.0"
59
70
aws_node_termination_handler_helm_config = {
60
71
values = [file("${path.module}/config/aws-node-termination-handler.yaml")]
61
72
enable_service_monitor = false # to enable monitoring for node termination handler
62
- enable_notifications = true
73
+ enable_notifications = false
63
74
}
64
75
65
76
## KEDA
66
77
keda_enabled = false # to enable Keda in the EKS cluster
78
+ keda_version = "2.14.2"
67
79
keda_helm_config = {
68
80
values = [file("${path.module}/config/keda.yaml")]
69
81
}
70
82
71
83
## KARPENTER
72
84
karpenter_enabled = false # to enable Karpenter (installs required CRDs )
85
+ karpenter_version = "1.0.6"
73
86
karpenter_helm_config = {
74
87
enable_service_monitor = false # to enable monitoring for kafalserpenter
75
88
values = [file("${path.module}/config/karpenter.yaml")]
@@ -81,14 +94,21 @@ module "eks-addons" {
81
94
values = [file("${path.module}/config/coredns-hpa.yaml")]
82
95
}
83
96
97
+ ## ClusterProportionalAutoscaler (Configured for CoreDNS)
98
+ cluster_proportional_autoscaler_enabled = false # to enable cluster proportional autoscaler
99
+ cluster_proportional_autoscaler_chart_version = "1.1.0"
100
+ cluster_proportional_autoscaler_helm_config = [file("${path.module}/config/cluster-proportional-autoscaler.yaml")]
101
+
84
102
## EXTERNAL-SECRETS
85
103
external_secrets_enabled = false # to enable external secrets
104
+ external_secrets_version = "0.9.19"
86
105
external_secrets_helm_config = {
87
106
values = [file("${path.module}/config/external-secret.yaml")]
88
107
}
89
108
90
109
## CERT-MANAGER
91
110
cert_manager_enabled = false # to enable Cert-manager
111
+ cert_manager_version = "v1.15.1"
92
112
cert_manager_helm_config = {
93
113
values = [file("${path.module}/config/cert-manager.yaml")]
94
114
enable_service_monitor = false # to enable monitoring for Cert Manager
@@ -97,23 +117,35 @@ module "eks-addons" {
97
117
98
118
## CONFIG-RELOADER
99
119
reloader_enabled = false # to enable config reloader in the EKS cluster
120
+ reloader_version = "v1.0.115"
100
121
reloader_helm_config = {
101
122
values = [file("${path.module}/config/reloader.yaml")]
102
123
enable_service_monitor = false # to enable monitoring for reloader
103
124
}
104
125
105
126
## INGRESS-NGINX
106
127
ingress_nginx_enabled = false # to enable ingress nginx
107
- private_nlb_enabled = false # to enable Internal (Private) Ingress , set this and ingress_nginx_enable "false" together
128
+ ingress_nginx_version = "4.11.0"
108
129
ingress_nginx_config = {
109
130
values = [file("${path.module}/config/ingress-nginx.yaml")]
110
131
enable_service_monitor = false # enable monitoring in nginx ingress
111
- ingress_class_name = "nginx" # enter ingress class name according to your requirement (example: "nginx", "internal-ingress")
112
- namespace = "nginx" # enter namespace according to the requirement (example: "nginx", "internal-ingress")
132
+ ingress_class_name = "nginx" # enter ingress class name according to your requirement
133
+ namespace = "nginx" # enter namespace according to the requirement
134
+ }
135
+
136
+ ## PRIVATE INGRESS-NGINX
137
+ private_ingress_nginx_enabled = false # to enable Internal (Private) Ingress
138
+ private_ingress_nginx_version = "4.11.0"
139
+ private_ingress_nginx_config = {
140
+ values = [file("${path.module}/config/ingress-nginx.yaml")]
141
+ enable_service_monitor = false # enable monitoring in nginx ingress
142
+ ingress_class_name = "private-nginx" # enter ingress class name according to your requirement (example: "nginx", "internal-ingress")
143
+ namespace = "private-nginx" # enter namespace according to the requirement (example: "nginx", "internal-ingress")
113
144
}
114
145
115
146
## AWS-APPLICATION-LOAD-BALANCER-CONTROLLER
116
147
aws_load_balancer_controller_enabled = false # to enable load balancer controller
148
+ aws_load_balancer_controller_version = "1.8.1"
117
149
aws_load_balancer_controller_helm_config = {
118
150
values = [file("${path.module}/config/aws-alb.yaml")]
119
151
namespace = "alb" # enter namespace according to the requirement (example: "alb")
@@ -122,15 +154,18 @@ module "eks-addons" {
122
154
123
155
## KUBERNETES-DASHBOARD
124
156
kubernetes_dashboard_enabled = false
157
+ kubernetes_dashboard_version = "6.0.8"
125
158
kubernetes_dashboard_config = {
126
- k8s_dashboard_ingress_load_balancer = "nlb" ##Choose your load balancer type (e.g., NLB or ALB). Enable load balancer controller, if you require ALB, Enable Ingress Nginx if NLB.
159
+ k8s_dashboard_ingress_load_balancer = "nlb" # Pass either "nlb/alb" to choose load balancer controller as ingress-nginx controller or ALB controller
127
160
private_alb_enabled = false # to enable Internal (Private) ALB , set this and aws_load_balancer_controller_enabled "true" together
128
161
alb_acm_certificate_arn = "" # If using ALB in above parameter, ensure you provide the ACM certificate ARN for SSL.
129
162
k8s_dashboard_hostname = "k8s-dashboard.rnd.squareops.in" # Enter Hostname
163
+ ingress_class_name = "nginx" # For public nlb use "nginx", for private NLB use "private-nginx", For ALB, use "alb"
130
164
}
131
165
132
166
## ArgoCD
133
167
argocd_enabled = false
168
+ argocd_version = "7.3.11"
134
169
argocd_config = {
135
170
hostname = "argocd.rnd.squareops.in"
136
171
values_yaml = file("${path.module}/config/argocd.yaml")
@@ -139,20 +174,41 @@ module "eks-addons" {
139
174
autoscaling_enabled = true
140
175
slack_notification_token = ""
141
176
argocd_notifications_enabled = false
142
- ingress_class_name = "nginx" # enter ingress class name according to your requirement (example: "ingress-nginx", "internal-ingress")
177
+ ingress_class_name = "nginx" # For public nlb use "nginx", for private NLB use "private-nginx", For ALB, use "alb"
178
+ argocd_ingress_load_balancer = "nlb" # Pass either "nlb/alb" to choose load balancer controller as ingress-nginx controller or ALB controller
179
+ private_alb_enabled = "false" # to enable Internal (Private) ALB , set this and aws_load_balancer_controller_enabled "true" together
180
+ alb_acm_certificate_arn = "" # If using ALB in above parameter, ensure you provide the ACM certificate ARN for SSL.
143
181
}
144
182
argoproject_config = {
145
183
name = "argo-project" # enter name for aro-project appProjects
146
184
}
147
185
148
186
## ArgoCD-Workflow
149
187
argoworkflow_enabled = false
188
+ argoworkflow_version = "0.29.2"
150
189
argoworkflow_config = {
151
- values = file("${path.module}/config/argocd-workflow.yaml")
152
- namespace = local.argocd_namespace
153
- autoscaling_enabled = true
154
- hostname = "argocd-workflow.rnd.squareops.in"
155
- ingress_class_name = "nginx" # enter ingress class name according to your requirement (example: "ingress-nginx", "internal-ingress")
190
+ values = file("${path.module}/config/argocd-workflow.yaml")
191
+ namespace = local.argocd_namespace
192
+ autoscaling_enabled = true
193
+ hostname = "argoworkflow.rnd.squareops.in"
194
+ ingress_class_name = "nginx" # For public nlb use "nginx", for private NLB use "private-nginx", For ALB, use "alb"
195
+ argoworkflow_ingress_load_balancer = "nlb" # Pass either "nlb/alb" to choose load balancer controller as ingress-nginx controller or ALB controller
196
+ private_alb_enabled = "false" # to enable Internal (Private) ALB , set this and aws_load_balancer_controller_enabled "true" together
197
+ alb_acm_certificate_arn = "" # If using ALB in above parameter, ensure you provide the ACM certificate ARN for SSL.
198
+ }
199
+
200
+ ## ArgoRollout
201
+ argorollout_enabled = false
202
+ argorollout_config = {
203
+ values = file("${path.module}/config/argo-rollout.yaml")
204
+ namespace = local.argocd_namespace
205
+ hostname = "argo-rollout.rnd.squareops.in"
206
+ enable_dashboard = false
207
+ ingress_class_name = "nginx" # For public nlb use "nginx", for private NLB use "private-nginx", For ALB, use "alb"
208
+ argorollout_ingress_load_balancer = "nlb" # Pass either "nlb/alb" to choose load balancer controller as ingress-nginx controller or ALB controller
209
+ private_alb_enabled = "false" # to enable Internal (Private) ALB , set this and aws_load_balancer_controller_enabled "true" together
210
+ alb_acm_certificate_arn = "" # If using ALB in above parameter, ensure you provide the ACM certificate ARN for SSL.
211
+ chart_version = "2.38.0"
156
212
}
157
213
158
214
# VELERO
@@ -172,10 +228,12 @@ module "eks-addons" {
172
228
173
229
## KUBECLARITY
174
230
kubeclarity_enabled = false # to enable kube clarity
231
+ kubeclarity_version = "2.23.0"
175
232
kubeclarity_hostname = "kubeclarity.prod.in"
176
233
177
234
## KUBECOST
178
235
kubecost_enabled = false # to enable kube cost
236
+ kubecost_version = "v2.1.0-eksbuild.1"
179
237
kubecost_hostname = "kubecost.prod.in"
180
238
181
239
## DEFECT-DOJO
@@ -184,6 +242,7 @@ module "eks-addons" {
184
242
185
243
## FALCO
186
244
falco_enabled = false # to enable falco
245
+ falco_version = "4.0.0"
187
246
slack_webhook = "xoxb-379541400966-iibMHnnoaPzVl"
188
247
}
189
248
@@ -206,9 +265,13 @@ module "eks-addons" {
206
265
| Release 1.1.7 | ✔ ; | ✔ ; | ✔ ; | ✔ ; | ✔ ; |
207
266
| Release 1.1.8 | ✔ ; | ✔ ; | ✔ ; | ✔ ; | ✔ ; | ✔ ; |
208
267
| Release 3.0.0 | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ✔ ; | ✔ ; | ✔ ; |
209
- | Release 3.1.1 | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ✔ ; | ✔ ; | ✔ ; |
268
+ | Release 3.1.0 | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ✔ ; | ✔ ; | ✔ ; |
269
+ | Release 3.1.3 | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ✔ ; | ✔ ; | ✔ ; |
270
+ | Release 4.0.0 | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ✔ ; | ✔ ; | ✔ ; |
271
+ | Release 4.0.1 | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ✔ ; | ✔ ; | ✔ ; |
272
+ | Release 4.0.2 | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ❌ ; | ✔ ; | ✔ ; | ✔ ; |
210
273
211
- Note: The latest release 3 .0.0 support EKS version 1.28, 1.29 and 1.30. For EKS version <=1.27 refer the previous release.
274
+ Note: The latest release 4 .0.0 support EKS version 1.28, 1.29 and 1.30. For EKS version <=1.27 refer the previous release.
212
275
## IAM Permissions
213
276
The required IAM permissions to create resources from this module can be found [ here] ( https://github.com/squareops/terraform-aws-eks-addons.git/blob/main/IAM.md )
214
277
0 commit comments