以下是使用新创建的 kubernetes LoadBalancer Ingress URL 中的值更新 aws route53 资源记录类型 A 所需的逻辑
第 1 步 - 通过发出来识别您的托管区域 ID
aws route53 list-hosted-zones
...这里的输出是我的域的剪辑
"Id": "/hostedzone/Z3II3949ZDMDXV",
...重要的是,永远不要使用 Hostedzone Z3II3949ZDMDXV 填充 json,它仅用作 cli parm ...还有第二个类似命名的令牌 HostedZoneId ,它完全不同
步骤 2 - 查看您的 Route53 域记录的当前值...问题:
aws route53 list-resource-record-sets --hosted-zone-id Z3II3949ZDMDXV --query "ResourceRecordSets[?Name == 'scottstensland.com.']"
... 输出
[
{
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"EvaluateTargetHealth": false,
"DNSName": "dualstack.asomepriorvalue39e7db-1867261689.us-east-1.elb.amazonaws.com."
},
"Type": "A",
"Name": "scottstensland.com."
},
{
"ResourceRecords": [
{
"Value": "ns-1238.awsdns-26.org."
},
{
"Value": "ns-201.awsdns-25.com."
},
{
"Value": "ns-969.awsdns-57.net."
},
{
"Value": "ns-1823.awsdns-35.co.uk."
}
],
"Type": "NS",
"Name": "scottstensland.com.",
"TTL": 172800
},
{
"ResourceRecords": [
{
"Value": "ns-1238.awsdns-26.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400"
}
],
"Type": "SOA",
"Name": "scottstensland.com.",
"TTL": 900
}
]
...在上述通知值中
"HostedZoneId": "Z35SXDOTRQ7X7K",
这是第二个类似名称的标记不要使用错误的托管区域 ID
步骤 3 - 将以下内容放入更改文件 aws_route53_type_A.json(有关语法文档,请参阅上面评论中提到的链接) https://oliverhelm.me/sys-admin/updating-aws-dns-records-from-cli
{
"Comment": "Update record to reflect new DNSName of fresh deploy",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"EvaluateTargetHealth": false,
"DNSName": "dualstack.a0b82c81f47d011e6b98a0a28439e7db-1867261689.us-east-1.elb.amazonaws.com."
},
"Type": "A",
"Name": "scottstensland.com."
}
}
]
}
要识别上述字段“DNSName”的值...在 aws 上部署 kubernetes 应用程序后,它会使用 LoadBalancer Ingress 进行响应,如 cli 命令的输出所示:
kubectl describe svc --namespace=ruptureofthemundaneplane
...如
LoadBalancer Ingress: a0b82c81f47d011e6b98a0a28439e7db-1867261689.us-east-1.elb.amazonaws.com
...即使我的目标是执行命令行调用,我也可以通过进入 aws 控制台浏览器手动执行此操作...在route53上提取我的域...
...在这个浏览器选项列表可编辑文本框(以绿色圈出)中,我注意到 URL 神奇地以 :dualstack 开头。以前我错过了那个神奇的字符串......所以 json 键“DNSName”想要这个
dualstack.a0b82c81f47d011e6b98a0a28439e7db-1867261689.us-east-1.elb.amazonaws.com.
最后执行变更请求
aws route53 change-resource-record-sets --hosted-zone-id Z3II3949ZDMDXV --change-batch file://./aws_route53_type_A.json
... 输出
{
"ChangeInfo": {
"Status": "PENDING",
"Comment": "Update record to reflect new DNSName of fresh deploy",
"SubmittedAt": "2016-07-13T14:53:02.789Z",
"Id": "/change/CFUX5R9XKGE1C"
}
}
....现在确认更改是否实时运行以显示记录
aws route53 list-resource-record-sets --hosted-zone-id Z3II3949ZDMDXV