Bitnami external-dns删除Ingress后未同步删除Route53记录问题咨询
删除机制说明
External DNS的记录删除触发逻辑如下:
- 每轮同步周期(你配置的1分钟)时,组件会遍历所有被它监听的K8s资源(Ingress、Service、Gateway等),生成当前期望的DNS记录列表
- 同时拉取对应Route53托管区中所有带有它专属TXT owner标识的记录
- 对比两个列表:如果Route53中存在的记录不在期望列表中,且属于它管理的记录,就会触发删除操作
配置错误原因
核心问题是你安装时没有显式配置同步策略,bitnami/external-dns Helm chart默认的policy参数值为upsert-only,该模式下组件仅允许创建、更新DNS记录,禁止执行删除操作,这就是你删除Ingress后Route53记录没有被清理的根因。
其他可能的配置问题排查项:
- IAM权限不足:External DNS使用的AWS IAM角色/凭证必须包含
route53:ChangeResourceRecordSets权限,且资源范围覆盖你的Route53托管区ARN - 未配置owner标识:如果没有设置
txtOwnerId参数,组件无法识别哪些记录是自己创建的,为了避免误删不属于自己的记录,默认不会执行删除操作 - 域名过滤规则:如果你配置了
domainFilters等过滤参数,删除时该域名不在匹配范围内也会被跳过
修复方法
- 升级External DNS配置,开启同步模式:
helm upgrade extdns bitnami/external-dns \ --set provider=aws \ --set interval=1m \ --set logLevel=debug \ --set policy=sync \ --set txtOwnerId=eks-extdns-cluster1
建议设置唯一的owner标识,避免和其他环境的External DNS冲突
- 确认External DNS关联的IAM策略包含以下权限:
{ "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets" ], "Resource": [ "arn:aws:route53:::hostedzone/你的托管区ID" ] }
- 若此前创建的记录没有对应TXT owner记录,可手动删除一次历史记录,后续新创建的Ingress对应的DNS记录,在Ingress删除后就会被自动清理。
内容的提问来源于stack exchange,提问作者Marc Enschede
相关产品推荐
相关产品推荐

