问题描述
在中国区微软云Azure上使用Service Fabrics服务,本地通过Visual Studio 2022的发布.NET应用,发现无法发布!

在搜寻官方文档之后,可以通过PowerShell命令来进行发布。本文参考的文档如下:
1:将应用程序部署到 Service Fabric 群集 (https://docs.azure.cn/zh-cn/service-fabric/scripts/service-fabric-powershell-deploy-application)
2:使用 PowerShell 部署和删除应用程序(https://docs.azure.cn/zh-cn/service-fabric/service-fabric-deploy-remove-applications)
需要使用到的PowerShell脚本如下:
# Login China Azure
Connect-AzAccount -Environment AzureChinaCloud
# set your default subscription
Select-AzSubscription -Subscription 'xx-x-x-x-xxx'
# Variables
$endpoint = 'mysftestcluster.chinaeast.cloudapp.chinacloudapi.cn:19000'
#获取SF托管集群的服务证书指纹
$serverThumbprint = (Get-AzResource -ResourceId /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.ServiceFabric/managedclusters/mysfcluster)
.Properties.clusterCertificateThumbprints
$clientThumbprint = '2779F0BB9A969FB88E04915FFE7955D0389DA7AF'
$packagepath="C:\....\Projects\MyApplication\MyApplication\pkg\Release"
##连接到SF托管集群
Connect-ServiceFabricCluster -ConnectionEndpoint $endpoint -KeepAliveIntervalInSec 10 `
-X509Credential `
-ServerCertThumbprint $serverThumbprint `
-FindType FindByThumbprint `
-FindValue $clientThumbprint `
-StoreLocation CurrentUser `
-StoreName My
# Copy the application package to the cluster image store.
Copy-ServiceFabricApplicationPackage $packagepath -ApplicationPackagePathInImageStore MyApplication
# Register the application type.
Register-ServiceFabricApplicationType -ApplicationPathInImageStore MyApplication
# list application type in SF Cluster
Get-ServiceFabricApplicationType
# Create the application instance.
New-ServiceFabricApplication -ApplicationName fabric:/MySFApp02 -ApplicationTypeName myApp02Type -ApplicationTypeVersion 1.0.0
本文通过图文方式来一步一步展示 部署过程!
问题解答
按照以上脚本,登录到China Azure后,最重要的操作是如何使用 Connect-ServiceFabricCluster 连接到SF托管集群。
PS: SF托管集群和自建集群在这里的区别主要是服务器证书指纹需要通过命令获取。而自建集群的服务证书指纹(serverThumbprint)和客户端证书指纹(clientThumbprint)是相同的。
当然,也可以直接在门户中同时获取这两个证书指纹值(Azure 门户 --> SF Overview页面 --> JSON View -> 查看 Properties 值)

准备好参数后,开始一步一步部署SF应用!
第一步:在Visual Studio 2022中打包应用部署包
- 右键,选择Package, 在输出结果中复制应用包路径

第二步:连接到SF集群,上传部署包,并在Service Fabric Explorer中查看
PS: SF Explorer地址:https://<your sf cluster name>.<chinanorth3>.cloudapp.chinacloudapi.cn:19080/Explorer,在打开页面时需要验证本地证书,所以需要在本地环境中安装客户端证书(创建集群时候所设置的证书)。

第三步:注册并创建应用实例并启动服务
- Register-ServiceFabricApplicationType : 在群集上注册应用程序类型和版本。
- Get-ServiceFabricApplicationType : 获取集群上已经注册的应用程序类型 和版本。
- New-ServiceFabricApplication : 从注册的应用程序类型创建应用程序。

特别注意:还差最后一步让服务运行起来。
进入SF explorer页面中,选择第三步创建的Application,在Service Types部分中,点击Create后,才能让服务正真的运行起来。

当应用中的服务状态变为OK后,即是成功!
PS: 此种方式,确实比Visual Studio 2022的直接部署步骤复杂很多。
参考资料
将应用程序部署到 Service Fabric 群集 (https://docs.azure.cn/zh-cn/service-fabric/scripts/service-fabric-powershell-deploy-application)
使用 PowerShell 部署和删除应用程序(https://docs.azure.cn/zh-cn/service-fabric/service-fabric-deploy-remove-applications)