IoT Edge を更新する

適用対象:IoT Edge 1.4 checkmark IoT Edge 1.4

重要

IoT Edge 1.4 がサポートされているリリースです。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

IoT Edge サービスの新しいバージョンがリリースされたら、最新の機能およびセキュリティの強化のために、IoT Edge デバイスを更新します。 この記事では、新しいバージョンが使用可能になったときに、IoT Edge デバイスを更新する方法について説明します。

新しいバージョンに移行する場合、IoT Edge デバイスの 2 つの論理コンポーネントを更新する必要があります。

  • セキュリティ サブシステム - セキュリティ サブシステムのアーキテクチャはバージョン 1.1 から 1.2 の間で変更されましたが、役割は変わりません。 デバイス上で実行され、セキュリティ ベースのタスクが処理され、デバイスの起動時にモジュールを開始します。 セキュリティ サブシステムは、デバイス自体からのみ更新できます。

  • IoT Edge ランタイム - IoT Edge ランタイムは、IoT Edge ハブ (edgeHub) と IoT Edge エージェント (edgeAgent) モジュールから構成されます。 デプロイの構成方法に応じて、ランタイムはデバイスから、またはリモートで更新できます。

更新方法

この記事のセクションを使用して、デバイス上のセキュリティ サブシステムとランタイム コンテナーの両方を更新します。

パッチ リリース

パッチ リリース間 (1.4.1 から 1.4.2 など) でアップグレードする場合、更新順序は重要ではありません。 セキュリティ サブシステムまたはランタイム コンテナーは、どちらを先にアップグレードしてもかまいません。 パッチ リリース間で更新するには:

  1. セキュリティ サブシステムを更新する
  2. ランタイム コンテナーを更新する
  3. バージョンの一致を確認する

アップグレード プロセスのトラブルシューティングはいつでも行うことができます。

メジャー リリースまたはマイナー リリース

メジャー リリースまたはマイナー リリース間 (1.1 から 1.4 など) でアップグレードする場合は、セキュリティ サブシステムとランタイム コンテナーの両方を更新します。 リリース前に、セキュリティ サブシステムとランタイム コンテナーのバージョンの組み合わせをテストします。 メジャーまたはマイナーの製品リリース間で更新するには:

  1. デバイスで、コマンド sudo systemctl stop iotedge を使用して IoT Edge を停止し、アンインストールします。

  2. デバイスで、Docker または Moby を使用してコンテナー エンジンをアップグレードします。

  3. デバイスに IoT Edge をインストールします

    iotedge config import を使用して古い構成をインポートする場合は、edgeAgent 用に 1.4 イメージを使用するように、生成された /etc/aziot/config.toml ファイルの [agent.config] イメージを変更します。

    詳細については、「IoT Edge デバイスの設定を構成する」を参照してください。

  4. IoT Hub で、モジュールのデプロイを更新し、最新のシステム モジュールを参照します。

  5. デバイスで、sudo iotedge config apply を使用して IoT Edge を起動します。

アップグレード プロセスのトラブルシューティングはいつでも行うことができます。

セキュリティ サブシステムを更新する

IoT Edge セキュリティ サブシステムには、ネイティブ コンポーネントのセットが含まれており、IoT Edge デバイス上のパッケージ マネージャーを使って更新する必要があります。

デバイスで実行されているセキュリティ サブシステムのバージョンを確認するには、コマンド iotedge version を使います。 IoT Edge for Linux on Windows を使用している場合は、Linux 仮想マシンに SSH で接続してバージョンを確認する必要があります。

重要

デバイスをバージョン 1.0 または 1.1 から最新のリリースに更新する場合、インストールと構成のプロセスに違いがあるため、追加の手順が必要です。 詳細については、この記事で後述する手順「特殊なケース: 1.0 または 1.1 から最新リリースに更新する」を参照してください。

Linux x64 デバイスでは、apt-get または適切なパッケージ マネージャーを使用して、セキュリティ サブシステムを最新バージョンに更新します。

以下を更新します。apt:

sudo apt-get update

Note

Microsoft から最新のリポジトリ構成を取得する手順については、IoT Edge をインストールするための準備手順を参照してください。

使用できる IoT Edge のバージョンを確認します。

apt list -a aziot-edge

IoT Edge を更新する

sudo apt-get install aziot-edge defender-iot-micro-agent-edge

apt-get install aziot-edge を実行すると、セキュリティ サブシステムがアップグレードされ、必要な依存関係として ID サービス (aziot-identity-service) がインストールされます。

Edge デバイスのセキュリティ監視とセキュリティ強化を有効にするには、Edge エージェントを使ってマイクロ エージェントをインストールすることをお勧めします。 Microsoft Defender for IoT の詳細については、「デバイス ビルダー向け Microsoft Defender for IoT とは」を参照してください。

その後、構成を再適用して、システムが完全に更新されるようにします。

sudo iotedge config apply

ランタイム コンテナーの更新

IoT Edge エージェントおよび IoT Edge ハブ コンテナーを更新する方法は、デプロイにローリング タグ (1.1 など) を使用しているか、または特定のタグ (1.1.1 など) を使用しているかによって異なります。

デバイス上の IoT Edge エージェントおよび IoT Edge ハブ モジュールの現在のバージョンを確認するには、コマンド iotedge logs edgeAgent または iotedge logs edgeHub を使用します。 IoT Edge for Linux on Windows を使用している場合は、Linux 仮想マシンに SSH で接続してランタイム モジュールのバージョンを確認する必要があります。

Screenshot of where to find the container version in console logs.

IoT Edge のタグについて

IoT Edge エージェントおよび IoT Edge ハブ イメージには、関連付けられている IoT Edge のバージョンでタグ付けされます。 ランタイム イメージでタグを使用する方法は 2 つあります。

  • ローリング タグ - バージョン番号の先頭の 2 つの値のみを使用して、これらの数字に一致する最新のイメージを取得します。 たとえば、最新の 1.1.x バージョンを指す新しいリリースが存在するたびに、1.1 が更新されます。 IoT Edge デバイス上のコンテナー ランタイムによって、再度イメージが取得されると、ランタイム モジュールが最新バージョンに更新されます。 Azure portal からのデプロイでは、既定でローリング タグに設定されます。 開発目的では、このアプローチが推奨されます。

  • 特定のタグ - バージョン番号の 3 つすべての値を使用して、イメージのバージョンを明示的に設定します。 たとえば、1.1.0 はその最初のリリース後に変更されることはありません。 更新する準備ができたら、配置マニフェストに新しいバージョン番号を宣言できます。 運用環境目的では、このアプローチが推奨されます。

ローリング タグ イメージの更新

デプロイでローリング タグを使用している (mcr.microsoft.com/azureiotedge-hub:1.1 など) 場合、デバイス上のコンテナー ランタイムに強制的にイメージの最新バージョンを取得させる必要があります。

IoT Edge デバイスからイメージのローカル バージョンを削除します。 Windows マシンでは、セキュリティ サブシステムをアンインストールするとランタイム イメージも削除されるため、この手順をもう一度実行する必要はありません。

docker rmi mcr.microsoft.com/azureiotedge-hub:1.1
docker rmi mcr.microsoft.com/azureiotedge-agent:1.1

強制の -f フラグを使用して、イメージを削除する必要がある場合があります。

IoT Edge サービスによって、ランタイム イメージの最新バージョンが取得され、自動的にデバイス上でそれらが再度起動されます。

特定のタグ イメージの更新

デプロイで特定のタグを使用している (mcr.microsoft.com/azureiotedge-hub:1.4 など) 場合、行う必要がある作業は、配置マニフェスト内のタグを更新し、デバイスに変更を適用することだけです。

  1. Azure portal の IoT Hub で、IoT Edge デバイスを選択し、[Set Modules]\(モジュールの設定\) を選択します。

  2. [モジュール] タブで [ランタイムの設定] を選択します。

    Screenshot that shows location of the Runtime Settings tab.

  3. [ランタイムの設定] で、[Edge エージェント][イメージ URI] の値を適切なバージョンに更新します。 [適用] はまだ選択しないでください。

    Screenshot that shows where to update the image URI with your version in the Edge Agent.

  4. [Edge ハブ] タブを選択し、[イメージ URI] の値を同じ適切なバージョンに更新します。

    Screenshot that shows where to update the image URI with your version in the Edge Hub.

  5. [適用] を選択して変更を保存します。

  6. [確認と作成] を選択し、JSON ファイルに示されているようにデプロイを確認し、[作成] を選択します。

バージョンの一致を確認する

  1. デバイス上で、iotedge version を使ってセキュリティ サブシステムのバージョンを確認します。 出力には、メジャー、マイナー、リビジョンの各バージョン番号が含まれます。 たとえば、iotedge 1.4.2 です。

  2. デバイス デプロイのランタイム設定で、edgeHubedgeAgent のイメージ URI バージョンがセキュリティ サブシステムのメジャーとマイナーのバージョンと一致することを確認します。 セキュリティ サブシステムのバージョンが 1.4.2 の場合、イメージのバージョンは 1.4 になります。 たとえば、mcr.microsoft.com/azureiotedge-hub:1.4mcr.microsoft.com/azureiotedge-agent:1.4 です。

Note

IoT Edge セキュリティ サブシステムとランタイム コンテナーを、サポートされている同じリリース バージョンに更新します。 一致しないバージョンはサポートされていますが、すべてのバージョンの組み合わせをテストしているわけではありません。

Azure IoT Edge の最新バージョンを見つけるには、Azure IoT Edge リリースに関する記事を参照してください。

特殊なケース: 1.0 または 1.1 から最新リリースに更新する

バージョン 1.2 以降、IoT Edge サービスには新しいパッケージ名が使用されるようになりました。また、インストールと構成のプロセスにいくつかの違いがあります。 バージョン 1.0 または 1.1 を実行している IoT Edge デバイスがある場合、最新リリースに更新する方法については、以下の手順を参照してください。

最新リリースとバージョン 1.1 以前の主な違いは次のとおりです。

  • パッケージ名は iotedge から aziot-edge に変更されました。
  • libiothsm-std パッケージは使用されなくなりました。 IoT Edge リリースの一部として提供されている標準パッケージを使用した場合は、構成を新しいバージョンに移行できます。 libiothsm-std の別の実装を使用していた場合は、デバイス ID 証明書、デバイス CA、信頼バンドルなどのユーザー指定の証明書を再構成する必要があります。
  • 新しい ID サービス aziot-identity-service は、1.2 リリースの一部として導入されました。 このサービスにより、IoT Edge と、IoT Hub 用デバイスの更新などの IoT Hub と通信する必要があるその他のデバイス コンポーネントの ID のプロビジョニングと管理が処理されます。
  • 既定の構成ファイルは、名前と場所が新しくなっています。 以前は /etc/iotedge/config.yaml でしたが、デバイス構成情報は既定で /etc/aziot/config.toml 内にあることが想定されています。 iotedge config import コマンドを使用すると、構成情報を以前の場所と構文から新しいものへと移行できます。
    • Import コマンドでは、デバイスのトラステッド プラットフォーム モジュール (TPM) に対するアクセス規則を検出または変更することはできません。 デバイスで TPM 構成証明を使用している場合は、/etc/udev/rules.d/tpmaccess.rules ファイルを手動で更新して、aziottpm サービスにアクセスできるようにする必要があります。 詳細については、「IoT Edge に TPM へのアクセス権を付与する」を参照してください。
  • 最新バージョンのワークロード API は、暗号化されたシークレットを新しい形式で保存します。 以前のバージョンから最新バージョンにアップグレードすると、既存のマスター暗号化キーがインポートされます。 ワークロード API は、インポートした暗号化キーを使用して、以前の形式で保存されたシークレットを読み取ることができます。 ただし、ワークロード API では、暗号化されたシークレットを以前の形式で書き込むことはできません。 モジュールによってシークレットが再暗号化されると、シークレットは新しい形式で保存されます。 最新バージョンで暗号化されたシークレットは、バージョン 1.1 の同じモジュールでは読み取ることができません。 暗号化されたデータをホストによってマウントされたフォルダーまたはボリュームに保持する場合は、必要に応じてダウングレードする機能を保持するために、アップグレードする前に必ずデータのバックアップ コピーを作成してください。
  • TLS 1.2 をサポートしていないデバイスを接続するときの下位互換性のために、SslProtocols 環境変数を介して TLS 1.0 または 1.1 を引き続き受け入れるように Edge ハブを構成できます。 IoT Hubでの TLS 1.0 および 1.1 のサポートはレガシと見なされ、今後のリリースでも Edge ハブから削除される可能性があります。  今後の問題を回避するには、Edge ハブまたは IoT Hub に接続するときに、TLS バージョンとして TLS 1.2 のみを使用してください。
  • Edge ハブ 1.2 の実験用 MQTT ブローカーのプレビューは終了しており、Edge ハブ 1.4 には含まれていません。 受け取ったフィードバックに基づいて、MQTT ブローカーの計画を継続的に改善しています。 その間、IoT Edge で標準準拠の MQTT ブローカーが必要な場合は、Mosquitto のようなオープンソース ブローカーを IoT Edge モジュールとしてデプロイすることを検討してください。
  • バージョン 1.2 以降では、バッキング イメージは、コンテナーから削除されてもコンテナーが実行され続け、再起動後も保持されます。 1.1 では、バッキング イメージが削除されると、コンテナーがすぐに再作成され、バッキング イメージが更新されます。

更新プロセスを自動化する前に、テスト マシンで機能することを確認してください。

準備ができたら、次の手順に従ってデバイスの IoT Edge を更新します。

  1. apt を更新します。

    sudo apt-get update
    
  2. 構成ファイルをそのままにして、以前のバージョンの IoT Edge をアンインストールします。

    sudo apt-get remove iotedge
    
  3. 最新バージョンの IoT Edge を、Edge 用の IoT ID サービスと Microsoft Defender for IoT マイクロ エージェントと共にインストールします。

    sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

Edge デバイスのセキュリティ監視とセキュリティ強化を有効にするには、Edge エージェントを使ってマイクロ エージェントをインストールすることをお勧めします。 Microsoft Defender for IoT の詳細については、「デバイス ビルダー向け Microsoft Defender for IoT とは」を参照してください。

  1. 以前の config.yaml ファイルを新しい形式にインポートし、構成情報を適用します。

    sudo iotedge config import
    

デバイスで最新の IoT Edge サービスが実行されるようになったので、ランタイム コンテナーも最新バージョンに更新する必要があります。 ランタイム コンテナーの更新プロセスは、IoT Edge サービスの更新プロセスと同じです。

トラブルシューティング

デバイスから次のコマンドを実行すると、システムのログをいつでも表示できます。

  • check コマンドを使用してトラブルシューティングを開始します。 一般的な問題に関する構成テストと接続テストのコレクションが実行されます。

    sudo iotedge check --verbose
    
  • IoT Edge システム サービスの状態を表示するには次のコマンドを実行します。

    sudo iotedge system status 
    
  • ホスト コンポーネント ログを表示するには、次のコマンドを実行します。

    sudo iotedge system logs
    
  • edgeAgent と edgeHub で報告された定期的な問題を確認するには、次のコマンドを実行します。

    必ず <module> を使用するモジュール名に置き換えてください。 問題がない場合は、出力は表示されません。

    sudo iotedge logs <module>
    

詳しくは、「IoT Edge デバイスのトラブルシューティング」を参照してください。

次のステップ

最新の Azure IoT Edge リリースを確認する

モノのインターネットのブログの最新の更新とお知らせによって最新情報を得る