IoT Edge を更新する

適用対象: [はい] アイコン IoT Edge 1.1

重要

IoT Edge 1.1 のサポート終了日は、2022 年 12 月 13 日でした。 本製品、サービス、テクノロジ、または API のサポート内容については、Microsoft 製品のライフサイクルに関するページをご確認ください。 最新バージョンの IoT Edge への更新の詳細については、「 Update IoT Edge」を参照してください。

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

新しいバージョンに移行する場合、IoT Edge デバイスの 2 つの論理コンポーネントを更新する必要があります。 1 つ目はセキュリティ サブシステムです。 セキュリティ サブシステムのアーキテクチャはバージョン 1.1 から 1.2 の間で変更されましたが、全体的な役割は変わりません。 デバイス上で実行され、セキュリティ ベースのタスクが処理され、デバイスの起動時にモジュールを開始します。 現在、セキュリティ サブシステムは、デバイス自体からのみ更新できます。 2 つ目のコンポーネントはランタイムで、IoT Edge ハブと IoT Edge エージェント モジュールから構成されます。 デプロイの構成方法に応じて、ランタイムはデバイスから、またはリモートで更新できます。

IoT Edge ランタイムを更新する必要があります。また、アプリケーション層には同じリリース バージョンを使います。 バージョンの不一致はサポートされていますが、それらの組み合わせはテストされていません。 この記事の次のセクションを参考にして、デバイスのランタイムとアプリケーションの両方の層を更新します。

  1. セキュリティ サブシステムを更新する
  2. ランタイム コンテナーを更新する
  3. バージョンが一致するかどうかを確認する
    • デバイス上で、iotedge version を使ってセキュリティ サブシステムのバージョンを確認します。 出力には、メジャー、マイナー、リビジョンの各バージョン番号が含まれます。 たとえば、iotedge 1.4.2 です。
    • デバイス デプロイのランタイム設定で、edgehubedgeagent のイメージ URI バージョンがセキュリティ サブシステムのメジャーとマイナーのバージョンと一致することを確認します。 セキュリティ サブシステムのバージョンが 1.4.2 の場合、イメージのバージョンは 1.4 になります。 たとえば、mcr.microsoft.com/azureiotedge-hub:1.4mcr.microsoft.com/azureiotedge-agent:1.4 です。

Azure IoT Edge の最新バージョンを見つけるには、Azure 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 iotedge

最新バージョンのランタイム モジュールに更新する場合は、次のコマンドを使います。これにより libiothsm-std も最新バージョンに更新されます。

sudo apt-get install iotedge

特定のバージョンのランタイム モジュールに更新する場合は、apt リスト出力からバージョンを指定します。 iotedge が更新されるたびに、libiothsm std パッケージの最新バージョンへの更新が自動的に試行されます。これにより、依存関係の競合が発生する可能性があります。 最新バージョンに移行しない場合は、必ず同じバージョンの両方のパッケージをターゲットにしてください。 たとえば、次のコマンドでは、1.1 リリースの特定のバージョンがインストールされます。

sudo apt-get install iotedge=1.1.1 libiothsm-std=1.1.1

インストールするバージョンが apt によって使用できない場合は、curl を使用することで、IoT Edge リリース リポジトリからの任意のバージョンをターゲットにすることができます。 インストールするバージョンに応じて、ご利用のデバイスに適した libiothsm-std および iotedge ファイルを見つけます。 ファイルごとに、ファイル リンクを右クリックして、リンクのアドレスをコピーします。 リンクのアドレスを使用して、それらのコンポーネントの特定のバージョンをインストールします。

curl -L <libiothsm-std link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
curl -L <iotedge link> -o iotedge.deb && sudo apt-get install ./iotedge.deb

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

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 で接続してランタイム モジュールのバージョンを確認する必要があります。

ログ内でコンテナー バージョンを検索する

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.1.1 など) 場合、行う必要がある作業は、配置マニフェスト内のタグを更新し、デバイスに変更を適用することだけです。

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

  2. [IoT Edge モジュール] セクションで、[Runtime Settings]\(ランタイムの設定\) を選択します。

    ランタイム設定の構成

  3. [Runtime Settings]\(ランタイムの設定\) で、[Edge ハブ][イメージ] の値を適切なバージョンに更新します。 [保存] はまだ選択しないでください。

    Edge ハブのイメージのバージョンの更新

  4. [Edge ハブ] の設定を折りたたむか、下にスクロールするかして、[Edge エージェント][イメージ] の値を同じ適切なバージョンに更新します。

    Edge ハブのエージェントのバージョンの更新

  5. [保存] を選択します。

  6. [Review + create]\(確認と作成\) を選択し、デプロイを確認して、[作成] を選択します。

特殊なケース: 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 Hub 1.2 の実験用 MQTT ブローカーのプレビューは終了しており、Edge Hub 1.3 以降には含まれていません。 受け取ったフィードバックに基づいて、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 サービスが更新されました。次は、この記事の手順に従って、ランタイム コンテナーを更新してください。

次のステップ

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

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