mirror of
https://github.com/Telecominfraproject/wlan-cloud-terraform.git
synced 2025-10-30 18:18:02 +00:00
84 lines
1.9 KiB
HCL
84 lines
1.9 KiB
HCL
module "external_dns_cluster_role" {
|
|
source = "git::https://github.com/terraform-aws-modules/terraform-aws-iam.git//modules/iam-assumable-role-with-oidc?ref=v3.7.0"
|
|
role_name = "${module.eks.cluster_id}-external-dns"
|
|
provider_url = local.oidc_provider_url
|
|
role_policy_arns = [aws_iam_policy.external_dns.arn]
|
|
create_role = true
|
|
tags = var.tags
|
|
}
|
|
|
|
resource "aws_iam_policy" "external_dns" {
|
|
name_prefix = "external-dns"
|
|
description = "EKS external-dns policy for cluster ${var.name}"
|
|
policy = data.aws_iam_policy_document.external_dns.json
|
|
}
|
|
|
|
data "aws_iam_policy_document" "external_dns" {
|
|
statement {
|
|
sid = "GrantModifyAccessToDomains"
|
|
|
|
actions = [
|
|
"route53:ChangeResourceRecordSets",
|
|
]
|
|
|
|
effect = "Allow"
|
|
|
|
resources = [
|
|
"arn:aws:route53:::hostedzone/${data.aws_route53_zone.cloudsdk.zone_id}",
|
|
]
|
|
}
|
|
|
|
statement {
|
|
sid = "GrantListAccessToDomains"
|
|
|
|
actions = [
|
|
"route53:ListHostedZones",
|
|
"route53:ListResourceRecordSets",
|
|
]
|
|
|
|
effect = "Allow"
|
|
|
|
resources = ["*"]
|
|
}
|
|
}
|
|
|
|
data "aws_region" "current" {}
|
|
|
|
resource "helm_release" "external-dns" {
|
|
name = "external-dns"
|
|
repository = "https://charts.bitnami.com/bitnami"
|
|
chart = "external-dns"
|
|
version = "4.5.5"
|
|
namespace = "kube-system"
|
|
|
|
set {
|
|
name = "podAnnotations.iam\\.amazonaws\\.com/role"
|
|
value = module.external_dns_cluster_role.this_iam_role_arn
|
|
}
|
|
|
|
set {
|
|
name = "serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn"
|
|
value = module.external_dns_cluster_role.this_iam_role_arn
|
|
}
|
|
|
|
set {
|
|
name = "aws.region"
|
|
value = data.aws_region.current.name
|
|
}
|
|
|
|
set {
|
|
name = "txtOwnerId"
|
|
value = "/hostedzone/${data.aws_route53_zone.cloudsdk.zone_id}"
|
|
}
|
|
|
|
set {
|
|
name = "domainFilters"
|
|
value = "{${var.route53_zone_name}}"
|
|
}
|
|
|
|
set {
|
|
name = "policy"
|
|
value = "sync"
|
|
}
|
|
}
|