gpt4 book ai didi

amazon-web-services - 如何将 kubernetes LoadBalancer Ingress URL 发布到 aws route53

转载 作者:行者123 更新时间:2023-12-04 20:34:33 27 4
gpt4 key购买 nike

今天,当我通过 aws 使用 kubernetes 启动一个应用程序时,它会公开一个公开可见的 LoadBalancer Ingress URL,但是要将其链接到我的域以使该应用程序可供公众访问,我需要在每个浏览器中手动进入 aws route53 控制台发射。我可以从命令行更新 aws route53 资源类型 A 以匹配最新的 Kubernetes LoadBalancer Ingress URL 吗?

gcloud 上的 Kubernetes 共享这一挑战,即必须预先定义在启动配置中使用的静态 IP,或者在启动后手动执行基于浏览器的域链接。在 aws 上,我希望我可以从命令行使用类似的东西

aws route53domains update-domain-nameservers   ???

__ 或 __ 我可以预定义一个 aws kubernetes LoadBalancer Ingress 类似于在 gcloud 上执行预定义的静态 IP 吗?

显示已部署应用程序的 LoadBalancer Ingress URL 问题
kubectl describe svc

... 输出
Name:           aaa-deployment-407
Namespace: ruptureofthemundaneplane
Labels: app=bbb
pod-template-hash=4076262206
Selector: app=bbb,pod-template-hash=4076262206
Type: LoadBalancer
IP: 10.0.51.82
LoadBalancer Ingress: a244bodhisattva79c17cf7-61619.us-east-1.elb.amazonaws.com
Port: port-1 80/TCP
NodePort: port-1 32547/TCP
Endpoints: 10.201.0.3:80
Port: port-2 443/TCP
NodePort: port-2 31248/TCP
Endpoints: 10.201.0.3:443
Session Affinity: None
No events.

更新:

尝试新的命令行技术时出错(@error2007s 评论的帽子提示)......发出这个
aws route53 list-hosted-zones

... 输出
{
"HostedZones": [
{
"ResourceRecordSetCount": 6,
"CallerReference": "2D58A764-1FAC-DEB4-8AC7-AD37E74B94E6",
"Config": {
"PrivateZone": false
},
"Id": "/hostedzone/Z3II3949ZDMDXV",
"Name": "chainsawhaircut.com."
}
]
}

下面使用的重要位:hostedzone Z3II3949ZDMDXV

现在我制作以下 using this Doc (and this Doc as well)作为文件/change-resource-record-sets.json (注意我可以使用类似的 cli 调用成功更改类型 A ......但是我需要使用 LoadBalancer Ingress URL 的别名目标更改类型 A)
{
"Comment": "Update record to reflect new IP address of fresh deploy",
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "chainsawhaircut.com.",
"Type": "A",
"TTL": 60,
"AliasTarget": {
"HostedZoneId": "Z3II3949ZDMDXV",
"DNSName": "a244bodhisattva79c17cf7-61619.us-east-1.elb.amazonaws.com",
"EvaluateTargetHealth": false
}
}
}]
}

在命令行我然后发出

aws route53 change-resource-record-sets --hosted-zone-id Z3II3949ZDMDXV --change-batch file:///change-resource-record-sets.json

这给出了这个错误信息
An error occurred (InvalidInput) when calling the ChangeResourceRecordSets operation: Invalid request

任何见解?

最佳答案

这是使用来自新生成的 kubernetes LoadBalancer Ingress URL 的值更新 aws route53 资源记录类型 A 所需的逻辑

第 1 步 - 通过发出识别您的托管区域 ID

aws route53 list-hosted-zones

...从这里的输出是我的域的剪辑
"Id": "/hostedzone/Z3II3949ZDMDXV", 

...重要的是,永远不要用hostedzone Z3II3949ZDMDXV填充json,它仅用作cli参数...还有第二个类似命名的 token 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
}
]

...在上述通知值(value)
"HostedZoneId": "Z35SXDOTRQ7X7K", 

这是第二个类似名称的 token 不要使用错误的托管区域 ID

第 3 步 - 将下面放入您的更改文件 aws_route53_type_A.json (for syntax Doc see link mentioned in comment above)
{
"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 上拉出我的域 ...

Notice the green circle where the correct value of my LoadBalancer Ingress URL will auto appear in a self populating picklist (thanks aws)

...在这个浏览器选择列表可编辑文本框(绿色圆圈)中,我注意到 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  

关于amazon-web-services - 如何将 kubernetes LoadBalancer Ingress URL 发布到 aws route53,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38275179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com