我在带有EKS和外部DNS的AWS中使用Ingress-Nginx-ingress-controller运行K8S集群。应用程序运行正常,可以在负载均衡器上访问。现在,我试图将我的DNS指向该群集,即e1.exapmle.com,为此,我在关注以下文档。
https://github.com/kubernetes-sigs/external-dns
我面临的问题是,我有两个AWS帐户(QA,Staging),并且在登台帐户中创建了托管区域,并且群集在QA帐户上运行。我已经尝试使用跨帐户IAM角色来使其正常工作,但是我只能通过Web控制台看到托管区域,cli或外部DNS pods 无法与Route53通信。
到目前为止,这是我所做的:
创建IAM策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:ChangeResourceRecordSets"
],
"Resource": [
"arn:aws:route53:::hostedzone/*"
]
},
{
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
"route53:ListResourceRecordSets"
],
"Resource": [
"*"
]
}
]
}
创建一个跨帐户IAM角色,以信任帐户登台和受信任的帐户质量检查。通过为上述策略指定IAM角色ARN,在受信任帐户中创建策略。
通过上述操作,我仅在切换角色时设法通过Web控制台查看托管区域。
最佳答案
我假设您向extern-dns pod提供了EKS帐户中角色的角色信息,该角色允许您在HostedZone帐户中扮演角色!
这是行不通的,因为这样(就像在控制台内一样),您需要显式地承担具有现有权限的角色。
您需要将带有附加的route53策略的跨帐户角色直接传递到外部DNS pods 。
Pod->在其他帐户中扮演角色->接收临时工。证书
pod->在eks帐户中担任角色(->允许担任交叉帐户角色)
我猜最后一步不会发生
关于amazon-web-services - Kubernetes Route53 external-dns问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64502063/