我对Service Fabric还是相当陌生,所以我不确定这是cmdlet的问题还是我错过了。我正在使用2.0.2版的Az.ServiceFabric模块和3.8.0版的Az模块。
我正在尝试使用Add-AzServiceFabricClusterCertificate cmdlet将已经在Azure KeyVault中创建的辅助证书添加到群集中。当我运行cmdlet时,它将失败并显示此错误(使用Debug运行会给我提供更多的堆栈详细信息):
DEBUG: AzureQoSEvent: CommandName - Add-AzServiceFabricClusterCertificate; IsSuccess - False; Duration -
00:00:07.3059582;; Exception - System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Azure.Commands.ServiceFabric.Commands.ServiceFabricClusterCmdlet.GetClusterType(Cluster
clusterResource)
at Microsoft.Azure.Commands.ServiceFabric.Commands.AddAzureRmServiceFabricClusterCertificate.ExecuteCmdlet()
at Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord();
[查看此cmdlet的代码,我注意到它可能会失败,因为传递给GetClusterType的群集资源没有其Certificate成员,因此当它尝试检查Certificate.Thumbprint和Certificate.ThumbprintSecondary时,它会失败:] >
internal ClusterType GetClusterType(Cluster clusterResource) { if (string.IsNullOrWhiteSpace(clusterResource.Certificate.Thumbprint) && string.IsNullOrWhiteSpace(clusterResource.Certificate.ThumbprintSecondary)) { return ClusterType.Unsecure; } else { return ClusterType.Secure; } }
传递给GetClusterType的群集的获取方式与Get-AzServiceFabricCluster cmdlet相同,因此,当我为要向其添加证书的群集运行该cmdlet时,我注意到我的Certificate字段是在响应中为空。我猜这就是导致NullRef异常的原因。这是相关的代码段:
AzureActiveDirectory : TenantId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ClusterApplication : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ClientApplication : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Certificate : CertificateCommonNames : Microsoft.Azure.Management.ServiceFabric.Models.ServerCertificateCommonNames ClientCertificateCommonNames : ClientCertificateThumbprints :
我想知道当我使用Get-AzServiceFabricCluster cmdlet时,证书字段是否为空,而这是否确实是我的Add-AzServiceFabricClusterCertsterate cmdlet失败的原因。当我在Azure Portal中查看群集的“安全性”刀片时,确实看到了最初用来创建群集的“主群集证书”,这是我在部署和执行其他群集操作时使用的证书。但是,我确实注意到从门户查看证书时,证书指纹字段为空。我希望在使用Get-AzServiceFabricCluster时看到此证书,但是它空了。我的Get-AzServiceFabricCluster cmdlet中缺少此证书是否可以通过门户或其他cmdlet进行修复?
我对Service Fabric还是相当陌生,所以我不确定这是cmdlet的问题还是我错过了。我正在使用2.0.2版的Az.ServiceFabric模块和3.8.0版的Az模块。 ...
看来您的集群已配置为通过通用名称而不是指纹来查找证书。我猜这是基于您的门户网站除了您已发布的摘录之外没有显示针对证书的指纹的事实。