Share via


Azure Resource Manager を使用し、マネージド クラスターでアプリケーション ライフサイクルを管理する

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 を使用して Service Fabric アプリケーション リソースをデプロイします。
  • Resource Manager を使用して Service Fabric アプリケーション リソースをアップグレードします。
  • Service Fabric アプリケーション リソース リソースを削除します。

Service Fabric アプリケーション リソース リソースをデプロイする

Resource Manager アプリケーション リソース モデルを使用してアプリケーションとそのサービスをデプロイする手順の概要は次のとおりです。

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

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

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

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

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

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

Create a storage account

注意事項

ストレージ アカウント内の BLOB データへの匿名パブリック アクセスにはセキュリティ リスクが伴います。 ストレージ アカウントを作成するときは、AllowBlobPublicAccess プロパティを false に設定して、BLOB データへの匿名パブリック アクセスをアカウント レベルで無効にすることをお勧めします。 詳細については、「BLOB データへの匿名パブリック読み取りアクセスの修復 (Azure Resource Manager デプロイ)」を参照してください。

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

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

コンテナーへのアクセス権は、次のいずれかの方法で付与できます。

  • セキュリティ プリンシパルが Microsoft Entra 承認を介してコンテナー内のデータにアクセスできるように、コンテナーにアクセス許可を付与する Azure RBAC ロールをセキュリティ プリンシパルに割り当てることができます。 詳しくは、Microsoft Entra ID を使用した BLOB へのアクセスの認可に関する記事をご覧ください。
  • 共有アクセス署名を持つコンテナーにアクセスを委任し、コンテナー内の BLOB へのアクセスを一定期間、特定のアクセス許可でクライアントに許可することができます。 詳細については、「Shared Access Signatures (SAS) を使用して Azure Storage リソースへの制限付きアクセスを許可する」を参照してください。
  • アカウント アクセス キーを使用して、BLOB データへのアクセスを承認できます。 この方法は安全性が最も低いため、推奨されません。

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

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

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

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

    Package Application

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

    Zip Application

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

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

    Upload App Package

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

Resource Manager テンプレートの作成

サンプル アプリケーションには、アプリケーションのデプロイに使用できる Azure Resource Manager テンプレートが含まれています。 テンプレート ファイルの名前は、UserApp.jsonUserApp.Parameters.json です。

Note

UserApp.Parameters.json ファイルを、クラスターの名前で更新する必要があります。

パラメーター 説明 説明
clusterName デプロイ先クラスターの名前 sf-cluster123
application アプリケーションの名前 Voting
version アプリのリソース ID、アプリケーションの種類、バージョン。 /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 ApplicationManifest.xml と一致する必要があります
serviceName サービスの名前 VotingWeb ServiceType の形式でなければなりません
serviceTypeName サービスの種類名 VotingWebType ServiceManifest.xml と一致する必要があります
appPackageUrl アプリケーションの BLOB ストレージ URL https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg BLOB ストレージ内のアプリケーション パッケージの URL (URL を設定する手順については、この記事の後半で説明します)
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Service Fabric アプリケーションをデプロイする

New-AzResourceGroupDeployment コマンドレットを実行して、クラスターを含むリソース グループにアプリケーションをデプロイします。

New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose

Resource Manager を使用した Service Fabric アプリケーションのアップグレード

重要

Azure Resource Manager (ARM) テンプレートを使用してデプロイされているサービスはすべて、対応する 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": "VotingData"
    },
    "serviceTypeName2": {
        "value": "VotingDataType"
    }
    
  • 既存のサービスの新しいバージョンがアプリケーションに追加されます。 例としては、アプリケーション コードの変更や、アプリの種類のバージョンと名前の更新などがあります。 このアップグレードでは、次のように UserApp.Parameters.json を更新します。

     "applicationTypeVersion": {
        "value": "1.0.1"
    }
    

Service Fabric アプリケーション リソース リソースを削除する

Note

個々のリソースを消去する宣言型の方法がないため、アプリケーションは Azure Resource Manager (ARM) テンプレートで削除できません。

Resource Manager でアプリケーション リソース モデルを使用してデプロイされた Service Fabric アプリケーションを削除するには、次のようにします。

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

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

    Remove-AzServiceFabricApplication -ResourceId <String> [-Force]
    

クラシックからマネージド クラスターへの移行

アプリケーションをクラシックからマネージド クラスターに移行する場合は、型が正しく指定されていることを確認する必要があります。さもないと、エラーが発生します。

次の項目は、使用頻度のため具体的に挙げていますが、違いの排他的リストとすることを意図したわけではありません。

  • upgradeReplicaSetCheckTimeout は現在マネージドの整数になっていますが、クラシック SFRP では文字列です。

プロパティと型の完全な一覧については、マネージド クラスター アプリケーションのリソースの種類に関するページを参照してください

次のステップ

マネージド クラスター アプリケーション デプロイについて詳しく学習してください。