既存の Service Fabric クラスターでマネージド ID のサポートを構成する
Service Fabric アプリケーションで Azure リソースのマネージド ID を使用するには、まずクラスターでマネージド ID トークン サービスを有効にします。 このサービスは、マネージド ID を使用して Service Fabric アプリケーションの認証を実行し、アクセス トークンを代理で取得します。 サービスが有効になると、Service Fabric Explorer の左側のウィンドウの [システム] セクションに表示され、fabric:/System/ManagedIdentityTokenService という名前で実行されます。
Note
マネージド ID トークン サービスを有効にするには、Service Fabric ランタイム バージョン 6.5.658.9590 以降が必要です。
クラスターの Service Fabric バージョンを調べるには、Azure portal からクラスター リソースを開き、 [Essentials](基本) セクションで [Service Fabric バージョン] プロパティを確認します。
クラスターが [手動] アップグレード モードの場合、最初に 6.5.658.9590 以降にアップグレードする必要があります。
既存のクラスターで "マネージド ID トークン サービス" を有効にする
既存のクラスターでマネージド ID トークン サービスを有効にするには、2 つの変更を指定してクラスターのアップグレードを開始する必要があります。(1) マネージド ID トークン サービスを有効化し、(2) 各ノードの再起動を要求します。 まず、クラスターの Azure Resource Manager テンプレートに次のスニペットを追加します。
"fabricSettings": [
{
"name": "ManagedIdentityTokenService",
"parameters": [
{
"name": "IsEnabled",
"value": "true"
}
]
}
]
また、変更を有効にするには、アップグレード ポリシーを変更し、クラスターでアップグレードが進行するのに合わせて各ノードで Service Fabric ランタイムを強制的に再起動するよう指定する必要があります。 この再起動により、新たに有効になったシステム サービスが各ノードで確実に開始および実行されます。 次のスニペットで、forceRestart
は、再起動を有効にするための必須の設定です。 残りのパラメーターについては、以下で説明する値を使用するか、またはクラスター リソースに既に使用されている既存のカスタム値を使用します。 ファブリックのアップグレード ポリシー ('upgradeDescription') のカスタム設定は、Azure portal で Service Fabric リソースの [ファブリックのアップグレード] オプションを選択することで表示でき、また resources.azure.com でも表示できます。 アップグレード ポリシー ('upgradeDescription') の既定のオプションは、PowerShell または resources.azure.com では表示できません。 詳細については、「ClusterUpgradePolicy」 を参照してください。
"upgradeDescription": {
"forceRestart": true,
"healthCheckRetryTimeout": "00:45:00",
"healthCheckStableDuration": "00:05:00",
"healthCheckWaitDuration": "00:05:00",
"upgradeDomainTimeout": "02:00:00",
"upgradeReplicaSetCheckTimeout": "1.00:00:00",
"upgradeTimeout": "12:00:00"
}
注意
アップグレードが正常に完了したら、forceRestart
の設定をロールバックすることを忘れないでください。これにより、以降のアップグレードの影響を最小限に抑えることができます。
エラーとトラブルシューティング
デプロイが失敗し、次のメッセージが表示された場合は、十分に新しいバージョンの Service Fabric がクラスターで実行されていないことを意味します。
{
"code": "ParameterNotAllowed",
"message": "Section 'ManagedIdentityTokenService' and Parameter 'IsEnabled' is not allowed."
}