求助:Google Deployment Manager删除DNS TXT记录时误删A记录如何解决
解决Deployment Manager删除DNS TXT记录时误删A记录的问题
我之前在使用GCP Deployment Manager管理DNS记录时也碰到过一模一样的坑!当你从模板里移除TXT记录后执行更新,Deployment Manager会连带删掉同域名下的A记录,这是因为它处理DNS资源记录集的逻辑有个容易忽略的细节:
问题原因
Deployment Manager对gcp-types/dns-v1:resourceRecordSets资源的识别,会把同一域名下的不同记录类型当成关联资源组。当你移除其中一个记录类型的资源定义时,它会先删除该域名下所有现有记录,再重新部署模板里剩下的记录——这就导致你的A记录被误删了。
解决方案:精准删除单个资源再更新模板
要只删除TXT记录而保留其他记录,你需要分两步操作:
单独删除目标TXT记录对应的资源
先用命令精准删除那个TXT记录的资源(就是你模板里命名为domainorgsgverrs的资源),这个操作不会影响其他DNS记录:gcloud deployment-manager resources delete domainorgsgverrs --deployment dns修改模板并更新部署
编辑你的domainorg.jinja模板,移除TXT记录的资源块,然后正常执行更新命令:gcloud deployment-manager deployments update dns --config dns.yaml
长期避坑建议
为了避免以后再出现这类问题,在定义DNS记录资源时:
- 给每个
resourceRecordSets资源起一个和记录类型强关联的唯一名称(比如你的domainorgsgverrs就很清晰,对应domain.org的google验证TXT记录),让Deployment Manager能明确区分不同的记录资源。 - 不要依赖模板更新自动删除单个记录类型,优先用
gcloud deployment-manager resources delete命令单独移除目标资源,再同步模板配置。
内容的提问来源于stack exchange,提问作者Eugeniy
相关产品推荐
相关产品推荐

