現在、プロジェクトのデプロイ モデルを変更して、ARM テンプレートを使用して既存の Service Fabric アプリケーションをデプロイし、Azure でマネージド ID を有効にできるようにしようとしています。
このプロセス中に、アプリケーション マニフェストでマネージド ID を構成する必要がありました。
<ManagedIdentities>
<ManagedIdentity Name="SystemAssigned" />
</ManagedIdentities>
次のように、各サービスに ID バインディング ポリシーを追加します。
<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 定義を使用して ID バインディング ポリシーを追加する方法はないため、それらをマニフェストに含める必要があります。
この問題を克服し、Azure クラスターとローカル クラスターの両方にデプロイできるようにする方法について何かアイデアはありますか?