我目前正在尝试更改项目中的部署模型,以便可以使用 ARM 模板部署现有的 Service Fabric 应用程序并在 Azure 中启用托管标识。
在此过程中,我必须在应用程序清单上配置托管标识:
<ManagedIdentities>
<ManagedIdentity Name="SystemAssigned" />
</ManagedIdentities>
并向每个服务添加身份绑定策略,如下所示:
<Policies>
<IdentityBindingPolicy ServiceIdentityRef="KeyVaultUser" ApplicationIdentityRef="SystemAssigned" />
</Policies>
如果我将此应用程序清单部署到 Azure,我没有问题。但是,本地情况完全不同,因为现在我无法部署到本地开发集群,这是部署脚本的日志:
>Application package is registered.
>Removing application package from image store...
>Remove application package succeeded
>Creating application...
>New-ServiceFabricApplication : Application managed identity PrincipalId cannot be null or empty.
>FileName: ManagedApplicationIdentity
>At C:\Program Files\Microsoft SDKs\Service
>Fabric\Tools\PSModule\ServiceFabricSDK\Publish-NewServiceFabricApplication.ps1:466 char:3
>+ New-ServiceFabricApplication -ApplicationName $ApplicationNam ...
>+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> + CategoryInfo : InvalidOperation: (Microsoft.Servi...usterConnection:ClusterConnection) [New-ServiceFabr
> icApplication], FabricException
> + FullyQualifiedErrorId : CreateApplicationInstanceErrorId,Microsoft.ServiceFabric.Powershell.NewApplication
>
>Finished executing script 'Deploy-FabricApplication.ps1'.
据我调查,无法使用服务 ARM 定义添加身份绑定策略,因此需要在清单中。
关于如何克服这个问题并能够同时部署到 Azure 和本地集群的任何想法?