Skip to content

Commit 78ee99b

Browse files
feat: add pod identity association support for EKS addons (#256)
* feat: add pod identity association support for EKS addons * fix: minor update for coderabbit * chore: bump aws provider version * chore: bump kubernetes version from 1.29 to 1.33 in tests * chore: update kubernetes go client libraries in tests * chore: update ami type in tests
1 parent d4b33d8 commit 78ee99b

File tree

8 files changed

+135
-105
lines changed

8 files changed

+135
-105
lines changed

examples/complete/fixtures.us-east-2.tfvars

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ enabled_cluster_log_types = ["audit"]
1515

1616
cluster_log_retention_period = 7
1717

18+
ami_type = "AL2023_x86_64_STANDARD"
19+
1820
instance_types = ["t3.small"]
1921

2022
desired_size = 2
@@ -28,7 +30,7 @@ kubernetes_labels = {}
2830
cluster_encryption_config_enabled = true
2931

3032
# When updating the Kubernetes version, also update the API and client-go version in test/src/go.mod
31-
kubernetes_version = "1.29"
33+
kubernetes_version = "1.33"
3234

3335
private_ipv6_enabled = false
3436

examples/complete/main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ module "eks_node_group" {
141141
# node group <= 3.2 requires a non-empty list of subnet_ids, even when disabled
142142
subnet_ids = local.enabled ? module.subnets.public_subnet_ids : ["filler_string_for_enabled_is_false"]
143143
cluster_name = module.eks_cluster.eks_cluster_id
144+
ami_type = var.ami_type
144145
instance_types = var.instance_types
145146
desired_size = var.desired_size
146147
min_size = var.min_size

examples/complete/variables.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ variable "oidc_provider_enabled" {
3232
description = "Create an IAM OIDC identity provider for the cluster, then you can create IAM roles to associate with a service account in the cluster, instead of using `kiam` or `kube2iam`. For more information, see https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html"
3333
}
3434

35+
variable "ami_type" {
36+
type = string
37+
description = "The AMI type to use for EKS node group instances (e.g., AL2_ARM_64, AL2_x86_64, /etc)."
38+
}
39+
3540
variable "instance_types" {
3641
type = list(string)
3742
description = "Set of instance types associated with the EKS Node Group. Defaults to [\"t3.medium\"]. Terraform will only perform drift detection if a configuration value is provided"

main.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,15 @@ resource "aws_eks_addon" "cluster" {
175175
resolve_conflicts_on_update = lookup(each.value, "resolve_conflicts_on_update", lookup(each.value, "resolve_conflicts", null))
176176
service_account_role_arn = lookup(each.value, "service_account_role_arn", null)
177177

178+
dynamic "pod_identity_association" {
179+
for_each = merge({}, lookup(each.value, "pod_identity_association", {}))
180+
181+
content {
182+
service_account = pod_identity_association.key
183+
role_arn = pod_identity_association.value
184+
}
185+
}
186+
178187
tags = merge(module.label.tags, each.value.additional_tags)
179188

180189
depends_on = [

test/src/go.mod

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
module github.com/cloudposse/terraform-aws-eks-cluster
22

3-
go 1.24
3+
go 1.24.0
44

5-
toolchain go1.24.0
5+
toolchain go1.24.5
66

77
require (
88
github.com/aws/aws-sdk-go v1.50.30
99
github.com/gruntwork-io/terratest v0.46.15
10-
github.com/stretchr/testify v1.9.0
11-
k8s.io/api v0.29.2
12-
k8s.io/apimachinery v0.29.2
13-
k8s.io/client-go v0.29.2
10+
github.com/stretchr/testify v1.10.0
11+
k8s.io/api v0.33.3
12+
k8s.io/apimachinery v0.33.3
13+
k8s.io/client-go v0.33.3
1414
sigs.k8s.io/aws-iam-authenticator v0.6.18
1515
)
1616

1717
require (
1818
cloud.google.com/go v0.112.1 // indirect
19-
cloud.google.com/go/compute v1.24.0 // indirect
20-
cloud.google.com/go/compute/metadata v0.2.3 // indirect
19+
cloud.google.com/go/compute/metadata v0.3.0 // indirect
2120
cloud.google.com/go/iam v1.1.6 // indirect
2221
cloud.google.com/go/storage v1.39.0 // indirect
2322
github.com/agext/levenshtein v1.2.3 // indirect
@@ -30,24 +29,25 @@ require (
3029
github.com/davecgh/go-spew v1.1.1 // indirect
3130
github.com/emicklei/go-restful/v3 v3.11.3 // indirect
3231
github.com/felixge/httpsnoop v1.0.4 // indirect
32+
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
3333
github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 // indirect
34-
github.com/go-logr/logr v1.4.1 // indirect
34+
github.com/go-logr/logr v1.4.2 // indirect
3535
github.com/go-logr/stdr v1.2.2 // indirect
36-
github.com/go-openapi/jsonpointer v0.20.2 // indirect
36+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
3737
github.com/go-openapi/jsonreference v0.20.4 // indirect
38-
github.com/go-openapi/swag v0.22.9 // indirect
38+
github.com/go-openapi/swag v0.23.0 // indirect
3939
github.com/go-sql-driver/mysql v1.4.1 // indirect
4040
github.com/gofrs/flock v0.8.1 // indirect
4141
github.com/gogo/protobuf v1.3.2 // indirect
4242
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
4343
github.com/golang/protobuf v1.5.3 // indirect
44-
github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49 // indirect
45-
github.com/google/go-cmp v0.6.0 // indirect
46-
github.com/google/gofuzz v1.2.0 // indirect
44+
github.com/google/gnostic-models v0.6.9 // indirect
45+
github.com/google/go-cmp v0.7.0 // indirect
4746
github.com/google/s2a-go v0.1.7 // indirect
4847
github.com/google/uuid v1.6.0 // indirect
4948
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
5049
github.com/googleapis/gax-go/v2 v2.12.2 // indirect
50+
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
5151
github.com/gruntwork-io/go-commons v0.8.0 // indirect
5252
github.com/hashicorp/errwrap v1.1.0 // indirect
5353
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
@@ -57,7 +57,6 @@ require (
5757
github.com/hashicorp/go-version v1.6.0 // indirect
5858
github.com/hashicorp/hcl/v2 v2.20.0 // indirect
5959
github.com/hashicorp/terraform-json v0.21.0 // indirect
60-
github.com/imdario/mergo v0.3.11 // indirect
6160
github.com/jinzhu/copier v0.4.0 // indirect
6261
github.com/jmespath/go-jmespath v0.4.0 // indirect
6362
github.com/josharian/intern v1.0.0 // indirect
@@ -68,11 +67,12 @@ require (
6867
github.com/mitchellh/go-homedir v1.1.0 // indirect
6968
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
7069
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
71-
github.com/moby/spdystream v0.2.0 // indirect
70+
github.com/moby/spdystream v0.5.0 // indirect
7271
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
7372
github.com/modern-go/reflect2 v1.0.2 // indirect
7473
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
7574
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
75+
github.com/pkg/errors v0.9.1 // indirect
7676
github.com/pmezard/go-difflib v1.0.0 // indirect
7777
github.com/pquerna/otp v1.2.0 // indirect
7878
github.com/prometheus/client_golang v1.19.0 // indirect
@@ -85,37 +85,40 @@ require (
8585
github.com/tmccombs/hcl2json v0.6.1 // indirect
8686
github.com/ulikunitz/xz v0.5.11 // indirect
8787
github.com/urfave/cli v1.22.2 // indirect
88+
github.com/x448/float16 v0.8.4 // indirect
8889
github.com/zclconf/go-cty v1.14.3 // indirect
8990
go.opencensus.io v0.24.0 // indirect
9091
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect
9192
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
9293
go.opentelemetry.io/otel v1.24.0 // indirect
9394
go.opentelemetry.io/otel/metric v1.24.0 // indirect
9495
go.opentelemetry.io/otel/trace v1.24.0 // indirect
95-
golang.org/x/crypto v0.21.0 // indirect
96-
golang.org/x/mod v0.15.0 // indirect
97-
golang.org/x/net v0.23.0 // indirect
98-
golang.org/x/oauth2 v0.17.0 // indirect
99-
golang.org/x/sync v0.6.0 // indirect
100-
golang.org/x/sys v0.18.0 // indirect
101-
golang.org/x/term v0.18.0 // indirect
102-
golang.org/x/text v0.14.0 // indirect
103-
golang.org/x/time v0.5.0 // indirect
104-
golang.org/x/tools v0.18.0 // indirect
96+
golang.org/x/crypto v0.36.0 // indirect
97+
golang.org/x/mod v0.21.0 // indirect
98+
golang.org/x/net v0.38.0 // indirect
99+
golang.org/x/oauth2 v0.27.0 // indirect
100+
golang.org/x/sync v0.12.0 // indirect
101+
golang.org/x/sys v0.31.0 // indirect
102+
golang.org/x/term v0.30.0 // indirect
103+
golang.org/x/text v0.23.0 // indirect
104+
golang.org/x/time v0.9.0 // indirect
105+
golang.org/x/tools v0.26.0 // indirect
105106
google.golang.org/api v0.167.0 // indirect
106107
google.golang.org/appengine v1.6.8 // indirect
107108
google.golang.org/genproto v0.0.0-20240228224816-df926f6c8641 // indirect
108109
google.golang.org/genproto/googleapis/api v0.0.0-20240228224816-df926f6c8641 // indirect
109110
google.golang.org/genproto/googleapis/rpc v0.0.0-20240228224816-df926f6c8641 // indirect
110111
google.golang.org/grpc v1.62.0 // indirect
111-
google.golang.org/protobuf v1.33.0 // indirect
112+
google.golang.org/protobuf v1.36.5 // indirect
113+
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
112114
gopkg.in/inf.v0 v0.9.1 // indirect
113115
gopkg.in/yaml.v2 v2.4.0 // indirect
114116
gopkg.in/yaml.v3 v3.0.1 // indirect
115-
k8s.io/klog/v2 v2.120.1 // indirect
116-
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
117-
k8s.io/utils v0.0.0-20240102154912-e7106e64919e // indirect
118-
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
119-
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
117+
k8s.io/klog/v2 v2.130.1 // indirect
118+
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
119+
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
120+
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
121+
sigs.k8s.io/randfill v1.0.0 // indirect
122+
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
120123
sigs.k8s.io/yaml v1.4.0 // indirect
121124
)

0 commit comments

Comments
 (0)