Skip to main content
Version: 1.28.0

IAM for AWS external-dns

This terraform module provides an easy way to generate external-dns (public and private) required IAM permissions.

⚠️ Warning: this module uses "IAM Roles for ServiceAccount" to inject AWS credentials inside cluster autoscaler pods.

Requirements

NameVersion
terraform>= 0.15.4
aws>= 3.37.0

Providers

NameVersion
aws>= 3.37.0

Modules

NameSourceVersion
external_dns_private_iam_assumable_roleterraform-aws-modules/iam/aws//modules/iam-assumable-role-with-oidcv3.16.0
external_dns_public_iam_assumable_roleterraform-aws-modules/iam/aws//modules/iam-assumable-role-with-oidcv3.16.0

Resources

NameType
aws_iam_policy.external_dns_privateresource
aws_iam_policy.external_dns_publicresource
aws_eks_cluster.thisdata source

Inputs

NameDescriptionTypeDefaultRequired
cluster_nameEKS cluster namestringn/ayes
private_zone_idRoute53 private zone IDstring""no
enable_privateFlag to enable the creation for the private IAM roleboolfalseno
public_zone_idRoute53 public zone IDstringn/ayes
tagsAdditional tags for the created resourcesmap(string){}no

Outputs

NameDescription
external_dns_private_iam_role_arnexternal-dns-private IAM role
external_dns_private_patchesexternal-dns-private Kubernetes resources patches
external_dns_public_iam_role_arnexternal-dns-public IAM role
external_dns_public_patchesexternal-dns-public Kubernetes resources patches

Usage

module "external_dns_iam_role" {
source = "../vendor/modules/ingress/aws-external-dns"
cluster_name = "myekscluster"
public_zone_id = "Z1BM4RA99PG48O"
private_zone_id = "Z1BM4RA99PG499"
enable_private = true
tags = {"mykey": "myvalue"}
}