Skip to content

Commit 38596c5

Browse files
bryantbiggsspr-mweber3
authored andcommitted
feat: Add support for addon configuration_values (terraform-aws-modules#2345)
Resolves undefined
1 parent e57e0b2 commit 38596c5

File tree

26 files changed

+57
-307
lines changed

26 files changed

+57
-307
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -223,15 +223,15 @@ We are grateful to the community for contributing bugfixes and improvements! Ple
223223
| Name | Version |
224224
|------|---------|
225225
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
226-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.45 |
226+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.47 |
227227
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | >= 2.10 |
228228
| <a name="requirement_tls"></a> [tls](#requirement\_tls) | >= 3.0 |
229229

230230
## Providers
231231

232232
| Name | Version |
233233
|------|---------|
234-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.45 |
234+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.47 |
235235
| <a name="provider_kubernetes"></a> [kubernetes](#provider\_kubernetes) | >= 2.10 |
236236
| <a name="provider_tls"></a> [tls](#provider\_tls) | >= 3.0 |
237237

examples/complete/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ Note that this example may create resources which cost money. Run `terraform des
3434
| Name | Version |
3535
|------|---------|
3636
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
37-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.45 |
37+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.47 |
3838
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | >= 2.10 |
3939

4040
## Providers
4141

4242
| Name | Version |
4343
|------|---------|
44-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.45 |
44+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.47 |
4545

4646
## Modules
4747

examples/complete/versions.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 4.45"
7+
version = ">= 4.47"
88
}
99
kubernetes = {
1010
source = "hashicorp/kubernetes"

examples/eks_managed_node_group/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ Note that this example may create resources which cost money. Run `terraform des
5858
| Name | Version |
5959
|------|---------|
6060
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
61-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.45 |
61+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.47 |
6262
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | >= 2.10 |
6363

6464
## Providers
6565

6666
| Name | Version |
6767
|------|---------|
68-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.45 |
68+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.47 |
6969

7070
## Modules
7171

examples/eks_managed_node_group/main.tf

+7
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ module "eks" {
6464
vpc-cni = {
6565
most_recent = true
6666
service_account_role_arn = module.vpc_cni_irsa.iam_role_arn
67+
configuration_values = jsonencode({
68+
env = {
69+
# Reference docs https://docs.aws.amazon.com/eks/latest/userguide/cni-increase-ip-addresses.html
70+
ENABLE_PREFIX_DELEGATION = true
71+
WARM_PREFIX_TARGET = 1
72+
}
73+
})
6774
}
6875
}
6976

examples/eks_managed_node_group/versions.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 4.45"
7+
version = ">= 4.47"
88
}
99
kubernetes = {
1010
source = "hashicorp/kubernetes"

examples/fargate_profile/README.md

+2-9
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,15 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.45 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.47 |
2424
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | >= 2.7 |
2525
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 3.0 |
2626

2727
## Providers
2828

2929
| Name | Version |
3030
|------|---------|
31-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.45 |
32-
| <a name="provider_helm"></a> [helm](#provider\_helm) | >= 2.7 |
33-
| <a name="provider_null"></a> [null](#provider\_null) | >= 3.0 |
31+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.47 |
3432

3533
## Modules
3634

@@ -44,12 +42,7 @@ Note that this example may create resources which cost money. Run `terraform des
4442
| Name | Type |
4543
|------|------|
4644
| [aws_iam_policy.additional](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource |
47-
| [helm_release.coredns](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
48-
| [null_resource.modify_kube_dns](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
49-
| [null_resource.remove_default_coredns_deployment](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
5045
| [aws_availability_zones.available](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones) | data source |
51-
| [aws_eks_addon_version.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_addon_version) | data source |
52-
| [aws_eks_cluster_auth.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster_auth) | data source |
5346

5447
## Inputs
5548

examples/fargate_profile/main.tf

+5-137
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,6 @@ provider "aws" {
22
region = local.region
33
}
44

5-
provider "helm" {
6-
kubernetes {
7-
host = module.eks.cluster_endpoint
8-
cluster_ca_certificate = base64decode(module.eks.cluster_certificate_authority_data)
9-
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-
}
17-
}
18-
195
data "aws_availability_zones" "available" {}
206

217
locals {
@@ -47,6 +33,11 @@ module "eks" {
4733
cluster_addons = {
4834
kube-proxy = {}
4935
vpc-cni = {}
36+
coredns = {
37+
configuration_values = jsonencode({
38+
computeType = "Fargate"
39+
})
40+
}
5041
}
5142

5243
vpc_id = module.vpc.vpc_id
@@ -105,129 +96,6 @@ module "eks" {
10596
tags = local.tags
10697
}
10798

108-
################################################################################
109-
# Modify EKS CoreDNS Deployment
110-
################################################################################
111-
112-
data "aws_eks_cluster_auth" "this" {
113-
name = module.eks.cluster_name
114-
}
115-
116-
locals {
117-
kubeconfig = yamlencode({
118-
apiVersion = "v1"
119-
kind = "Config"
120-
current-context = "terraform"
121-
clusters = [{
122-
name = module.eks.cluster_name
123-
cluster = {
124-
certificate-authority-data = module.eks.cluster_certificate_authority_data
125-
server = module.eks.cluster_endpoint
126-
}
127-
}]
128-
contexts = [{
129-
name = "terraform"
130-
context = {
131-
cluster = module.eks.cluster_name
132-
user = "terraform"
133-
}
134-
}]
135-
users = [{
136-
name = "terraform"
137-
user = {
138-
token = data.aws_eks_cluster_auth.this.token
139-
}
140-
}]
141-
})
142-
}
143-
144-
# Separate resource so that this is only ever executed once
145-
resource "null_resource" "remove_default_coredns_deployment" {
146-
triggers = {}
147-
148-
provisioner "local-exec" {
149-
interpreter = ["/bin/bash", "-c"]
150-
environment = {
151-
KUBECONFIG = base64encode(local.kubeconfig)
152-
}
153-
154-
# We are removing the deployment provided by the EKS service and replacing it through the self-managed CoreDNS Helm addon
155-
# However, we are maintaining the existing kube-dns service and annotating it for Helm to assume control
156-
command = <<-EOT
157-
kubectl --namespace kube-system delete deployment coredns --kubeconfig <(echo $KUBECONFIG | base64 --decode)
158-
EOT
159-
}
160-
}
161-
162-
resource "null_resource" "modify_kube_dns" {
163-
triggers = {}
164-
165-
provisioner "local-exec" {
166-
interpreter = ["/bin/bash", "-c"]
167-
environment = {
168-
KUBECONFIG = base64encode(local.kubeconfig)
169-
}
170-
171-
# We are maintaining the existing kube-dns service and annotating it for Helm to assume control
172-
command = <<-EOT
173-
echo "Setting implicit dependency on ${module.eks.fargate_profiles["kube_system"].fargate_profile_pod_execution_role_arn}"
174-
kubectl --namespace kube-system annotate --overwrite service kube-dns meta.helm.sh/release-name=coredns --kubeconfig <(echo $KUBECONFIG | base64 --decode)
175-
kubectl --namespace kube-system annotate --overwrite service kube-dns meta.helm.sh/release-namespace=kube-system --kubeconfig <(echo $KUBECONFIG | base64 --decode)
176-
kubectl --namespace kube-system label --overwrite service kube-dns app.kubernetes.io/managed-by=Helm --kubeconfig <(echo $KUBECONFIG | base64 --decode)
177-
EOT
178-
}
179-
180-
depends_on = [
181-
null_resource.remove_default_coredns_deployment
182-
]
183-
}
184-
185-
################################################################################
186-
# CoreDNS Helm Chart (self-managed)
187-
################################################################################
188-
189-
data "aws_eks_addon_version" "this" {
190-
for_each = toset(["coredns"])
191-
192-
addon_name = each.value
193-
kubernetes_version = module.eks.cluster_version
194-
most_recent = true
195-
}
196-
197-
resource "helm_release" "coredns" {
198-
name = "coredns"
199-
namespace = "kube-system"
200-
create_namespace = false
201-
description = "CoreDNS is a DNS server that chains plugins and provides Kubernetes DNS Services"
202-
chart = "coredns"
203-
version = "1.19.4"
204-
repository = "https://coredns.github.io/helm"
205-
206-
# For EKS image repositories https://docs.aws.amazon.com/eks/latest/userguide/add-ons-images.html
207-
values = [
208-
<<-EOT
209-
image:
210-
repository: 602401143452.dkr.ecr.eu-west-1.amazonaws.com/eks/coredns
211-
tag: ${data.aws_eks_addon_version.this["coredns"].version}
212-
deployment:
213-
name: coredns
214-
annotations:
215-
eks.amazonaws.com/compute-type: fargate
216-
service:
217-
name: kube-dns
218-
annotations:
219-
eks.amazonaws.com/compute-type: fargate
220-
podAnnotations:
221-
eks.amazonaws.com/compute-type: fargate
222-
EOT
223-
]
224-
225-
depends_on = [
226-
# Need to ensure the CoreDNS updates are performed before provisioning
227-
null_resource.modify_kube_dns
228-
]
229-
}
230-
23199
################################################################################
232100
# Supporting Resources
233101
################################################################################

examples/fargate_profile/versions.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 4.45"
7+
version = ">= 4.47"
88
}
99
helm = {
1010
source = "hashicorp/helm"

examples/karpenter/README.md

+3-9
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Note that this example may create resources which cost money. Run `terraform des
5252
| Name | Version |
5353
|------|---------|
5454
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
55-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.45 |
55+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.47 |
5656
| <a name="requirement_helm"></a> [helm](#requirement\_helm) | >= 2.7 |
5757
| <a name="requirement_kubectl"></a> [kubectl](#requirement\_kubectl) | >= 1.14 |
5858
| <a name="requirement_kubernetes"></a> [kubernetes](#requirement\_kubernetes) | >= 2.10 |
@@ -62,11 +62,10 @@ Note that this example may create resources which cost money. Run `terraform des
6262

6363
| Name | Version |
6464
|------|---------|
65-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.45 |
66-
| <a name="provider_aws.virginia"></a> [aws.virginia](#provider\_aws.virginia) | >= 4.45 |
65+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.47 |
66+
| <a name="provider_aws.virginia"></a> [aws.virginia](#provider\_aws.virginia) | >= 4.47 |
6767
| <a name="provider_helm"></a> [helm](#provider\_helm) | >= 2.7 |
6868
| <a name="provider_kubectl"></a> [kubectl](#provider\_kubectl) | >= 1.14 |
69-
| <a name="provider_null"></a> [null](#provider\_null) | >= 3.0 |
7069

7170
## Modules
7271

@@ -80,17 +79,12 @@ Note that this example may create resources which cost money. Run `terraform des
8079

8180
| Name | Type |
8281
|------|------|
83-
| [helm_release.coredns](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
8482
| [helm_release.karpenter](https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release) | resource |
8583
| [kubectl_manifest.karpenter_example_deployment](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
8684
| [kubectl_manifest.karpenter_node_template](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
8785
| [kubectl_manifest.karpenter_provisioner](https://registry.terraform.io/providers/gavinbunney/kubectl/latest/docs/resources/manifest) | resource |
88-
| [null_resource.modify_kube_dns](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
89-
| [null_resource.remove_default_coredns_deployment](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
9086
| [aws_availability_zones.available](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/availability_zones) | data source |
9187
| [aws_ecrpublic_authorization_token.token](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ecrpublic_authorization_token) | data source |
92-
| [aws_eks_addon_version.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_addon_version) | data source |
93-
| [aws_eks_cluster_auth.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/eks_cluster_auth) | data source |
9488

9589
## Inputs
9690

0 commit comments

Comments
 (0)