拡張機能の自動アップグレードは、Azure Virtual Machines と Azure Virtual Machine Scale Sets で利用できます。 仮想マシン (VM) またはスケール セットで拡張機能の自動アップグレードが有効になっている場合、Azure は新しい拡張機能バージョンを自動的に監視し、新しいバージョンの品質と安全性を評価し、ロールアウトのバージョンを承認してから、拡張機能を使用してすべての VM を自動的にアップグレードします。 Azure では、すべての VM が安全なデプロイ プラクティス (SDP) に従って徐々にアップグレードされ、バージョンが正しくないために停止が発生するのを防ぎ、アプリケーションの可用性が高くなります。 この段階的なロールアウトは、評価に必要な時間、アップグレードの重大度、アップグレードが必要な VM のスケールに基づいて完了するまでに 1 ~ 2 か月かかることがあります。
拡張機能の自動アップグレードには、次の機能があります。
- Azure VMs, virtual machine scale sets and Arc VMs are supported.
- アップグレードは、(安全なデプロイ プラクティス) [/azure/well-architected/operational-excellence/safe-deployments] (SDP) に従って、可用性優先のデプロイ モデルで適用されます。
- 仮想マシン スケール セットの場合、既定では、1 つのバッチでアップグレードされるスケール セット VM の% は 20 個以下です。 このバッチ サイズは、 VMSS ローリング アップグレード ポリシーを定義することで変更できます。
- Azure VM と Arc VM の場合、1 つのバッチでアップグレードされる VM の% は 20 個以下です。 このバッチ サイズは変更できません。
- 失敗したすべてのアップグレードは、VM を正常な状態に戻すために自動的にロールバックされます。
- すべてのアップグレードは再起動されません。 そのため、アップグレード後に VM を再起動する必要はありません。
- すべての VM サイズがサポートされています。
- Windows と Linux の両方の拡張機能に互換性があります。
- 自動アップグレードは、API バージョンの
2025-04-01を開始する既定で有効になっています。 - サポートされている各拡張機能は個別に登録されます。 自動的にアップグレードする拡張機能を選択できます。
- パブリック、ソブリン、およびエアガップされたすべてのクラウド リージョンがサポートされています。
拡張機能の自動アップグレードのしくみ
拡張機能のアップグレード プロセスでは、VM 上の既存の拡張機能が削除され、新しいバージョンで拡張機能が再インストールされます。
- 拡張機能の発行元が同じ拡張機能の新しいバージョンを発行すると、Azure は新しいバージョンを検出し、品質評価プロセスを開始します。 このプロセスでは、エラーが発生することなく、セキュリティ、品質、および安全なアップグレードのバージョンが検証されます。 バージョンは、評価に合格するとロールアウトが承認されます。
- Azure は 1 つのリージョンまたはゾーンから始まり (ロールアウトはカナリア リージョンから開始されます)、完全にアップグレードされると、次のリージョンまたはゾーンに移動します。
- リージョン/ゾーン内では、Azure は VM を (既定またはローリング アップグレード ポリシーに基づいて) 小さなバッチにグループ化し、一度に 1 つのバッチをアップグレードします。 前のバッチが正常にアップグレードされると、Azure は次のバッチに移動します。
- Azure は、アップグレード後に VM とアプリの正常性 (App Health 拡張機能を使用) を監視して、エラーを検出します。 アップグレードから 5 分以内に VM が正常でない場合、アップグレードはロールバックされ、以前のバージョンの拡張機能がインストールされます。 アップグレードは、お客様の介入を必要とせずに、しばらくすると自動的に再試行されます。
Availability-first Upgrades
プラットフォームの調整されたアップグレードの可用性優先モデルにより、Azure の可用性構成が複数の可用性レベルで尊重されます。
アップグレード中の VM のグループに対して、Azure プラットフォームは、リージョン全体、リージョン内、セット内のアップグレードを調整します。
Across regions
- Azure 全体でデプロイが失敗するのを防ぐために、アップグレードは Azure 全体を段階的に移動します。
- 1 つのフェーズには 1 つ以上のリージョンを含めることができます。前のフェーズで対象の VM が正常にアップグレードされた場合にのみ、アップグレードはフェーズ間を移動します。
- geo ペア リージョンは同時にアップグレードされず、同じリージョン フェーズに置くことはできません。
- アップグレードの成功は、アップグレード後に VM の正常性を追跡することによって測定できます。 VM の正常性は、VM のプラットフォーム正常性インジケーターを通じて追跡されます (VM の正常性と App Health 拡張機能によって報告される App Health)
リージョン内
- 異なる可用性ゾーンにある VM が、同じアップグレードで同時にアップグレードされることはありません。
- 可用性セットに含まれていない単一の VM は、サブスクリプション内のすべての VM の同時アップグレードを回避するために、ベストエフォート ベースでバッチ処理されます。
セット内
- 共通の可用性セット内またはスケール セット内のすべての VM が同時にアップグレードされることはありません。
- 共通の可用性セット内の VM は、更新ドメインの境界内でアップグレードされます。 複数の更新ドメインにまたがる VM が同時にアップグレードされることはありません。
- 共通の仮想マシン スケール セット内の VM は、バッチにグループ化され、更新ドメイン境界内でアップグレードされます。 Upgrade policies defined on the scale set are honored during the upgrade. 各グループは、ローリング アップグレード戦略を使用してアップグレードされます。
仮想マシン スケール セットのアップグレード プロセス
- アップグレード プロセスが始まる前に、オーケストレーターによって、異常 (何らかの理由による) な VM がスケール セット全体の 20% を超えていないことが確認されます。
- アップグレード オーケストレーターによってアップグレードする VM インスタンス バッチが識別されます。 1 つのアップグレード バッチには、VM の最小バッチ サイズに基づき、VM 合計数の最大 20% を含めることができます。 オーケストレーターは、バッチを特定する際に、アップグレード ポリシーと可用性ゾーンの定義を検討します。
- アップグレード後、VM の正常性は、次のバッチに移行する前に常に監視されます。 アプリケーション正常性プローブまたはアプリケーション正常性拡張機能が構成されたスケール セットの場合、アプリケーション正常性も監視されます。 アップグレードでは、VM が正常になるまで 5 分間 (または定義されている正常性プローブ構成だけ) 待機した後、次のバッチがアップグレードされます。 アップグレード後に VM の正常性が回復しない場合は、既定で、VM の前のバージョンの拡張機能が再インストールされます。
- また、アップグレード オーケストレーターにより、アップグレード後に異常が発生した VM の割合も追跡されます。 アップグレード処理中に異常なアップグレード済みインスタンスの割合が 20% を超えた場合は、アップグレードが停止します。
このプロセスは、スケール セット内のすべてのインスタンスがアップグレードされるまで続行されます。
スケール セットのアップグレード オーケストレーターにより、各バッチをアップグレードする前に、スケール セット全体の正常性が確認されます。 バッチ アップグレード中は、他の並列して実行される計画的または計画外のメンテナンス アクティビティがスケール セット VM の正常性に影響を与える可能性があります。 そのような場合、スケール セットのインスタンスの 20% より多くが異常な状態になると、スケール セットのアップグレードは現在のバッチが終了した時点で停止します。
Supported extensions
拡張機能の自動アップグレードがサポートされているかどうかを確認するには、Azure Portal の [拡張機能] ブレードで自動アップグレードの状態を表示します。
自動アップグレードがサポートされている一般的な拡張機能を次に示します (さらに多くが定期的に追加されます)。
| Publisher | タイプ |
|---|---|
| Microsoft.Azure.Automation.HybridWorker | HybridWorkerForLinux |
| Microsoft.Azure.Automation.HybridWorker | HybridWorkerForWindows |
| Microsoft.Azure.AzureDefenderForSQL | AdvancedThreatProtection.Windows |
| Microsoft.Azure.AzureDefenderForSQL | VulnerabilityAssessment.Windows |
| Microsoft.Azure.AzureDefenderForServers | MDE.Linux |
| Microsoft.Azure.AzureDefenderForServers | MDE.Windows |
| Microsoft.Azure.ChangeTrackingAndInventory | ChangeTracking-Linux |
| Microsoft.Azure.ChangeTrackingAndInventory | ChangeTracking-Windows |
| Microsoft.Azure.Diagnostics | LinuxDiagnostic |
| Microsoft.Azure.Extensions.Edp | LinuxHibernateTestExtension |
| Microsoft.Azure.Extensions.Edp | WindowsHibernateTestExtension |
| Microsoft.Azure.FleetDiagnostics | FleetDiagnosticsForWindows |
| Microsoft.Azure.Geneva | GenevaMonitoring |
| Microsoft.Azure.KeyVault | KeyVaultForLinux |
| Microsoft.Azure.KeyVault | KeyVaultForWindows |
| Microsoft.Azure.Labservices | Agent.Linux |
| Microsoft.Azure.Labservices | Agent.Windows |
| Microsoft.Azure.Monitor | AzureMonitorLinuxAgent |
| Microsoft.Azure.Monitor | AzureMonitorWindowsAgent |
| Microsoft.Azure.Monitoring.DependencyAgent.EDP | DependencyAgentLinux |
| Microsoft.Azure.Monitoring.DependencyAgent.EDP | DependencyAgentWindows |
| Microsoft.Azure.Monitoring.DependencyAgent | DependencyAgentLinux |
| Microsoft.Azure.Monitoring.DependencyAgent | DependencyAgentWindows |
| Microsoft.Azure.NetworkWatcher | NetworkWatcherAgentLinux |
| Microsoft.Azure.NetworkWatcher | NetworkWatcherAgentWindows |
| Microsoft.Azure.Networking.DNS | DNSClientCache |
| Microsoft.Azure.SCOMMI | GatewayServer |
| Microsoft.Azure.SCOMMI | WindowsAgent |
| Microsoft.Azure.Security.AntimalwareSignature | AntimalwareConfiguration |
| Microsoft.Azure.Security.Dsms | DSMSForWindows |
| Microsoft.Azure.Security.LinuxAttestation | GuestAttestation |
| Microsoft.Azure.Security.Monitoring | AzureSecurityLinuxAgent |
| Microsoft.Azure.Security.Monitoring | AzureSecurityWindowsAgent |
| Microsoft.Azure.Security.WindowsAttestation | GuestAttestation |
| Microsoft.Azure.Security.WindowsCodeIntegrity | CodeIntegrityAgent |
| Microsoft.Azure.ServiceFabric | ServiceFabricLinuxNode |
| Microsoft.Azure.Watson | WatsonLinuxAgent |
| Microsoft.Azure.Workloads | MonitoringExtensionLinux |
| Microsoft.Azure.Workloads | MonitoringExtensionWindows |
| Microsoft.CPlat.Core | LinuxHibernateExtension |
| Microsoft.CPlat.Core | WindowsHibernateExtension |
| Microsoft.CPlat.ProxyAgent | ProxyAgentLinux |
| Microsoft.CPlat.ProxyAgent | ProxyAgentWindows |
| Microsoft.EnterpriseCloud.Monitoring | MicrosoftMonitoringAgent |
| Microsoft.EnterpriseCloud.Monitoring | OmsAgentForLinux |
| Microsoft.GuestConfiguration | ConfigurationForLinux |
| Microsoft.GuestConfiguration | ConfigurationForWindows |
| Microsoft.ManagedServices | ApplicationHealthLinux |
| Microsoft.ManagedServices | ApplicationHealthWindows |
| Microsoft.OSTCExtensions | DSCForLinux |
| Microsoft.Sentinel.AzureMonitorAgentExtensions | MicrosoftDnsAgent |
| Microsoft.SqlServer.Management | SqlIaaSAgent |
| Microsoft.SqlServer.Management | SqlIaaSAgentLinux |
拡張機能の自動アップグレードを有効にする
拡張機能の自動アップグレードを拡張機能に対して有効にするには、プロパティ enableAutomaticUpgrade が true に設定され、各拡張機能の定義に個別に追加されていることを確認する必要があります。
Azure portal を使用する
In the Azure portal, use the Extension pane to enable automatic upgrade of extensions on existing VMs and virtual machine scale sets.
Go to the Virtual Machines or Virtual Machines Scale Sets pane, and select the resource name.
Under Settings, go to the Extensions + applications pane, which shows all extensions installed on the resource. [自動アップグレードの状態] 列には、拡張機能の自動アップグレードが有効か無効か、またはサポートされていないかが表示されます。
Select the extension name to open the Extensions details pane.
[自動アップグレードを有効にする] を選択して、拡張機能の自動アップグレードを有効にします。 必要に応じて、このボタンを使用して自動アップグレードを無効にします。
仮想マシンの場合
Azure VM で拡張機能 (この例では Dependency Agent 拡張機能) に対して拡張機能の自動アップグレードを有効にするには、次の呼び出しを使用します。
PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{
"name": "extensionName",
"type": "Microsoft.Compute/virtualMachines/extensions",
"___location": "<___location>",
"properties": {
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
"type": "DependencyAgentWindows",
"typeHandlerVersion": "9.5"
}
}
仮想マシン スケール セットの場合
PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
"___location": "<___location>",
"properties": {
"virtualMachineProfile": {
"extensionProfile": {
"extensions": [
{
"name": "<extensionName>",
"properties": {
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
"type": "DependencyAgentWindows",
"typeHandlerVersion": "9.5"
}
}
]
}
}
}
}
Note
これらの操作によって、仮想マシン スケール セット リソースの enableAutomaticUpgrade プロパティは true に設定されますが、基盤の VM には適用されません。
仮想マシン スケール セットが upgradeProfile で自動またはローリング アップグレード モードを定義している場合、変更は仮想マシン スケール セットから基盤の各 VM に自動的に伝達されます。
仮想マシン スケール セットが upgradeProfile で手動モードを定義している場合は、各インスタンスを手動で更新し、基盤の各 VM に変更を伝達する必要もあります。
複数の拡張機能での拡張機能のアップグレード
VM または仮想マシン スケール セットに複数の拡張機能を追加し、その拡張機能の自動アップグレードを有効にできます。 同じ VM またはスケール セットに他の拡張機能を追加し、その拡張機能自動アップグレードを有効にしないこともできます。
1 つの VM で拡張機能のアップグレードを複数使用できる場合、アップグレードをバッチにまとめられる場合がありますが、VM では各拡張機能のアップグレードが個々に適用されます。 1 つの拡張機能での失敗は、アップグレードの最中であるかもしれない他の拡張機能には影響しません。 たとえば、2 つの拡張機能のアップグレードがスケジュールされていて、最初の拡張機能のアップグレードが失敗した場合でも、2 つ目の拡張機能はアップグレードされます。
You can also apply Automatic Extension Upgrade when a VM or virtual machine scale set has multiple extensions configured with extension sequencing. 拡張機能のシーケンス処理は、VM の初回デプロイ用です。 拡張機能に対する今後の拡張機能のアップグレードは、個別に適用されます。
EnableAutomaticUpgrade と AutoUpgradeMinorVersion の違い
AutoUpgradeMinorVersion:- このプロパティは、VM の作成時と、新しい構成で VM をアップグレードするときに使用されます。
-
trueに設定すると、拡張機能の最新のマイナー バージョンが VM に自動的にインストールされます。 - 使用できる最新の安定したマイナー バージョンで
TypeHandlerVersionをオーバーライドします。 - VM 構成をアップグレードするときに、新しいマイナー バージョンがリリースされている場合、それは構成の変更と見なされます。 拡張機能は、最新のマイナー バージョンで再インストールされます。
- このようにして、新しく作成された VM は、最新の安定したマイナー拡張機能バージョンで最新の状態に保たれます。
- 拡張機能を特定のバージョンに手動で設定する場合は、このプロパティを
falseに設定します。
EnableAutomaticUpgrade:- このプロパティは既存の VM に影響します。
- VM の作成時にインストールされたバージョンには影響しません。
- VM の作成後、VM が拡張機能の最新マイナー バージョンを実行していない場合、このプロパティを有効にすると自動アップグレードがトリガーされます。
- アップグレードによって VM が再起動されることはなく、安全なローリング方法でロールアウトされます。 失敗したアップグレードはすぐにロールバックされ、高いサービス可用性と信頼性を実現できます。
- 既存の VM は、最新のマイナー バージョンに自動的に更新されるため、セキュリティで保護された最新の状態に保たれます。
すべての VM をセキュリティで保護された最新の状態に保つために、両方のプロパティを有効にすることをお勧めします。
メジャー バージョンには破壊的変更が含まれる可能性があるため、どちらのプロパティでも拡張機能のメジャー バージョンへのアップグレードが自動的に実行されることはありません。
TypeHandlerVersion をメジャー バージョンに手動で設定し、既存の各 VM を最新のメジャー バージョンに手動でアップグレードする必要があります。