Service Fabric アプリケーション リソース モデル
Azure Service Fabric アプリケーションを Service Fabric クラスターにデプロイするには、複数の選択肢があります。 Azure Resource Manager を使用することをお勧めします。 Resource Manager を使用すると、アプリケーションとサービスを JSON で記述し、クラスターと同じ Resource Manager テンプレートにデプロイすることができます。 PowerShell や Azure CLI を使ってアプリケーションをデプロイして管理する場合と違い、Resource Manager を使用する場合は、クラスターの準備が整うまで待つ必要はありません。アプリケーションの登録、プロビジョニング、およびデプロイをすべて 1 回の手順で実行できます。 クラスターでアプリケーションのライフ サイクルを管理するには、Resource Manager を使用するのが最良の方法です。 詳細については、「ベスト プラクティス: コードとしてのインフラストラクチャ」を参照してください。
Resource Manager でアプリケーションをリソースとして管理すると、次のような分野での改善に役立ちます。
- 監査証跡:Resource Manager は、すべての操作を監査し、詳細なアクティビティ ログを保持します。 アクティビティ ログは、アプリケーションとクラスターに対して行われたすべての変更を追跡するのに役立ちます。
- ロールベースのアクセス制御:同じ Resource Manager テンプレートを使用して、クラスターと、そのクラスターにデプロイされたアプリケーションへのアクセスを管理できます。
- 管理効率: Resource Manager を使用すると、クラスターと重要なアプリケーションのデプロイをすべて 1 か所 (Azure portal) で管理できます。
このドキュメントでは、以下の方法について説明します。
- Resource Manager を使用したアプリケーション リソースのデプロイ。
- Resource Manager を使用したアプリケーション リソースのアップグレード。
- アプリケーション リソースの削除。
アプリケーション リソースのデプロイ
Resource Manager アプリケーション リソース モデルを使用してアプリケーションとそのサービスをデプロイする手順の概要は次のとおりです。
- アプリケーション コードをパッケージ化します。
- パッケージをアップロードします。
- Resource Manager テンプレート内のパッケージの場所をアプリケーション リソースとして参照します。
詳細については、アプリケーションのパッケージ化に関する項目を参照してください。
次に、Resource Manager テンプレートを作成し、アプリケーションの詳細情報でパラメーター ファイルを更新し、そのテンプレートを Service Fabric クラスターにデプロイします。 サンプルを参照してください。
ストレージ アカウントの作成
Resource Manager テンプレートからアプリケーションをデプロイするには、ストレージ アカウントが必要です。 ストレージ アカウントは、アプリケーション イメージをステージングするために使用されます。
既存のストレージ アカウントを再利用することも、アプリケーションをステージングするための新しいストレージ アカウントを作成することもできます。 既存のストレージ アカウントを使用する場合は、この手順を省略できます。
ストレージ アカウントの構成
ストレージ アカウントが作成されたら、アプリケーションをステージングできる BLOB コンテナーを作成します。 Azure portal で、アプリケーションを格納する Azure Storage アカウントに移動します。 [BLOB]>[コンテナーの追加] の順に選択します。
クラスター内のリソースは、パブリック アクセス レベルを [プライベート] に設定することで、セキュリティで保護することができます。 アクセス権は、次の複数の方法で付与できます。
- Azure portal で Azure RBAC を使用して Azure BLOB とキューのデータへのアクセスを付与する。
- Shared Access Signature を使用してアクセスを委任する。
次のスクリーンショットの例では、BLOB の匿名読み取りアクセスを使用しています。
ストレージ アカウントでアプリケーションをステージングする
アプリケーションをデプロイするには、事前に BLOB ストレージにアプリケーションをステージングする必要があります。 このチュートリアルでは、アプリケーション パッケージを手動で作成します。 この手順は自動化できることに注意してください。 詳細については、アプリケーションのパッケージ化に関する記事を参照してください。
このチュートリアルでは、Voting サンプル アプリケーションを使用します。
Visual Studio で [Voting] プロジェクトを右クリックし、 [Package](パッケージ) を選択します。
.\service-fabric-dotnet-quickstart\Voting\pkg\Debug ディレクトリに移動します。 内容を zip 形式で Voting.zip という名前のファイルに圧縮します。 ApplicationManifest.xml ファイルが zip ファイルのルートにあります。
ファイルの名前を変更し、拡張子を .zip から .sfpkg に変更します。
Azure portal で、お使いのストレージ アカウントの apps コンテナーで [アップロード] を選択して Voting.sfpkg をアップロードします。
これで、アプリケーションがステージングされ、Resource Manager テンプレートを作成してアプリケーションをデプロイできるようになりました。
Resource Manager テンプレートの作成
サンプル アプリケーションには、アプリケーションのデプロイに使用できる Azure Resource Manager テンプレートが含まれています。 テンプレート ファイルの名前は、UserApp.json と UserApp.Parameters.json です。
Note
UserApp.Parameters.json ファイルを、クラスターの名前で更新する必要があります。
パラメーター | 説明 | 例 | 説明 |
---|---|---|---|
clusterName | デプロイ先クラスターの名前 | sf-cluster123 | |
application | アプリケーションの名前 | Voting | |
applicationTypeName | アプリケーションの種類名 | VotingType | ApplicationManifest.xml と一致する必要があります |
applicationTypeVersion | アプリケーションの種類のバージョン | 1.0.0 | ApplicationManifest.xml と一致する必要があります |
serviceName | サービスの名前 | Voting~VotingWeb | ApplicationName~ServiceType の形式にする必要があります |
serviceTypeName | サービスの種類名 | VotingWeb | ServiceManifest.xml と一致する必要があります |
appPackageUrl | アプリケーションの BLOB ストレージ URL | https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg | BLOB ストレージ内のアプリケーション パッケージの URL (URL を設定する手順については、この記事の後半で説明します) |
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
"location": "[variables('clusterLocation')]",
},
{
"apiVersion": "2019-03-01",
"type": "Microsoft.ServiceFabric/clusters/applications/services",
"name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
"location": "[variables('clusterLocation')]"
}
アプリケーションの配置
New-AzResourceGroupDeployment コマンドレットを実行して、クラスターを含むリソース グループにアプリケーションをデプロイします。
New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose
Resource Manager を使用した Service Fabric アプリケーションのアップグレード
重要
ARM JSON 定義を使用してデプロイされているサービスはすべて、対応する ApplicationManifest.xml ファイルの DefaultServices セクションから削除する必要があります。
次のいずれかの理由により、Service Fabric クラスターに既にデプロイされているアプリケーションをアップグレードする場合があります。
新しいサービスがアプリケーションに追加されます。 サービス定義は、サービスがアプリケーションに追加されるときに service-manifest.xml と application-manifest.xml ファイルに追加する必要があります。 アプリケーションの新しいバージョンを反映するために、UserApp.parameters.json でアプリケーションの種類のバージョンを 1.0.0 から 1.0.1 に変更する必要もあります。
"applicationTypeVersion": { "value": "1.0.1" }, "serviceName2": { "value": "Voting~VotingData" }, "serviceTypeName2": { "value": "VotingDataType" }
既存のサービスの新しいバージョンがアプリケーションに追加されます。 例としては、アプリケーション コードの変更や、アプリの種類のバージョンと名前の更新などがあります。 このアップグレードでは、次のように UserApp.Parameters.json を更新します。
"applicationTypeVersion": { "value": "1.0.1" },
アプリケーション リソースの削除
Resource Manager でアプリケーション リソース モデルを使用してデプロイされたアプリケーションを削除するには、次のようにします。
Get-AzResource コマンドレットを使用して、アプリケーションのリソース ID を取得します。
Get-AzResource -Name <String> | f1
Remove-AzResource コマンドレットを使用して、アプリケーション リソースを削除します。
Remove-AzResource -ResourceId <String> [-Force] [-ApiVersion <String>]
一般的な質問と回答
エラー: "アプリケーション名はサービス名の接頭辞にする必要があります" 回答: サービス名の形式が ProfileVetSF~CallTicketDataWebApi であることを確認します。
次のステップ
アプリケーション リソース モデルに関する情報を入手します。