次の方法で共有


IoT Edge を更新する

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

重要

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

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

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

apt list -a iotedge

ランタイム モジュールの最新バージョンに更新する場合は、次のコマンドを使用します。また、 libiothsm-std を最新バージョンに更新します。

sudo apt-get install iotedge

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

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

インストールするバージョンが apt-get で使用できない場合は、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 モジュール ] セクションで、[ ランタイム設定] を選択します。

    ランタイム設定の構成

  3. [ランタイム設定] で、Edge Hubイメージ値を目的のバージョンで更新します。 [ 保存] をまだ選択しないでください。

    Edge Hub イメージのバージョンを更新する

  4. Edge Hub の設定を折りたたむか、下にスクロールして、目的のバージョンと同じ Edge エージェントイメージ値を更新します。

    Edge Hub エージェントのバージョンを更新する

  5. 保存 を選択します。

  6. [ 確認と作成] を選択し、デプロイを確認して、[ 作成] を選択します。

特殊なケース: 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、信頼バンドルなどのユーザー指定の証明書を再構成する必要があります。
  • 1.2 リリースの一部として、新しい ID サービス aziot-identity-service が導入されました。 このサービスは、IoT Edge および IoT Hub との通信が必要な他のデバイス コンポーネント (Device Update for 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 Hub を構成できます。 IoT Hub での TLS 1.0 と 1.1 のサポートはレガシと見なされ、今後のリリースで Edge Hub からも削除される可能性があることに注意してください。 今後の問題を回避するには、Edge Hub または IoT Hub に接続するときに、TLS 1.2 を唯一の TLS バージョンとして使用してください。
  • 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 を、IoT ID サービスと Microsoft Defender for IoT Micro Agent for Edge と共にインストールします。

    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 リリースを確認する

モノのインターネットのブログで最新の更新やお知らせを継続的に確認しておくことによって最新情報を常に保つ