次の方法で共有


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 アプリケーション リソース モデルを使用してアプリケーションとそのサービスをデプロイする手順の概要は次のとおりです。

  1. アプリケーション コードをパッケージ化します。
  2. パッケージをアップロードします。
  3. Resource Manager テンプレート内のパッケージの場所をアプリケーション リソースとして参照します。

詳細については、アプリケーションのパッケージ化に関する項目を参照してください。

次に、Resource Manager テンプレートを作成し、アプリケーションの詳細情報でパラメーター ファイルを更新し、そのテンプレートを Service Fabric クラスターにデプロイします。 サンプルを参照してください

ストレージ アカウントの作成

Resource Manager テンプレートからアプリケーションをデプロイするには、ストレージ アカウントが必要です。 ストレージ アカウントは、アプリケーション イメージをステージングするために使用されます。

既存のストレージ アカウントを再利用することも、アプリケーションをステージングするための新しいストレージ アカウントを作成することもできます。 既存のストレージ アカウントを使用する場合は、この手順を省略できます。

ストレージ アカウントの作成

ストレージ アカウントの構成

ストレージ アカウントが作成されたら、アプリケーションをステージングできる BLOB コンテナーを作成します。 Azure portal で、アプリケーションを格納する Azure Storage アカウントに移動します。 [BLOB]>[コンテナーの追加] の順に選択します。

クラスター内のリソースは、パブリック アクセス レベルを [プライベート] に設定することで、セキュリティで保護することができます。 アクセス権は、次の複数の方法で付与できます。

次のスクリーンショットの例では、BLOB の匿名読み取りアクセスを使用しています。

BLOB の作成

ストレージ アカウントでアプリケーションをステージングする

アプリケーションをデプロイするには、事前に BLOB ストレージにアプリケーションをステージングする必要があります。 このチュートリアルでは、アプリケーション パッケージを手動で作成します。 この手順は自動化できることに注意してください。 詳細については、アプリケーションのパッケージ化に関する記事を参照してください。

このチュートリアルでは、Voting サンプル アプリケーションを使用します。

  1. Visual Studio で [Voting] プロジェクトを右クリックし、 [Package](パッケージ) を選択します。

    アプリケーションのパッケージ化

  2. .\service-fabric-dotnet-quickstart\Voting\pkg\Debug ディレクトリに移動します。 内容を zip 形式で Voting.zip という名前のファイルに圧縮します。 ApplicationManifest.xml ファイルが zip ファイルのルートにあります。

    アプリケーションの zip 圧縮

  3. ファイルの名前を変更し、拡張子を .zip から .sfpkg に変更します。

  4. Azure portal で、お使いのストレージ アカウントの apps コンテナーで [アップロード] を選択して Voting.sfpkg をアップロードします。

    アプリ パッケージのアップロード

これで、アプリケーションがステージングされ、Resource Manager テンプレートを作成してアプリケーションをデプロイできるようになりました。

Resource Manager テンプレートの作成

サンプル アプリケーションには、アプリケーションのデプロイに使用できる Azure Resource Manager テンプレートが含まれています。 テンプレート ファイルの名前は、UserApp.jsonUserApp.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.xmlapplication-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 でアプリケーション リソース モデルを使用してデプロイされたアプリケーションを削除するには、次のようにします。

  1. Get-AzResource コマンドレットを使用して、アプリケーションのリソース ID を取得します。

    Get-AzResource  -Name <String> | f1
    
  2. Remove-AzResource コマンドレットを使用して、アプリケーション リソースを削除します。

    Remove-AzResource  -ResourceId <String> [-Force] [-ApiVersion <String>]
    

一般的な質問と回答

エラー: "アプリケーション名はサービス名の接頭辞にする必要があります" 回答: サービス名の形式が ProfileVetSF~CallTicketDataWebApi であることを確認します。

次のステップ

アプリケーション リソース モデルに関する情報を入手します。