@@ -6,20 +6,14 @@ provider "helm" {
6
6
kubernetes {
7
7
host = module. eks . cluster_endpoint
8
8
cluster_ca_certificate = base64decode (module. eks . cluster_certificate_authority_data )
9
- token = data. aws_eks_cluster_auth . this . token
10
- }
11
- }
12
9
13
- provider "kubectl" {
14
- apply_retry_count = 30
15
- host = module. eks . cluster_endpoint
16
- cluster_ca_certificate = base64decode (module. eks . cluster_certificate_authority_data )
17
- load_config_file = false
18
- token = data. aws_eks_cluster_auth . this . token
19
- }
20
-
21
- data "aws_eks_cluster_auth" "this" {
22
- name = module. eks . cluster_name
10
+ exec {
11
+ api_version = " client.authentication.k8s.io/v1beta1"
12
+ command = " aws"
13
+ # This requires the awscli to be installed locally where Terraform is executed
14
+ args = [" eks" , " get-token" , " --cluster-name" , module . eks . cluster_name ]
15
+ }
16
+ }
23
17
}
24
18
25
19
data "aws_caller_identity" "current" {}
@@ -157,21 +151,22 @@ module "disabled" {
157
151
158
152
module "eks" {
159
153
source = " terraform-aws-modules/eks/aws"
160
- version = " ~> 19.10 "
154
+ version = " ~> 19.16 "
161
155
162
- cluster_name = local. name
163
- cluster_version = " 1.24"
156
+ cluster_name = local. name
157
+ cluster_version = " 1.27"
158
+ cluster_endpoint_public_access = true
164
159
165
160
vpc_id = module. vpc . vpc_id
166
161
subnet_ids = module. vpc . private_subnets
167
162
168
163
eks_managed_node_groups = {
169
164
initial = {
170
- instance_types = [" m5.xlarge " ]
165
+ instance_types = [" m5.large " ]
171
166
172
167
min_size = 1
173
- max_size = 2
174
- desired_size = 1
168
+ max_size = 3
169
+ desired_size = 2
175
170
}
176
171
}
177
172
@@ -185,7 +180,7 @@ module "eks" {
185
180
186
181
module "vpc" {
187
182
source = " terraform-aws-modules/vpc/aws"
188
- version = " ~> 4 .0"
183
+ version = " ~> 5 .0"
189
184
190
185
name = local. name
191
186
cidr = local. vpc_cidr
@@ -218,7 +213,6 @@ resource "aws_iam_instance_profile" "karpenter" {
218
213
}
219
214
220
215
data "aws_iam_policy_document" "karpenter_controller" {
221
- # # checkov:skip=CKV_AWS_111
222
216
statement {
223
217
actions = [
224
218
" ec2:CreateLaunchTemplate" ,
@@ -298,85 +292,3 @@ resource "aws_iam_policy" "karpenter_controller" {
298
292
299
293
tags = local. tags
300
294
}
301
-
302
- # ###############################################################################
303
- # Karpenter Provisioner
304
- # ###############################################################################
305
-
306
- # Workaround - https://github.com/hashicorp/terraform-provider-kubernetes/issues/1380#issuecomment-967022975
307
- resource "kubectl_manifest" "karpenter_provisioner" {
308
- yaml_body = <<- YAML
309
- ---
310
- apiVersion: karpenter.sh/v1alpha5
311
- kind: Provisioner
312
- metadata:
313
- name: default
314
- spec:
315
- requirements:
316
- - key: karpenter.sh/capacity-type
317
- operator: In
318
- values: ["spot"]
319
- limits:
320
- resources:
321
- cpu: 1000
322
- providerRef:
323
- name: default
324
- ttlSecondsAfterEmpty: 30
325
- YAML
326
-
327
- depends_on = [
328
- module . helm_release_irsa . helm_release
329
- ]
330
- }
331
-
332
- resource "kubectl_manifest" "karpenter_node_template" {
333
- yaml_body = <<- YAML
334
- apiVersion: karpenter.k8s.aws/v1alpha1
335
- kind: AWSNodeTemplate
336
- metadata:
337
- name: default
338
- spec:
339
- subnetSelector:
340
- ${ local . karpenter_tag_key } : ${ module . eks . cluster_name }
341
- securityGroupSelector:
342
- ${ local . karpenter_tag_key } : ${ module . eks . cluster_name }
343
- tags:
344
- ${ local . karpenter_tag_key } : ${ module . eks . cluster_name }
345
- YAML
346
-
347
- depends_on = [
348
- kubectl_manifest . karpenter_provisioner
349
- ]
350
- }
351
-
352
- # Example deployment using the [pause image](https://www.ianlewis.org/en/almighty-pause-container)
353
- # and starts with zero replicas
354
- resource "kubectl_manifest" "karpenter_example_deployment" {
355
- yaml_body = <<- YAML
356
- apiVersion: apps/v1
357
- kind: Deployment
358
- metadata:
359
- name: inflate
360
- spec:
361
- replicas: 0
362
- selector:
363
- matchLabels:
364
- app: inflate
365
- template:
366
- metadata:
367
- labels:
368
- app: inflate
369
- spec:
370
- terminationGracePeriodSeconds: 0
371
- containers:
372
- - name: inflate
373
- image: public.ecr.aws/eks-distro/kubernetes/pause:3.2
374
- resources:
375
- requests:
376
- cpu: 1
377
- YAML
378
-
379
- depends_on = [
380
- kubectl_manifest . karpenter_node_template
381
- ]
382
- }
0 commit comments