Mesh Cloud Scripting のインフラストラクチャと管理
概要
この記事では、Mesh Clouding のインフラストラクチャと管理のさまざまな側面について説明します。これには、Cloud Scripting プロジェクトをビルドして発行するときに Azure サブスクリプションにデプロイされるサービスが含まれます。
配置されたリソース
Mesh Cloud Scripting は、クラウドで実行される .NET ベースのアプリで構成されます。 顧客の Azure サブスクリプションにデプロイされた Mesh Cloud Scripting クラウド インフラストラクチャには、次の Azure リソースが含まれています。
App Service プラン: Web アプリを実行できるコンピューティング クラスターを表します。 また、1 つ以上の異なる Web アプリを実行することもできます。
Azure VNet: App Service インスタンスがデプロイされ、相互に通信できるようにする仮想ネットワークのリソースです。
Azure Web アプリ インスタンス: 特定の VM で実行されている Web アプリのインスタンスを表します。
Azure ストレージ アカウント: 公開済みコンテンツと Azure Web アプリ インスタンスに関する情報を保持します。 次の 2 つのコンポーネントに分割されています。
- Mesh Cloud Scripting Service Blob Storage: Mesh Uploader でアップロードされた Mesh Cloud Scripting Service Blob を保持します。
- Orleans Membership Table: Orleans Silo インスタンスのライブネスに関する情報を保持します。
Log Analytics ワークスペース: App Service で実行している Mesh Cloud Scripting Service から出力されたログを保持します。
Application Insights: アプリケーション パフォーマンス監視 (APM) 機能を提供します。 APM ツールは、開発からテスト、そして実稼働に至るまでのアプリケーション監視に役立ちます。
App Service プラン
App Service プランでは、Web アプリの実行を可能にする一連のコンピューティング リソースを定義します。
特定のリージョン (西ヨーロッパなど) の App Service プランを作成する場合、一連のコンピューティング リソースはそのリージョンで対応するプランに対して作成されます。 この App Service プランに入れたアプリは、App Service プランで定義されたとおりにこれらのコンピューティング リソースで実行されます。 各 App Service プランは以下を定義します。
- オペレーティング システム (Windows、Linux)
- リージョン (米国西部、米国東部など)
- VM インスタンスの数
- VM インスタンスのサイズ (小、中、大)
- 価格レベル (Free、Shared、Basic、Standard、Premium、PremiumV2、PremiumV3、Isolated、IsolatedV2)
詳細については、App Service プランのドキュメントを参照してください。
App Service プランの Mesh ツールキットの既定のリソース設定
- SKU 名: P1v2
- SKU レベル: PremiumV2
- SKU 容量: 1
- 種類: Linux
- 予約済み: True
Mesh Cloud Scripting Services のコンテキストでは、App Service プランがコンピューティング コンポーネントです。 これは自動的にスケーリングされ、異なるインスタンスが相互に通信する方法 (ネットワーク) を処理できます。 Mesh Cloud Scripting Services を実行および管理するアプリケーションである CloudHost は、現時点では Docker イメージとして提供されているため、Linux ベースのプランを使用します。 Premium プランは、実稼働のワークロードにより適しています。
既定値の詳細については、App Service プラン リソースの Bicep および ARM のテンプレート リファレンス を参照してください。
App Service
Azure App Service は、Web アプリケーション、REST API、およびモバイル バックエンドをホストするための HTTP ベースのサービスです。 App Service は、セキュリティ、負荷分散、自動スケーリング、自動管理などの Microsoft Azure の機能をアプリケーションに追加します。 App Service では、使用した Azure コンピューティング リソースに応じて課金されます。 使用するコンピューティング リソースは、アプリが実行されている "App Service プラン" によって決まります。
詳細については、App Service のドキュメントを参照してください。
Mesh ツールキットの既定のリソース設定 - App Service
- httpsOnly: True
- alwaysOn: True
- vnetPrivatePorts Count: 2
- vnetRouteAllEnabled: True
- vnetName: 既定の Virtual Network 名
既定値の詳細については、App Service プラン リソースの Bicep および ARM のテンプレート リファレンス を参照してください。
Virtual Network
Azure Virtual Network は、Azure 内のプライベート ネットワークの基本的な構成要素です。 仮想ネットワークでは、Azure Virtual Machines (VM) などのさまざまな種類の Azure リソースから、他の Azure リソース、インターネット、オンプレミスのネットワークと安全に通信することができます。 仮想ネットワークは、独自のデータ センターで運用する従来のネットワークに似ています。 Azure Virtual Network によって、スケール、可用性、分離性など、Azure のインフラストラクチャの追加の利点が提供されます。
詳細については、Virtual Network のドキュメントを参照してください。
Mesh Toolkit の既定のリソース設定 - Virtual Network
- AddressSpace addressPrefixes: 10.0.0.0/16
- Subnet addressPrefix: 10.0.0.0/24
- サブネット委任名: delegation
- Subnet Delegations サービス名: Microsoft.Web/serverFarms
既定値の詳細については、Virtual Network リソースの Bicep および ARM のテンプレート リファレンス を参照してください。
ストレージ アカウント
Azure ストレージ アカウントには、すべての Azure Storage データ オブジェクト (BLOB、ファイル、キュー、テーブル) が含まれます。 このストレージ アカウントでは、世界中のどこからでも HTTP または HTTPS 経由でアクセスできる Azure Storage データ用の一意の名前空間が提供されます。 ストレージ アカウント内のデータは、持続性があり、高可用性で、セキュリティ保護されており、非常にスケーラブルです。
詳細については、ストレージ アカウントのドキュメントを参照してください。
Mesh Toolkit の既定のリソース設定: ストレージ アカウント
- SKU Name: Standard_LRS
- Kind: StorageV2
既定値の詳細については、ストレージ アカウント リソースの「Bicep および ARM のテンプレート リファレンス」をご覧ください。
Log Analytics ワークスペース
Log Analytics ワークスペースは、Azure Monitor、および Microsoft Sentinel や Microsoft Defender for Cloud などの他の Azure サービスからのログ データ用の固有の環境です。 これは、Azure portal のツールであり、Azure Monitor Logs ストア内のデータに対するログ クエリの編集と実行に使用します。
詳細については、Log Analytics ワークスペースのドキュメントを参照してください。
Mesh Toolkit の既定のリソース設定 - Log Analytics ワークスペース
- forceCmkForQuery: false
- retentionInDays: 30
- SKU 名: PerGB2018
- dailyQuotaGb: 2GB
既定値の詳細については、ワークスペース リソースの Bicep および ARM のテンプレート リファレンス を参照してください。
Application Insights
Application Insights は Azure Monitor の拡張機能であり、アプリケーション パフォーマンス監視 (APM) 機能を提供します。 APM ツールは、次の方法で、開発、テスト、運用環境からアプリケーションを監視するのに役立ちます。
アプリケーションのパフォーマンスを事前に理解します。 アプリケーション実行データを事後に確認して、インシデントの原因を特定します。 アプリケーションのアクティビティと正常性を記述するメトリックとアプリケーション テレメトリ データの収集に加えて、Application Insights を使用してアプリケーション トレース ログ データを収集して格納することができます。
詳細については、Application Insights のドキュメントを参照してください。
Mesh Toolkit の既定のリソース設定 - Application Insights
- 種類: Web
- Request_Source: rest
- WorkspaceResourceId: 既定の Log Analytics ワークスペースの ID。
既定値の詳細については、Virtual Network リソースの Bicep および ARM のテンプレート リファレンス を参照してください。
Mesh Cloud Scripting Services インフラストラクチャの図
各コンポーネントを経由するトラフィック フロー
クライアント <-> AppService インスタンス: クライアント要求/応答 (接続要求、クラウド スクリプト通知など)。
App Service インスタンス: ライブネスを判断するための TCP ping メッセージ。
App Service インスタンス <-> LogAnalytics/AppInsights: アプリケーション テレメトリ (アプリケーション ログ)。
App Service インスタンス <-> Membership Table: 各 App Service インスタンスに関するライブネス情報。
App Service インスタンス <-> Blob Storage: クラウドで実行されているクラウド スクリプトの zip。
リソース プロバイダーの登録
登録するサービス:
- Microsoft.Web
- Microsoft.Storage
- Microsoft.Network
- Microsoft.Insights
- Microsoft.OperationalInsights
ノート
エラーに関するヘルプが必要な場合は、「リソース プロバイダー登録エラー」を参照してください。
Azure のドキュメントで説明されているように、サービスの登録はサブスクリプション レベルで行われます。 つまり、さまざまなリソース グループに対してサービスを登録する必要はありません。
Mesh Cloud Scripting Service デプロイのアクセス制御
開発者は、デプロイに使用できる電子メール アカウントを持っている必要があります。 新規のアカウントでも既存のアカウントでもかまいません。
Azure セキュリティ グループを使用してアクセス制御を管理する場合は、このグループ (「Mesh Cloud Scripting Services Developers」など) を作成します。 Microsoft 365 グループの種類と比較した Azure セキュリティ グループの詳細については、「グループとグループ メンバーシップの詳細」を参照してください。
開発者が Azure サブスクリプションにアクセスする方法を決定します。 この方法は、開発者がディレクトリのネイティブ メンバーであるか、ゲスト ユーザーであるかによって決まります。
- アクセス制御を簡単に管理する場合は、上記の手順 2 で作成した Azure セキュリティ グループにネイティブ メンバーを追加できます。
- ゲスト ユーザーは Azure サブスクリプションに追加することも、Azure セキュリティ グループに追加することもできます (上記の手順 2 を参照)。
ゲスト ユーザーの詳細については、「Azure portal での B2B コラボレーション ユーザーの追加」を参照してください。
アクセス制御に関する推奨事項
Azure で Mesh Cloud Scripting Services クラウド インフラストラクチャをプロビジョニングするためのアクセス権を開発者に付与する方法について、いくつかの推奨事項を次に示します。 これらの推奨事項は、アクセス制御の制限ポリシーによって異なります。
Mesh Cloud Scripting Services 用にプロビジョニングされたサブスクリプション全体で、開発者に共同作成者ロールを付与します。
Mesh Cloud Scripting Services クラウド インフラストラクチャのデプロイ用の専用リソース グループを作成し、開発者にこのリソース グループの共同作成者ロールを付与します。 これは、2 番目の前提条件で作成した Azure セキュリティ グループ (つまり「Mesh Cloud Scripting Services Developers」) を使用して行うことができます。 すべてのリソースを管理するためのフル アクセス権が付与されますが、Azure RBAC でのロールの割り当て、Azure Blueprints における割り当ての管理、イメージ ギャラリーの共有は許可されません。
Mesh Cloud Scripting Services クラウド インフラストラクチャの作成と管理に必要な最小限のアクセス許可を持つ Azure 内のカスタム ロールを作成します。
このロールは、2 番目の前提条件で作成した Azure セキュリティ グループ (すなわち、「Mesh Cloud Scripting Services Develpers」) に直接割り当てることができます。
作成するカスタム ロールに対して推奨されるアクセス許可を次に示します。
アップロードする JSON ファイルは次のようになります**。
{ "id": "88888-8888-8888-888-8888888", "properties": { "roleName": "MeshCloudScriptingServiceDeployer", "description": "Grants access to Mesh Cloud Scripting Services resources", "assignableScopes": [ "/subscriptions/{subscriptionID}" ], "permissions": [ { "actions": [ "*/read", "Microsoft.Authorization/*/read", "Microsoft.ClassicCompute/virtualMachines/extensions/*", "Microsoft.ClassicStorage/storageAccounts/listKeys/action", "Microsoft.Compute/virtualMachines/extensions/*", "Microsoft.HybridCompute/machines/extensions/write", "Microsoft.Insights/alertRules/*", "Microsoft.Insights/autoscalesettings/*", "Microsoft.Insights/components/*", "Microsoft.Insights/diagnosticSettings/*", "Microsoft.Insights/generateLiveToken/read", "Microsoft.Insights/metricAlerts/*", "Microsoft.Insights/scheduledqueryrules/*", "Microsoft.Insights/topology/read", "Microsoft.Insights/transactions/read", "Microsoft.Insights/webtests/*", "Microsoft.Network/*", "Microsoft.OperationalInsights/*", "Microsoft.OperationsManagement/*", "Microsoft.ResourceHealth/availabilityStatuses/read", "Microsoft.Resources/deployments/*", "Microsoft.Resources/subscriptions/resourcegroups/deployments/*", "Microsoft.Resources/subscriptions/resourceGroups/read", "Microsoft.Storage/storageAccounts/*", "Microsoft.Support/*", "Microsoft.Web/certificates/*", "Microsoft.Web/hostingEnvironments/Join/Action", "Microsoft.Web/listSitesAssignedToHostName/read", "Microsoft.Web/serverFarms/join/action", "Microsoft.Web/serverFarms/*", "Microsoft.Web/sites/*" ], "notActions": [], "dataActions": [], "notDataActions": [] } ] } }
Note
MeshCloudScriptingServiceDeployer カスタム ロールでは、ユーザーはリソース グループの作成は許可されていません。 ユーザーにリソース グループの作成を許可する場合は、Microsoft.Resources/subscriptions/resourcegroups/write permissions も必要です。
Mesh Cloud Scripting Services のクォータ制限
Mesh Cloud Scripting Services インフラストラクチャは、Premium App Service Linux プラン (P1V2) を利用します。 Mesh Cloud Scripting Service のデプロイ中に発生する可能性がある App Service の制限は次のとおりです。
リソース | Premium (P1V2) |
---|---|
Azure App Service プランあたりの Web、モバイル、または API アプリ数 | 無制限 |
App Service プラン | リソース グループあたり 100 |
Note
アプリとストレージのクォータは、特に明記されていない限り、App Service プランごとの数字です。
Note
これらのマシンでホストできるアプリの実際の数は、アプリのアクティビティ、マシン インスタンスのサイズ、対応するリソース使用量によって異なります。
"このリージョンのサブスクリプションのクォータは 0 PremiumV2 インスタンスです。 別のリージョンまたは SKU を選択してみてください。" というエラー メッセージが表示された場合は、「Azure サブスクリプションの制限とクォータ」を参照してください。
古い Mesh Cloud Scripting サービスをクリーンアップする
古い Mesh Cloud Scripting サービスまたは未使用の Mesh Cloud Scripting サービスがある場合、次の手順に従って Mesh Cloud Scripting リソースを見つけて削除します。
Azure Portal にログインします。
[すべてのリソース] タブに移動します。
[すべてのリソース] ページで、次の手順を実行します。
a. 適切なサブスクリプションを選択します。
b. タグ EnvironmentName を使用してフィルターを追加します。
c. 削除する環境に一致するリソースを見つけます。
手順 3C で見つかった各リソースの名前の横に表示されている省略記号をクリックし、ドロップダウンで [削除] をクリックして、古い Mesh Cloud Scripting サービスをクリーンアップします。 または、この リソースの削除 に関する記事で説明するように、Azure CLI を使用して、リソースを名前で削除することもできます。