如何在VSTS托管代理中配置Service Fabric集群域名映射?
解决VSTS托管代理连接Service Fabric集群的域名解析问题
没问题,我来帮你搞定这个托管代理上的hosts配置问题,这样就能用域名mydomain.net连接你的Service Fabric集群,避免证书认证失败的错误。
核心思路
你的Service Fabric证书是绑定到mydomain.net域名的,直接用IP连接时,证书里的身份标识和IP不匹配,所以才会出现Failed to authenticate server identity错误。我们需要在VSTS托管代理上临时修改hosts文件,让mydomain.net指向集群的公网IP,和你本地电脑的操作逻辑完全一致。
具体步骤
在VSTS发布管道中新增PowerShell任务
在部署Service Fabric应用的任务之前,添加一个PowerShell任务——这个任务必须以管理员权限运行,因为修改系统hosts文件需要权限。编写修改hosts的PowerShell脚本
把下面的脚本复制到任务的脚本输入框里,替换[你的集群虚拟机公网IP]为实际的IP地址:$hostsPath = "C:\Windows\System32\drivers\etc\hosts" $targetIp = "[你的集群虚拟机公网IP]" $targetDomain = "mydomain.net" # 检查hosts文件中是否已经存在该域名条目,避免重复添加 $existingEntry = Get-Content $hostsPath | Where-Object { $_ -match "\s+$targetDomain$" } if (-not $existingEntry) { # 添加IP和域名的映射,用制表符分隔 Add-Content $hostsPath "$targetIp`t$targetDomain" -Force Write-Host "成功添加 $targetIp -> $targetDomain 到hosts文件" } else { Write-Host "hosts文件中已经存在 $targetDomain 的映射条目" }保持Service Fabric部署任务的参数不变
部署任务的连接参数和你本地PowerShell的配置完全一致即可:- Connection Endpoint:
mydomain.net:19000 - 认证方式选择X509证书,填入对应的证书指纹、存储位置等参数
- Connection Endpoint:
这样一来,托管代理在运行时会通过hosts文件把mydomain.net解析到你的集群公网IP,同时证书认证时能匹配域名,自然就能成功连接集群了。
内容的提问来源于stack exchange,提问作者SteppingRazor
相关产品推荐
相关产品推荐

