能否为Amazon EKS集群配置自定义FQDN适配DNS VPN环境?
解决EKS kubeconfig自动替换域名的方案
一、用脚本/别名自动替换kubeconfig中的域名
aws eks update-kubeconfig没有原生支持自定义server域名的参数,但可以通过执行命令后自动替换字段来实现:
- 直接执行组合命令
每次更新kubeconfig后,用sed替换默认的EKS域名:
# 更新kubeconfig aws eks update-kubeconfig --cluster-name <你的集群名称> --kubeconfig ~/.kube/config # 替换为自定义Route53域名 sed -i.bak 's/https:\/\/.*\.eks\.amazonaws\.com/https:\/\/<你的自定义域名>/' ~/.kube/config
-i.bak会备份原kubeconfig文件,避免修改出错。
- 配置shell别名简化操作
在~/.bashrc或~/.zshrc中添加别名,一键完成更新和替换:
alias update-eks-config='aws eks update-kubeconfig --cluster-name <你的集群名称> --kubeconfig ~/.kube/config && sed -i.bak "s/https:\/\/.*\.eks\.amazonaws\.com/https:\/\/<你的自定义域名>/" ~/.kube/config'
保存后执行source ~/.bashrc(或对应shell的配置文件),之后只需运行update-eks-config即可自动完成操作。
二、自动化Route53 CNAME记录更新(适配蓝绿部署)
蓝绿部署导致集群server域名频繁变更时,无需手动维护Route53记录,可通过脚本自动更新:
- 获取新集群的endpoint地址
NEW_CLUSTER_ENDPOINT=$(aws eks describe-cluster --name <新集群名称> --query "cluster.endpoint" --output text) # 去掉前缀的https://,只保留域名部分 TARGET_DOMAIN=${NEW_CLUSTER_ENDPOINT#https://}
- 更新Route53的CNAME记录
aws route53 change-resource-record-sets --hosted-zone-id <你的Route53托管区ID> --change-batch '{ "Comment": "更新EKS集群端点", "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "<你的自定义域名>", "Type": "CNAME", "TTL": 300, "ResourceRecords": [ { "Value": "'$TARGET_DOMAIN'" } ] } } ] }'
将此脚本集成到蓝绿部署的流程中,切换集群后自动执行,确保自定义域名始终指向当前活跃的EKS集群。
总结
EKS原生不支持直接配置自定义域名作为集群端点,但通过shell脚本/别名自动替换kubeconfig字段 + 自动化Route53记录更新,可以完全替代手动操作,适配VPN路由限制和蓝绿部署的场景。
内容的提问来源于stack exchange,提问作者Liz
相关产品推荐
相关产品推荐

