Edge Manager
Red Hat Edge Manager (テクノロジープレビュー) と Red Hat Advanced Cluster Management により、デバイスとフリートに対してスケーラブルでセキュアなエッジ管理をどのように提供するかを説明します。
概要
第1章 Red Hat Edge Manager (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Edge Manager は、宣言型アプローチを通じてエッジデバイスとアプリケーションを合理化して管理します。
オペレーティングシステムのバージョン、ホスト設定、およびアプリケーションのデプロイメントなど、エッジデバイスの必要な状態を定義することで、Red Hat Edge Manager はデバイスフリート全体でこれらの設定を自動的に実装および維持します。
Red Hat Advanced Cluster Management for Kubernetes で Red Hat Edge Manager を使用すると、Red Hat Enterprise Linux マシンで Kubernetes 以外のワークロードとオペレーティングシステムの設定を、Red Hat OpenShift Container Platform での管理方法と同じように管理できます。
Red Hat Advanced Cluster Management での Red Hat Edge Manager の使用に関する詳細は、以下のトピックを参照してください。すべての機能は、テクノロジープレビュー 機能のステータスです。
1.1. Red Hat Edge Manager アーキテクチャー リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Edge Manager を使用して、個々のデバイスまたはデバイスフリート全体を管理できます。Red Hat Edge Manager は、ネットワーク条件が限られている場合でも、スケーラブルで堅牢なデバイス管理を可能にするエージェントベースのアーキテクチャーを使用します。
Red Hat Edge Manager エージェントをデバイスにデプロイすることで、エージェントは Red Hat Edge Manager サービスと定期的に通信しながら、デバイスを自動管理および監視して、新しい設定を確認し、デバイスのステータスを報告します。
Red Hat Edge Manager はイメージベースのオペレーティングシステムをサポートします。Red Hat Edge Manager エージェントとエージェント設定を、デバイスに配布されるイメージに追加できます。
イメージベースのオペレーティングシステムにより、エージェントはイメージのトランザクション更新を開始し、更新エラーが発生した場合に以前のバージョンにロールバックできます。
Red Hat Edge Manager アーキテクチャーの主な機能は、以下のとおりです。
- Agent
- サービス
- イメージベースのオペレーティングシステム
- API サーバー
- データベース
- デバイス
- デバイスフリート
詳細は、以下を参照してください。
1.1.1. Red Hat Edge Manager エージェントおよびサービス リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager エージェントは、各管理対象デバイス上で動作するプロセスで、Red Hat Advanced Cluster Management ハブクラスター上の Red Hat Edge Manager サービスと定期的に通信します。エージェントは以下のタスクを行います。
- デバイスをサービスに登録する
- オペレーティングシステム、設定、アプリケーションの変更など、デバイス仕様の変更に関するサービスを定期的にチェックする
- サービスとは別に更新を適用する
- デバイスとアプリケーションのステータスを報告する
Red Hat Edge Manager サービスは、以下のタスクを行います。
- ユーザーとエージェントを認証および承認する
- デバイスを登録する
- デバイスインベントリーを管理する
- 個々のデバイスまたはフリートからのステータスを報告する
このサービスは、デバイスインベントリーとターゲットデバイス設定を格納するデータベースと通信します。サービスと通信する際、エージェントは設定の変更に関するサービスをポーリングします。現在の設定がターゲット設定から逸脱していることをエージェントが検出すると、エージェントはデバイスに変更を適用しようとします。
エージェントがサービスから新しいターゲット設定を受け取ると、エージェントは次のタスクを実行します。
- 更新時にネットワーク接続に依存しないようにするため、エージェントは、オペレーティングシステムイメージやアプリケーションコンテナーイメージなど、必要なリソースをすべてネットワーク経由でディスクにダウンロードします。
-
エージェントは、
bootc
に委譲してオペレーティングシステムイメージを更新します。 - エージェントは、サービスがデバイスに送信するファイルのセットをオーバーレイすることにより、デバイスのファイルシステム上の設定ファイルを更新します。
- 必要な場合は、エージェントは新しいオペレーティングシステムで再起動します。それ以外の場合、エージェントは、更新された設定をリロードするようにシステムサービスとアプリケーションに通知します。
- エージェントは、Podman または MicroShift で実行されているアプリケーションを更新します。
更新が失敗した場合や、再起動後にシステムがオンラインに戻らない場合、エージェントは自動的に以前のオペレーティングシステムイメージと設定にロールバックします。
注記: Git でフリート定義を維持することができます。Red Hat Edge Manager は、データベース内のフリート定義と定期的に同期します。
1.1.2. Red Hat Edge Manager API サーバー リンクのコピーリンクがクリップボードにコピーされました!
API サーバーは、ユーザーとエージェントがサービスと通信できるようにする Red Hat Edge Manager サービスのコアコンポーネントです。
API サーバーは以下のエンドポイントを公開します。
- ユーザー向け API エンドポイント
- ユーザーは、CLI または Web コンソールからユーザー向け API エンドポイントに接続できます。ユーザーは、HTTPS 要求を行うための JSON Web Token (JWT) を取得するために、設定された外部認証サービスを使用して認証する必要があります。
- エージェント向け API エンドポイント
- エージェントは、mTLS で保護されるエージェント向けエンドポイントに接続します。サービスは、X.509 クライアント証明書を使用してデバイスを認証します。
Red Hat Edge Manager サービスは、さまざまな外部システムと通信して、ユーザーの認証および承認、mTLS 証明書署名、または管理対象デバイスのクエリー設定も行います。
1.1.3. デバイスの登録 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: デバイスの管理を開始する前に、デバイスを Red Hat Edge Manager サービスに登録する必要があります。デバイス上で実行される Red Hat Edge Manager エージェントは、デバイスの登録を処理します。
エージェントがデバイスで起動すると、エージェントは /etc/flightctl/config.yaml
ファイル内の設定を検索します。このファイルは、以下の設定を定義します。
- 登録エンドポインは、エージェントが登録するために接続する Red Hat Edge Manager サービスです。
- 登録証明書は、Red Hat Edge Manager サービスからの登録を安全に要求するためだけにエージェントが使用する X.509 クライアント証明書とキーです。
- オプション: 追加のエージェント設定。
エージェントは、設定ファイルで定義されている登録エンドポイントである Red Hat Edge Manager サービスを検索して、登録プロセスを開始します。
サービスとのセキュアな mTLS で保護されるネットワーク接続を確立した後、エージェントは登録要求をサービスに送信します。
要求には、デバイスのハードウェアおよびオペレーティングシステムの説明、X.509 証明書署名要求、およびデバイスの暗号化アイデンティティーが含まれます。
登録要求は、認可されたユーザーによって承認される必要があります。要求が承認されると、デバイスは Red Hat Edge Manager サービスによって信頼され、管理されます。
1.1.3.1. 登録方法 リンクのコピーリンクがクリップボードにコピーされました!
以下の方法で、登録エンドポイントと証明書をデバイスにプロビジョニングできます。
- 初期バインディング
- 登録エンドポイントおよび証明書を含むオペレーティングシステムイメージをビルドできます。早期バインディングイメージを使用するデバイスは、プロビジョニングインフラストラクチャーに依存することなく、定義された Red Hat Edge Manager サービスに自動的に接続し、登録を要求できます。
デバイスは、同じ有効期間の長い X.509 クライアント証明書を共有します。ただし、この場合、デバイスは特定のサービスと所有者にバインドされます。
- 遅延バインディング
- 登録エンドポイントと証明書は、オペレーティングシステムイメージに含めるのではなく、プロビジョニング時に定義できます。遅延バインディングイメージを使用するデバイスは、単一の所有者またはサービスにバインドされず、デバイス固有の有効期限の短い X.509 クライアント証明書を持つことができます。
ただし、遅延バインディングには、Red Hat Edge Manager サービスからデバイス固有の登録エンドポイントおよび証明書を要求し、cloud-init、Ignition、または kickstart などのメカニズムを使用してプロビジョニングされたシステムに注入できる仮想化またはベアメタルのプロビジョニングインフラストラクチャーが必要です。
注記: 登録証明書は、登録要求を送信するためにネットワーク接続を保護するためにのみ使用されます。登録証明書は、登録要求の実際の検証または承認に関与しません。デバイスは代わりにデバイス固有の管理証明書に依存するため、登録証明書は登録されたデバイスで使用されなくなりました。
1.2. Red Hat Edge Manager の有効化 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Edge Manager を使用して、エッジデバイスとアプリケーションを大規模に管理できるようにします。
必要なアクセス権: クラスター管理者
1.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Advanced Cluster Management ハブクラスターがある。インストールとアップグレード を参照してください。
1.2.2. MultiClusterHub リソースからの Red Hat Edge Manager の有効化 リンクのコピーリンクがクリップボードにコピーされました!
MultiClusterHub
リソースにパッチを適用してから、Red Hat Edge Manager が有効になっていることを確認します。次の手順を実行します。
次のコマンドを実行して、
Multiclusterhub
リソースのspec.overrides.components
のedge-manager-preview
エントリーでenabled
フィールドをtrue
に設定します。oc patch multiclusterhubs.operator.open-cluster-management.io multiclusterhub -n rhacm --type json --patch '[{"op": "add", "path":"/spec/overrides/components/-", "value": {"name":"edge-manager-preview","enabled": true}}]'
oc patch multiclusterhubs.operator.open-cluster-management.io multiclusterhub -n rhacm --type json --patch '[{"op": "add", "path":"/spec/overrides/components/-", "value": {"name":"edge-manager-preview","enabled": true}}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ハブクラスターで次のコマンドを実行して、Red Hat Edge Manager が有効になっていることを確認します。
oc -n open-cluster-management get pods | grep flightctl-api
oc -n open-cluster-management get pods | grep flightctl-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
flightctl-api 2/2 Running 0 43s
flightctl-api 2/2 Running 0 43s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.3. Red Hat Edge Manager コンソールの有効化 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールで Red Hat Edge Manager を有効にします。次の手順を実行します。
以下のコマンドを実行して、編集するコンソールを開きます。
oc edit console.v1.operator.openshift.io
oc edit console.v1.operator.openshift.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
flightctl-plugin
をspec.plugins
セクションに追加して、Red Hat Edge Manager コンソールを有効にします。
1.2.4. Red Hat Edge Manager の認可 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Edge Manager Kubernetes 認可は、ロールベースアクセス制御 (RBAC) を使用して、Red Hat Edge Manager API エンドポイントの認可を制御します。
open-cluster-management
namespace で以下のロールを使用して Kubernetes RBAC 認可をセットアップできます。
-
namespace 全体の認可の場合は
Role
およびRoleBinding
-
クラスター全体の認可の場合は
ClusterRole
およびClusterRoleBinding
Role
または ClusterRole
API オブジェクトを使用して、特定のロールで許可される API リソースおよび動詞を定義できます。
RoleBinding
または ClusterRoleBinding
API オブジェクトは、ロールで定義されている権限を 1 人以上のユーザーに付与します。
詳細は、ロールベースのアクセス制御 を参照してください。
1.2.4.1. Red Hat Edge Manager RBAC ロール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager には、以下のデフォルトのロールおよびその権限があります。
ロール | 権限 | リソース |
| すべて | すべて |
|
|
|
|
|
|
|
| |
|
| |
|
|
|
|
| |
|
|
1.2.4.2. Red Hat Edge Manager の認可リソース リンクのコピーリンクがクリップボードにコピーされました!
以下の表には、Red Hat Edge Manager API エンドポイントのルート、名前、リソース名、および動詞が含まれています。
ルート | 名前 | リソース | Verb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.3. Red Hat Edge Manager のオペレーティングシステムイメージ リンクのコピーリンクがクリップボードにコピーされました!
イメージベースのオペレーティングシステムでは、オペレーティングシステムや設定やアプリケーションを単一のユニットとしてバージョン管理、デプロイ、および更新できます。
イメージベースのオペレーティングシステムを使用すると、次の機能で運用上のリスクが軽減されます。
- テスト済みの環境とデプロイされた環境間のドリフトを最小限に抑える。
- トランザクションの更新およびロールバックによって失敗した更新を削減し、メンテナンスおよび置き換えコストを削減します。
Red Hat Edge Manager は、起動可能なコンテナーイメージ (bootc
) を実行するイメージベースの Linux オペレーティングシステムに焦点を当てています。詳細は、bootc を参照してください。
重要: bootc
ツールは、パッケージベースのオペレーティングシステムを更新しません。
イメージを以下から構築する方法を学習します。
-
Fedora、CentOS、RHEL イメージなどのベース
bootc
オペレーティングシステムイメージを選択します。 ベース
bootc
イメージに対して、以下の項目を重ねるコンテナーファイルを作成します。- Red Hat Edge Manager エージェントと設定。
- オプション: ターゲットデプロイメント環境に固有のドライバー。
- オプション: ホスト設定 (例: 認証局バンドル) およびすべてのデプロイメントに共通のアプリケーションワークロード。
-
podman
およびskopeo
を使用して、bootc
オペレーティングシステムイメージをビルド、公開、および署名します。 -
bootc-image-builder
を使用してオペレーティングシステムディスクイメージを作成します。 -
skopeo
を使用して、オペレーティングシステムディスクイメージをビルド、公開、および署名します。
注記: オペレーティングシステムディスクイメージには、パーティション、ボリューム、ファイルシステム、および初期 bootc
イメージが含まれます。オペレーティングシステムディスクイメージは、プロビジョニング中に 1 回だけ作成する必要があります。
後続のデバイス更新では、bootc
オペレーティングシステムイメージのみが必要になります。これには、ファイルシステム内のファイルが含まれます。
次のイメージのビルドトピックを参照してください。
1.3.1. イメージのビルドに関する特別な考慮事項 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: 次のトピックでは、Red Hat Edge Manager のイメージを構築する際の特別な考慮事項を説明します。
1.3.1.1. 動的ランタイム設定よりもビルド時設定を優先する リンクのコピーリンクがクリップボードにコピーされました!
ビルド時にオペレーティングシステムイメージに設定を追加します。ビルド時に設定を追加することで、設定が一緒にテスト、配布、および更新されるようになります。ビルド時の設定が実行不可能または望ましくない場合には、Red Hat Edge Manager を使用して、ランタイム時にデバイスを動的に設定できます。
次の場合は、動的ランタイム設定が推奨されます。
- ホスト名やサイト固有のネットワーク認証情報など、デプロイメントまたはサイト固有の設定がある。
- イメージと共に配布する場合は安全でないシークレットがある。
- 再起動なしで追加、更新、削除が必要なアプリケーションワークロードがある、またはオペレーティングシステムよりも速い頻度で更新されるアプリケーションワークロードがある。
1.3.1.2. /usr ディレクトリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
設定が静的で、アプリケーションやサービスがその設定をサポートする場合は、設定ファイルを /usr
ディレクトリーに配置します。設定を /usr
ディレクトリーに配置すると、設定は読み取り専用のままとなり、イメージによって完全に定義されます。
次の場合は、/usr
ディレクトリーに設定を配置することは不可能または望ましくありません。
- この設定はデプロイメントまたはサイト固有です。
-
アプリケーションまたはサービスは、
/etc
ディレクトリーからの設定の読み取りのみをサポートします。 - 設定はランタイム時に変更する必要がある場合があります。
1.3.1.3. ドロップインディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
ドロップインディレクトリーを使用して、サービスが集約する設定ファイルを追加、置換、または削除します。ターゲット設定からの逸脱を引き起こす可能性のある設定ファイルを直接編集しないでください。
注記: ディレクトリー名の最後の .d/
でドロップインディレクトリーを特定できます。たとえば、/etc/containers/certs.d
、/etc/cron.d
、および /etc/NetworkManager/conf.d
などです。
1.3.1.4. スクリプトを使用したオペレーティングシステムイメージ リンクのコピーリンクがクリップボードにコピーされました!
ファイルシステムを変更するスクリプトまたはコマンドを実行しないでください。bootc
または Red Hat Edge Manager は、逸脱や整合性チェックの失敗を引き起こす可能性のある変更されたファイルを上書きできます。
代わりに、イメージのビルド中にこのようなスクリプトやコマンドを実行するため、変更はイメージの一部になります。あるいは、Red Hat Edge Manager の設定管理メカニズムを使用します。
1.3.1.5. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Generic guidance for building images を参照してください。
- ランタイム時のデバイス設定の詳細は、エッジデバイスのオペレーティングシステム設定 を参照してください。
1.3.2. Red Hat Edge Manager の bootc オペレーティングシステムイメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: デバイスを Red Hat Edge Manager で管理できるように準備するには、Red Hat Edge Manager エージェントを含む bootc
オペレーティングシステムイメージを構築します。次に、デバイス用のオペレーティングシステムディスクイメージをビルドします。
詳細は、次のセクションを参照してください。
1.3.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
bootc
オペレーティングシステムイメージをビルドするには、以下の前提条件を参照してください。
-
podman
バージョン 5.0 以降およびskopeo
バージョン 1.14 以降をインストールします。コンテナーツールの取得 を参照してください。 -
bootc-image-builder
をインストールします。bootc-image-builder のインストール を参照してください。
1.3.2.2. Red Hat Edge Manager CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager CLI をインストールするには、以下の手順を実行します。
以下のコマンドを実行して、お使いのシステムに適したリポジトリーのサブスクリプションマネージャーを有効にします。
subscription-manager repos --enable rhacm-2.13-for-rhel-<version>-<arch>-rpms
subscription-manager repos --enable rhacm-2.13-for-rhel-<version>-<arch>-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Edge Manager で利用可能なリポジトリーの完全なリストは、関連情報 セクションを参照してください。
パッケージマネージャーを使用して
flightctl
CLI をインストールします。以下のコマンドを実行します。sudo dnf install flightctl
sudo dnf install flightctl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2.3. オプション: 早期バインディングの登録証明書の要求 リンクのコピーリンクがクリップボードにコピーされました!
イメージにエージェント設定を含める場合は、次の手順を実行します。
flightctl
CLI を使用して Red Hat Edge Manager サービスで認証します。以下のコマンドを実行します。flightctl login --username=<your_user> --password=<your_password> https://<rhem_api_server_url>
flightctl login --username=<your_user> --password=<your_password> https://<rhem_api_server_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記: CLI は、ホストの認証局プールを使用して、Red Hat Edge Manager サービスのアイデンティティーを確認します。プールに認証局証明書を追加しない場合に、自己署名証明書を使用すると、検証で TLS 検証エラーが発生する可能性があります。コマンドに
--insecure-skip-tls-verify
フラグを追加することで、サーバーの検証を回避できます。次のコマンドを実行して、エージェント設定ファイルの形式で登録認証情報を取得します。
flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
-
この
--expiration=365d
オプションは、認証情報が 1 年間有効であることを指定します。 --output=embedded
オプションは、出力が登録認証情報が埋め込まれたエージェント設定ファイルであることを指定します。返された
config.yaml
には、Red Hat Edge Manager サービスの URL、認証局バンドル、およびエージェントの登録クライアント証明書およびキーが含まれます。以下の例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
この
1.3.2.4. オプション: イメージプルシークレットの使用 リンクのコピーリンクがクリップボードにコピーされました!
デバイスがプライベートリポジトリーからコンテナーに依存している場合は、レジストリーのプルシークレットを設定する必要があります。以下の手順を実行します。
使用するコンテナーイメージの種類に応じて、デバイスの次のシステムパスのいずれかまたは両方にプルシークレットを配置します。
-
オペレーティングシステムイメージは、
/etc/ostree/auth.json
パスを使用します。 -
アプリケーションコンテナーイメージは、
/root/.config/containers/auth.json
パスを使用します。
重要: シークレットを使用する前に、プルシークレットがデバイスに存在している必要があります。
-
オペレーティングシステムイメージは、
プルシークレットが以下の形式であることを確認してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
詳細は、関連情報 セクションを参照してください。
1.3.2.5. bootc を使用したオペレーティングシステムイメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager エージェントを含む bootc
でオペレーティングシステムイメージをビルドします。オプションで、次の項目をオペレーティングシステムイメージに追加できます。
- 初期バインディングのエージェント設定
- 任意のドライバー
- ホストの設定
- 必要なアプリケーションワークロード
以下の手順を実行します。
以下の内容で
Containerfile
ファイルを作成して、Red Hat Edge Manager エージェントおよび設定を含む RHEL 9 ベースのオペレーティングシステムイメージをビルドします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要: デバイスがプライベートリポジトリーからコンテナーに依存している場合は、デバイスのプルシークレットを
/etc/ostree/auth.json
パスに配置する必要があります。シークレットが消費される前に、プルシークレットがデバイスに存在している必要があります。オプション:
podman-compose
アプリケーションのサポートを有効にするには、以下のセクションをContainerfile
ファイルに追加します。RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.service
RUN dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 初期バインディング用に
config.yaml
を作成した場合は、以下のセクションをContainerfile
に追加します。ADD config.yaml /etc/flightctl/
ADD config.yaml /etc/flightctl/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
詳細は、オプション: 早期バインディングの登録証明書の要求 を参照してください。
次のコマンドを実行して、Open Container Initiative (OCI) レジストリーを定義します。
OCI_REGISTRY=registry.redhat.io
OCI_REGISTRY=registry.redhat.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、書き込み権限を持つイメージリポジトリーを定義します。
OCI_IMAGE_REPO=${OCI_REGISTRY}/<your_org>/<your_image>
OCI_IMAGE_REPO=${OCI_REGISTRY}/<your_org>/<your_image>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、イメージタグを定義します。
OCI_IMAGE_TAG=v1
OCI_IMAGE_TAG=v1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターゲットプラットフォームのオペレーティングシステムイメージをビルドします。
sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .
sudo podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2.6. Sigstore を使用した bootc オペレーティングシステムイメージの署名および公開 リンクのコピーリンクがクリップボードにコピーされました!
Sigstore を使用して bootc
オペレーティングシステムイメージに署名するには、以下の手順を実行します。
signingkey.pub
とsigningkey.private
という名前の Sigstore キーペアを生成します。skopeo generate-sigstore-key --output-prefix signingkey
skopeo generate-sigstore-key --output-prefix signingkey
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman や Skopeo などのコンテナーツールを設定して、署名済みイメージとともに Sigstore 署名を OCI レジストリーにアップロードします。
sudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF docker: ${OCI_REGISTRY}: use-sigstore-attachments: true EOF
sudo tee "/etc/containers/registries.d/${OCI_REGISTRY}.yaml" > /dev/null <<EOF docker: ${OCI_REGISTRY}: use-sigstore-attachments: true EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、OCI レジストリーにログインします。
sudo podman login ${OCI_REGISTRY}
sudo podman login ${OCI_REGISTRY}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、オペレーティングシステムイメージに署名し、公開します。
sudo podman push \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
sudo podman push \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2.7. オペレーティングシステムディスクイメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
デバイスのファイルシステムを含むオペレーティングシステムディスクイメージをビルドします。以下の手順を実行します。
次のコマンドを実行して、
output
という名前のディレクトリーを作成します。mkdir -p output
mkdir -p output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow bootc-image-builder
を使用して、オペレーティングシステムイメージからiso
タイプのオペレーティングシステムディスクイメージを生成します。以下のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
bootc-image-builder
が完了すると、${PWD}/output/bootiso/install.iso
パスで ISO ディスクイメージを見つけることができます。
1.3.2.8. オプション: オペレーティングシステムディスクイメージの署名と Open Container Initiative レジストリーへの公開 リンクのコピーリンクがクリップボードにコピーされました!
ディスクイメージに署名して Open Container Initiative (OCI) レジストリーに公開します。オプションで、ディスクイメージを圧縮して OCI アーティファクトとして、bootc
イメージと同じ OCI レジストリーに公開できます。これにより、bootc
とディスクイメージの統一されたホスティングと配布が容易になります。/diskimage-iso
を追加した状態で、bootc
イメージの名前が付けられたリポジトリーに ISO ディスクイメージを公開するには、次の手順を実行します。
1.3.2.8.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Sigstore を使用して秘密鍵を作成している。Sigstore を使用した bootc オペレーティングシステムイメージの署名および公開 を参照してください。
1.3.2.8.2. オプション: オペレーティングシステムディスクイメージの OCI レジストリーへの署名と公開 リンクのコピーリンクがクリップボードにコピーされました!
ディスクイメージに署名して OCI レジストリーに公開します。以下の手順を実行します。
ISO ディスクイメージが存在するディレクトリーの所有者を
root
からカレントユーザーに変更します。以下のコマンドを実行します。sudo chown -R $(whoami):$(whoami) "${PWD}/output"
sudo chown -R $(whoami):$(whoami) "${PWD}/output"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /diskimage-iso
が追加されたbootc
イメージと同じリポジトリーになるようにOCI_DISK_IMAGE_REPO
環境変数を定義します。以下のコマンドを実行します。OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-iso
OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-iso
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してマニフェストリストを作成します。
sudo podman manifest create \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
sudo podman manifest create \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、ISO ディスクイメージを OCI アーティファクトとしてマニフェストリストに追加します。
sudo podman manifest add \ --artifact --artifact-type application/vnd.diskimage.iso \ --arch=amd64 --os=linux \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ "${PWD}/output/bootiso/install.iso"
sudo podman manifest add \ --artifact --artifact-type application/vnd.diskimage.iso \ --arch=amd64 --os=linux \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ "${PWD}/output/bootiso/install.iso"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Sigstore 秘密鍵でマニフェストリストに署名し、イメージをレジストリーにプッシュします。以下のコマンドを実行します。
sudo podman manifest push --all \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ docker://${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
sudo podman manifest push --all \ --sign-by-sigstore-private-key ./signingkey.private \ ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} \ docker://${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2.9. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Edge Manager で利用可能なリポジトリーの完全なリストは、Red Hat Advanced Cluster Management for Kubernetes のダウンロード を参照してください。
- 異なるターゲットプラットフォームでのオペレーティングシステムイメージのビルドの詳細は、コンテナープルシークレットの設定 を参照してください。
1.3.3. 特定のターゲットプラットフォームへのビルド リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Virtualization および VMware vSphere との統合を最適化するために、証明書およびエージェント設定をイメージに埋め込むのではなく、cloud-init
ユーティリティーで登録できます。さらに、プラットフォームを統合するための適切なゲストツールを含めることもできます。このプロセスは、Red Hat OpenShift Virtualization の QCOW2
や vSphere の VMDK
などのプラットフォーム固有のイメージ形式を生成します。
1.3.3.1. Red Hat OpenShift Virtualization のイメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Virtualization のオペレーティングシステムイメージとディスクイメージを ビルドする場合は、以下の変更を含む Red Hat Edge Manager プロセスの bootc オペレーティングシステムイメージ のビルド に従います。
-
仮想デバイスをプロビジョニングするときに、
cloud-init
を介して登録証明書またはエージェント設定を挿入して、遅延バインディングを使用します。 -
open-vm-tools
ゲストツールをイメージに追加します。 -
iso
の代わりに、qcow2
タイプのディスクイメージを構築します。
以下の手順への変更で手順を実行します。
- Red Hat Edge Manager エージェントおよび仮想マシンゲストツールを含む RHEL 9 をベースとするオペレーティングシステムイメージをビルドしますが、エージェント設定を除外します。
以下の内容で、
Containerfile
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
podman-compose
アプリケーションのサポートを有効にするには、以下のセクションをContainerfile
ファイルに追加します。RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.service
RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \ dnf -y install podman-compose && \ dnf -y clean all && \ systemctl enable podman.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
汎用イメージビルドプロセスに従って、bootc
オペレーティングシステムイメージをビルド、署名、および公開します。
次のコマンドを実行して、
output
という名前のディレクトリーを作成します。mkdir -p output
mkdir -p output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、オペレーティングシステムイメージから
vmdk
タイプのオペレーティングシステムディスクイメージを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
bootc-image-builder
が完了すると、ディスクイメージは ${PWD}/output/vmdk/disk.vmdk
パスで見つけることができます。
Red Hat OpenShift Virtualization は Open Container Initiative (OCI)レジストリーからディスクイメージをダウンロードできますが、OCI アーティファクトの代わりにコンテナーイメージを使用します。
QCoW2
ディスクイメージをビルドし、署名し、アップロードするには、以下の手順を実行します。
以下の内容で、
Containerfile.qcow2
という名前のファイルを作成します。FROM registry.access.redhat.com/ubi9/ubi:latest AS builder ADD --chown=107:107 output/qcow2/disk.qcow2 /disk/ RUN chmod 0440 /disk/* FROM scratch COPY --from=builder /disk/* /disk/
FROM registry.access.redhat.com/ubi9/ubi:latest AS builder ADD --chown=107:107 output/qcow2/disk.qcow2 /disk/
1 RUN chmod 0440 /disk/*
2 FROM scratch COPY --from=builder /disk/* /disk/
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow ディスクイメージをビルド、署名、公開します。以下のコマンドを実行します。
sudo chown -R $(whoami):$(whoami) "${PWD}/output" OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-qcow2 sudo podman build -t ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} -f Containerfile.qcow2 . sudo podman push --sign-by-sigstore-private-key ./signingkey.private ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
sudo chown -R $(whoami):$(whoami) "${PWD}/output" OCI_DISK_IMAGE_REPO=${OCI_IMAGE_REPO}/diskimage-qcow2 sudo podman build -t ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} -f Containerfile.qcow2 . sudo podman push --sign-by-sigstore-private-key ./signingkey.private ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.3.2. VMware vSphere のイメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
VMware vSphere 用のオペレーティングシステムイメージとディスクイメージを 構築する場合は、次の変更で Red Hat Edge Manager プロセスの bootc オペレーティングシステムイメージ のビルド に従います。
-
仮想デバイスをプロビジョニングするときに、
cloud-init
を介して登録証明書またはエージェント設定を注入して、遅延バインディングを使用します。 -
open-vm-tools
ゲストツールをイメージに追加します。 -
iso
の代わりにvmdk
タイプのディスクイメージをビルドします。
Red Hat Edge Manager エージェントおよび VM ゲストツールを含む RHEL 9 をベースとするオペレーティングシステムイメージをビルドしますが、エージェント設定を除外します。
以下の手順に変更を加えて、一般的な手順を実行します。
以下の内容で、
Containerfile
という名前のファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
output
という名前のディレクトリーを作成します。mkdir -p output
mkdir -p output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、オペレーティングシステムイメージから
vmdk
タイプのオペレーティングシステムディスクイメージを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
bootc-image-builder
が完了すると、ディスクイメージは ${PWD}/output/vmdk/disk.vmdk
パスで見つけることができます。
1.4. デバイスのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: さまざまな環境で Red Hat Edge Manager を使用してデバイスをプロビジョニングできます。Red Hat Edge Manager で使用するためにビルドしたオペレーティングシステムイメージまたはディスクイメージを使用し、ターゲット環境に応じて、物理または仮想デバイスをプロビジョニングします。
必要なアクセス権: クラスター管理者
以下のドキュメントを参照してください。
1.4.1. 物理デバイスのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: bootc-image-builder
ツールを使用してオペレーティングシステムイメージから ISO ディスクイメージを作成すると、そのイメージはダウンロード可能な RHEL ISO に似たものになります。ただし、オペレーティングシステムイメージの内容は ISO ディスクイメージに組み込まれています。
ネットワークにアクセスせずに ISO ディスクイメージをベアメタルシステムにインストールするには、カスタム ISO コンテナーイメージのデプロイ を参照してください。
ネットワーク経由で ISO をインストールする方法は、PXE ブートでの ISO bootc イメージのデプロイ を参照してください。
1.4.2. OpenShift Virtualization でのデバイスのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: OCI コンテナーレジストリーでホストされている QCoW2 コンテナーディスクイメージを使用して、OpenShift Virtualization 上に仮想マシンをプロビジョニングできます。
オペレーティングシステムイメージに Red Hat Edge Manager エージェントの登録設定がまだ含まれていない場合は、プロビジョニング時に cloud-init
ユーザーデータを介して設定を注入できます。
詳細は、関連情報 セクションを参照してください。
1.4.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
flightctl
CLI をインストールし、Red Hat Edge Manager サービスインスタンスにログインしている。 -
oc
CLI をインストールし、これを使用して OpenShift クラスターインスタンスにログインして、仮想マシンを作成するプロジェクトに変更している。
1.4.2.2. cloud-init 設定の作成 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init
設定を作成するには、以下の手順を実行します。
新しい Red Hat Edge Manager エージェントの登録設定を要求し、それを
config.yaml
というファイルに保存します。以下のコマンドを実行します。flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 初回起動時にエージェント設定を正しい場所に配置する
cloud-config.yaml
という名前のクラウド設定ユーザーデータファイルを作成します。以下のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラウド設定ユーザーデータファイルを含む Kubernetes
Secret
を作成します。oc create secret generic enrollment-secret --from-file=userdata=cloud-config.yaml
oc create secret generic enrollment-secret --from-file=userdata=cloud-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.2.3. 仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
QCoW2 コンテナーディスクイメージから主要なディスクを設定し、登録シークレットから設定された cloud-init
設定ドライブを持つ仮想マシンを作成します。以下の手順を実行します。
次のコマンドを実行して、
VirtualMachine
リソースマニフェストを含むファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、リソースマニフェストをクラスターに適用します。
oc apply -f my-bootc-vm.yaml
oc apply -f my-bootc-vm.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.2.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
-
cloud-init
ユーザーデータを使用して設定を注入する方法は、Cloud-init のドキュメント を参照してください。 - 特定のターゲットプラットフォームの構築 を 参照してください。
1.5. デバイスの管理 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Edge Manager は、デバイスの登録から廃止までのデバイスのライフサイクルを管理します。デバイスのライフサイクルには、Red Hat Edge Manager でのデバイスの整理、モニタリング、更新など、デバイス管理も含まれます。
デバイスを個別に、またはフリートで管理できます。Red Hat Edge Manager を使用すると、多くのデバイスを個別に管理する代わりに、デバイスのフリート全体を 1 つのオブジェクトとして管理できます。
望ましい設定を指定する必要があるのは 1 度だけです。その後、Red Hat Edge Manager は、フリート内のすべてのデバイスに設定を適用します。
個々のデバイス管理を理解することは、フリートでデバイスを管理するための基盤です。以下のシナリオでは、デバイスを個別に管理することを推奨します。
- いくつかのデバイスで設定が大幅に異なる場合。
- 外部の自動化を使用してデバイスを更新する場合。
必要なアクセス権: クラスター管理者
次のドキュメントは、個々のデバイスの管理に重点を置いています。
フリートでのデバイス管理の詳細は、デバイスフリートの管理 を参照してください。
1.5.1. デバイスを登録する リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Edge Manager を使用してデバイスを管理するには、デバイスを Red Hat Edge Manager サービスに登録する必要があります。
デバイスで初めて Red Hat Edge Manager エージェントが実行されると、エージェントは暗号キーペアを生成して登録プロセスを準備します。デバイスの暗号キーペアは、公開鍵と秘密鍵で構成されます。秘密鍵はデバイスから外部に出ることがないため、デバイスの複製やなりすましを防ぐことができます。キーペアは、登録中に Red Hat Edge Manager サービスに登録され、デバイスの廃止時に削除されます。
デバイスがまだ登録されていない場合、エージェントはサービス検出を実行して Red Hat Edge Manager サービスインスタンスを検索します。次に、デバイスは、サービスへの安全で mTLS で保護されるネットワーク接続を確立します。デバイスは、イメージのビルド時またはデバイスのプロビジョニング時に取得したデバイスの X.509 登録証明書を使用します。デバイスは、以下を含む登録要求をサービスに送信します。
- デバイスのハードウェアとオペレーティングシステムの説明
- 初期管理証明書を取得するためのデバイスの暗号化アイデンティティーを含む X.509 証明書署名要求
そのデバイスは信頼済みとはみなされず、認可されたユーザーが要求を許可または拒否するまで、デバイス lobby で隔離された状態のままになります。
詳細は、次のセクションを参照してください。
1.5.1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Edge Manager CLI をインストールする必要がある。Red Hat Edge Manager CLI のインストール を参照してください。
- Red Hat Edge Manager サービスにログインする必要がある。
1.5.1.2. CLI を使用したデバイスの登録 リンクのコピーリンクがクリップボードにコピーされました!
デバイスを Red Hat Edge Manager サービスに登録してから管理する必要があります。以下の手順を実行します。
次のコマンドを実行して、現在承認を待機しているすべてのデバイスをリスト表示します。
flightctl get enrollmentrequests --field-selector="status.approval.approved != true"
flightctl get enrollmentrequests --field-selector="status.approval.approved != true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
NAME APPROVAL APPROVER APPROVED LABELS <device_name> Pending <none> <none>
NAME APPROVAL APPROVER APPROVED LABELS <device_name> Pending <none> <none>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記: 一意のデバイス名はエージェントにより生成され、変更できません。エージェントは、デバイス名として公開鍵の Base32 エンコードハッシュを選択します。
登録要求の名前を指定して、登録要求を承認します。オプションで、
--label
または-l
フラグを使用してラベルをデバイスに追加できます。以下の例を参照してください。flightctl approve -l region=eu-west-1 -l site=factory-berlin enrollmentrequest/54shovu028bvj6stkovjcvovjgo0r48618khdd5huhdjfn6raskg
flightctl approve -l region=eu-west-1 -l site=factory-berlin enrollmentrequest/54shovu028bvj6stkovjcvovjgo0r48618khdd5huhdjfn6raskg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
NAME APPROVAL APPROVER APPROVED LABELS <device_name> Approved user region=eu-west-1,site=factory-berlin
NAME APPROVAL APPROVER APPROVED LABELS <device_name> Approved user region=eu-west-1,site=factory-berlin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
登録要求を承認した後、サービスは管理証明書を発行し、デバイスをインベントリーに登録します。これでデバイスを管理する準備が整いました。
1.5.2. デバイスの表示 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: インベントリー内のデバイスに関する詳細情報を取得するには、Red Hat Edge Manager CLI を使用できます。
1.5.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Edge Manager CLI をインストールする必要がある。Red Hat Edge Manager CLI のインストール を参照してください。
- Red Hat Edge Manager サービスにログインする必要がある。
- 少なくとも 1 つのデバイスを登録する必要があります。
1.5.2.2. デバイスインベントリーとデバイスの詳細の表示 リンクのコピーリンクがクリップボードにコピーされました!
デバイスインベントリー内のデバイスを表示します。以下の手順を実行します。
次のコマンドを実行して、デバイスインベントリー内のデバイスを表示します。
flightctl get devices
flightctl get devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN <device_name> <none> <none> Online Up-to-date <none> 3 seconds ago
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN <device_name> <none> <none> Online Up-to-date <none> 3 seconds ago
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、このデバイスの詳細を YAML 形式で表示します。
flightctl get device/<device_name> -o yaml
flightctl get device/<device_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.3. ラベルおよびラベルセレクター リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: 個々のデバイス、フリート、その他のリソースを含むリソースにラベルを割り当てることで整理できます。たとえば、ラベルを使用してロケーション、ハードウェアタイプ、目的を記録できます。Red Hat Edge Manager ラベルは、Kubernetes ラベルとラベルセレクターと同じ構文、原則、および Operator に従います。
デバイスのインベントリーを表示するとき、またはデバイスに操作を適用するときに、ラベルの付いたデバイスを選択できます。
ラベルは、キーを使用してデバイスをグループ化する key=value
形式に従います。たとえば、ラベルが site=<location>
の命名規則に従う場合、サイトごとにデバイスをグループ化できます。
キーのみを含むラベルを使用することもできます。
ラベルが有効であるためには、次のルールに従う必要があります。
- キーと値はそれぞれ 63 文字以下である必要があります。
-
キーと値は、英数字 (
a-z
、A-Z
、0-9
) で構成可能です。 -
キーと値には、ダッシュ (
-
)、アンダースコア (_
)、ドット (.
) を含めることができますが、これらを先頭または末尾に配置することはできません。 - 値は省略できます。
次の方法でラベルをリソースに適用できます。
- イメージのビルド時にデフォルトのラベルセットを定義し、デプロイ時にすべてのデバイスに自動適用されるようにします。
- 登録時に初期ラベルを割り当てます。
- 登録後、ラベルを割り当てます。
リソースにラベルが付けられる場合、ラベルセレクターを作成することでリソースのサブセットを選択できます。ラベルセレクターは、同じラベルのセットを持つリソースを選択するためのラベルのコンマ区切りリストです。
以下の例を参照してください。
ラベルセレクターの例 | 選択したデバイス |
---|---|
|
|
|
|
|
|
詳細は、Labels and Selectors を参照してください。
1.5.4. ラベルの使用 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: ラベルを使用してデバイスを整理できます。
1.5.4.1. CLI を使用したデバイスとそのラベルの表示 リンクのコピーリンクがクリップボードにコピーされました!
デバイスとそれに関連するラベルを表示します。ラベルを使用して、デバイスおよびデバイスフリートを整理できます。
以下の手順を実行します。
-o wide
オプションを使用して、インベントリー内のデバイスを表示します。flightctl get devices -o wide
flightctl get devices -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 seconds ago region=eu-west-1,site=factory-berlin <device2_name> <none> <none> Online Up-to-date <none> 1 minute ago region=eu-west-1,site=factory-madrid
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 seconds ago region=eu-west-1,site=factory-berlin <device2_name> <none> <none> Online Up-to-date <none> 1 minute ago region=eu-west-1,site=factory-madrid
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -l <key=value>
オプションを使用して、特定のラベルまたはラベルセットでインベントリー内のデバイスを表示します。flightctl get devices -l site=factory-berlin -o wide
flightctl get devices -l site=factory-berlin -o wide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 seconds ago region=eu-west-1,site=factory-berlin
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 seconds ago region=eu-west-1,site=factory-berlin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.4.2. CLI を使用したラベルの更新 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用してデバイスでラベルを更新します。以下の手順を実行します。
次のコマンドを実行して、デバイスの現在の定義をファイルにエクスポートします。
flightctl get device/<device1_name> -o yaml > my_device.yaml
flightctl get device/<device1_name> -o yaml > my_device.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 任意のエディターを使用して
my_device.yaml
ファイルを編集します。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルを保存し、次のコマンドを実行して更新されたデバイス定義を適用します。
flightctl apply -f my_device.yaml
flightctl apply -f my_device.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、変更が適用されていることを確認します。
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 minutes ago some_key=some_value,some_other_key=some_other_value <device2_name> <none> <none> Online Up-to-date <none> 4 minutes ago region=eu-west-1,site=factory-madrid
NAME ALIAS OWNER SYSTEM UPDATED APPLICATIONS LAST SEEN LABELS <device1_name> <none> <none> Online Up-to-date <none> 3 minutes ago some_key=some_value,some_other_key=some_other_value <device2_name> <none> <none> Online Up-to-date <none> 4 minutes ago region=eu-west-1,site=factory-madrid
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.5. フィールドセレクター リンクのコピーリンクがクリップボードにコピーされました!
フィールドセレクターは、特定のリソースフィールドの値に基づいて、個々のデバイス、フリート、およびその他のリソースを含む Red Hat Edge Manager リソースのリストをフィルタリングします。
フィールドセレクターは、Kubernetes のフィールドセレクターおよびラベルセレクターと同じ構文、原則、Operator に従いますが、より高度な検索ユースケース用に追加の Operator も利用できます。
1.5.5.1. サポートされるフィールド リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager リソースには、選択可能なメタデータフィールドのセットが表示されます。
各リソースは以下のメタデータフィールドをサポートします。
-
metadata.name
-
metadata.owner
-
metadata.creationTimestamp
注記: ラベルをクエリーするには、ラベルセレクターを使用して詳細で柔軟なラベルのフィルターを行います。
詳細は、ラベルとラベルセレクター を参照してください。
1.5.5.2. 追加のサポートされるフィールドのリスト リンクのコピーリンクがクリップボードにコピーされました!
メタデータフィールドに加えて、各リソースには選択可能な固有のフィールドセットがあり、リソース固有の属性に基づいて、フィルタリングと選択にさらなる柔軟性を提供します。
以下の表は、各リソースの種類でフィルタリングがサポートされるフィールドのリストです。
種類 | フィールド |
証明書署名要求 |
|
デバイス |
|
登録要求 |
|
フリート |
|
リポジトリー |
|
Resource Sync |
|
1.5.5.3. フィールド検出 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager リソースによっては、追加のサポートされるフィールドを公開する場合があります。flightctl
コマンドに --field-selector
オプションを使用することで、サポートされているフィールドを確認できます。サポートされていないフィールドを使用しようとすると、エラーメッセージに利用可能なサポート対象フィールドがリスト表示されます。以下の例を参照してください。
flightctl get device --field-selector='text'
flightctl get device --field-selector='text'
Error: listing devices: 400, message: unknown or unsupported selector: unable to resolve selector name "text". Supported selectors are: [metadata.alias metadata.creationTimestamp metadata.name metadata.nameoralias metadata.owner status.applicationsSummary.status status.lastSeen status.summary.status status.updated.status]
Error: listing devices: 400, message: unknown or unsupported selector: unable to resolve selector name "text". Supported selectors are: [metadata.alias metadata.creationTimestamp metadata.name metadata.nameoralias metadata.owner status.applicationsSummary.status status.lastSeen status.summary.status status.updated.status]
フィールド text
は、フィルタリングのための有効なフィールドではありません。エラーメッセージは、Device
リソースの --field-selector
で使用できるサポート対象のフィールドのリストを提供します。
サポートされているフィールドのいずれかを使用することができます。
flightctl get devices --field-selector 'metadata.alias contains cluster'
flightctl get devices --field-selector 'metadata.alias contains cluster'
metadata.alias
フィールドは、包含 Operator contains
を使用して、値 cluster
があるかどうかがチェックされます。
1.5.5.3.1. 例 リンクのコピーリンクがクリップボードにコピーされました!
名前による特定デバイスの除外
次のコマンドは、名前で特定のデバイスを除外します。
flightctl get devices --field-selector 'metadata.name!=<device_name>'
flightctl get devices --field-selector 'metadata.name!=<device_name>'
所有者、ラベル、および作成タイムスタンプでフィルタリングします。
このコマンドは、us
リージョンにあり、2024 に作成された Fleet/pos-fleet
が所有するデバイスを取得します。
flightctl get devices --field-selector 'metadata.owner=Fleet/pos-fleet, metadata.creationTimestamp >= 2024-01-01T00:00:00Z, metadata.creationTimestamp < 2025-01-01T00:00:00Z' -l 'region=us'
flightctl get devices --field-selector 'metadata.owner=Fleet/pos-fleet, metadata.creationTimestamp >= 2024-01-01T00:00:00Z, metadata.creationTimestamp < 2025-01-01T00:00:00Z' -l 'region=us'
所有者、ラベル、およびデバイスのステータスでフィルタリングします。
次のコマンドは、us
リージョンにあり、Unknown
または OutOfDate
のいずれかの status.updated.status
で、Fleet/pos-fleet
が所有するデバイスを取得します。
flightctl get devices --field-selector 'metadata.owner=Fleet/pos-fleet, status.updated.status in (Unknown, OutOfDate)' -l 'region=us'
flightctl get devices --field-selector 'metadata.owner=Fleet/pos-fleet, status.updated.status in (Unknown, OutOfDate)' -l 'region=us'
1.5.5.4. サポート対象の Operator リンクのコピーリンクがクリップボードにコピーされました!
Operator | 記号 | 説明 |
Exists |
|
フィールドが存在するかチェックします。たとえば、 |
DoesNotExist |
| フィールドが存在しないか確認します。 |
Equals |
| フィールドが値と等しいか確認します。 |
DoubleEquals |
| 別の形式の等価性チェック。 |
NotEquals |
| フィールドが値と等しくないか確認します。 |
GreaterThan |
| フィールドが値よりも大きいか確認します。 |
GreaterThanOrEquals |
| フィールドが値以上であるか確認します。 |
LessThan |
| フィールドが値未満か確認します。 |
LessThanOrEquals |
| フィールドが値以下であるか確認します。 |
In |
| フィールドが値のリスト内にあるか確認します。 |
NotIn |
| フィールドが値のリストにないか確認します。 |
Contains |
| フィールドに値があるか確認します。 |
NotContains |
| フィールドに値が含まれていないか確認します。 |
1.5.5.5. フィールドタイプ別の Operator の使用量 リンクのコピーリンクがクリップボードにコピーされました!
各フィールドタイプは、特定の Operator のサブセットをサポートします。
フィールドタイプ | サポート対象の Operator | 値 |
文字列 |
| テキスト文字列 |
タイムスタンプ |
| RFC 3339 形式 |
数値 |
| 番号形式 |
ブール値 |
|
ブール値の形式 ( |
配列 |
| 配列要素 |
1.5.6. オペレーティングシステムの更新 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: デバイス仕様でターゲットオペレーティングシステムイメージの名前またはバージョンを更新することで、デバイスのオペレーティングシステムを更新できます。
Red Hat Edge Manager エージェントがサービスと通信すると、エージェントは要求された更新を検出します。その後、エージェントはバックグラウンドで、新しいオペレーティングシステムのバージョンのダウンロードと検証を自動的に開始します。
Red Hat Edge Manager エージェントは、更新ポリシーに従って実際のシステム更新をスケジュールします。スケジュールされた更新時に、エージェントは現在実行中のオペレーティングシステムを中断することなく、新しいバージョンをインストールします。
最後に、デバイスは新規バージョンで再起動します。
Red Hat Edge Manager は現在、以下のイメージタイプとイメージ参照形式をサポートしています。
イメージタイプ | イメージ参照 |
bootc |
コンテナーレジストリーへの OCI イメージ参照。例: |
プロセス中に、エージェントはステータスの更新をサービスに送信します。デバイスのステータスを表示することで、更新プロセスを監視できます。詳細は、デバイスの表示 を参照してください。
1.5.6.1. CLI でのオペレーティングシステムの更新 リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用してデバイスを更新します。以下の手順を実行します。
次のコマンドを実行して、デバイスの現在のリソースマニフェストを取得します。
flightctl get device/<device_name> -o yaml > my_device.yaml
flightctl get device/<device_name> -o yaml > my_device.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Device
リソースを編集して、新しいオペレーティングシステム名とバージョンターゲットを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、更新された
Device
リソースを適用します。flightctl apply -f <device_name>.yaml
flightctl apply -f <device_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.7. エッジデバイスのオペレーティングシステム設定 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: 最大限の一貫性と再現性を実現するために、オペレーティングシステムレベルのホスト設定をイメージに含めることができます。
設定を更新するには、新しいオペレーティングシステムイメージを作成し、新しいイメージでデバイスを更新します。
ただし、以下の場合には、新しいイメージでデバイスを更新することは実用的ではありません。
- イメージ内に設定がない場合。
- 設定がデバイスに固有のものである必要がある場合。
- この設定は、オペレーティングシステムイメージを更新して再起動せずに、ランタイム時に更新できる必要があります。
このような場合には、デバイスのファイルシステムに存在する設定ファイルのセットを宣言できます。Red Hat Edge Manager エージェントは、すべてのファイルがファイルシステムで正常に更新されるか、更新前の状態にロールバックするかを確認しながら、設定ファイルに更新を適用します。ユーザーがデバイスのオペレーティングシステムと設定セットの両方を同時に更新すると、Red Hat Edge Manager エージェントは最初にオペレーティングシステムを更新し、その後、指定された設定ファイルのセットを適用します。
Red Hat Edge Manager エージェントが順番に適用する設定セットのリストを指定することもできます。競合が発生した場合は、最後に適用された設定セットは有効です。
重要: Red Hat Edge Manager エージェントがディスクの設定を更新した後、実行中のアプリケーションは、設定を有効にするために、新しい設定をメモリーにリロードする必要があります。更新に再起動が必要な場合、systemd
は新しい設定と正しい順序でアプリケーションを自動的に再起動します。更新に再起動が含まれない場合、多くのアプリケーションは設定ファイルへの変更を検出し、ファイルを自動的にリロードできます。アプリケーションが変更検出をサポートしていない場合は、特定の条件が満たされている場合に、デバイスのライフサイクルフックを使用してスクリプトまたはコマンドを実行できます。
1.5.7.1. 設定プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager では、設定プロバイダーと呼ばれる複数のソースから設定を提供できます。Red Hat Edge Manager は現在、以下の設定プロバイダーをサポートします。
- Git 設定プロバイダー
- Git リポジトリーからデバイス設定ファイルを取得します。
- Kubernetes Secret プロバイダー
- Kubernetes クラスターからシークレットを取得し、そのコンテンツをデバイスのファイルシステムに書き込みます。
- HTTP 設定プロバイダー
- HTTP (S) エンドポイントからデバイス設定ファイルを取得します。
- インライン設定プロバイダー
- 外部システムをクエリーしなくても、デバイスマニフェストでデバイス設定ファイルをインラインで指定できます。
以下のセクションでは、設定プロバイダーの詳細を説明します。
1.5.7.1.1. Git リポジトリーからの設定 リンクのコピーリンクがクリップボードにコピーされました!
デバイス設定を GitHub や GitLab などの Git リポジトリーに保存できます。次に、Git 設定プロバイダーを追加して、Red Hat Edge Manager がリポジトリーからデバイスのファイルシステムに設定を同期できるようにします。
Git 設定プロバイダーは以下のパラメーターを取ります。
パラメーター | 説明 |
|
Red Hat Edge Manager で定義された |
| チェックアウトするリポジトリーのブランチ、タグ、またはコミット。 |
|
ファイルおよびサブディレクトリーがデバイスのファイルシステムに同期されるリポジトリー内のディレクトリーへの絶対パス。 |
|
オプション: リポジトリーの内容を書き込むためのデバイスのファイルシステム内のディレクトリーへの絶対パス。デフォルトでは、値はファイルシステムの root ( |
Repository
リソースは、Red Hat Edge Manager が使用する必要のある Git リポジトリー、プロトコル、およびアクセス認証情報を定義します。リポジトリーは一度だけセットアップする必要があります。セットアップ後、リポジトリーを使用して、個々のデバイスまたはデバイスフリートを設定できます。
1.5.7.1.2. Kubernetes クラスターからのシークレット リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager は、Red Hat Edge Manager が Kubernetes シークレット用に実行されている Kubernetes クラスターのみをクエリーできます。そのシークレットの内容は、デバイスのファイルシステムのパスに書き込むことができます。
Kubernetes Secret Provider は以下のパラメーターを取ります。
パラメーター | 説明 |
| シークレットの名前。 |
| シークレットの namespace。 |
| シークレットの内容を書き込むためのデバイスのファイルシステム内のディレクトリー。 |
注記: Red Hat Edge Manager には、定義された namespace のシークレットにアクセスする権限が必要です。たとえば、ClusterRole
と ClusterRoleBinding
を作成すると、flightctl-worker
サービスアカウントがその namespace のシークレットを取得し、リスト表示できます。
1.5.7.1.3. HTTP サーバーからの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager は、設定のために HTTP サーバーにクエリーを実行できます。HTTP サーバーは、デバイスに対して静的または動的に生成された設定を提供できます。
HTTP 設定プロバイダーは以下のパラメーターを取ります。
パラメーター | 説明 |
|
Red Hat Edge Manager で定義された |
|
|
| HTTP サーバーの応答を書き込むためのデバイスのファイルシステム内のファイルへの絶対パス。 |
Repository
リソースは、Red Hat Edge Manager が接続するための HTTP サーバーを指定し、使用するプロトコルとアクセスの認証情報を指定します。レポジトリーは、一度セットアップする必要があります。その後、レポジトリーを使用して複数のデバイスまたはデバイスフリートを設定できます。
1.5.7.1.4. デバイス仕様のインライン設定 リンクのコピーリンクがクリップボードにコピーされました!
設定はデバイス仕様にインラインで指定できます。インラインデバイス仕様を使用する場合、Red Hat Edge Manager は設定を取得するために外部システムに接続する必要はありません。
Inline 設定プロバイダーは、ファイル仕様のリストを取ります。各ファイル仕様は以下のパラメーターを取ります。
パラメーター | 説明 |
| コンテンツを書き込むためのデバイスのファイルシステム内のファイルへの絶対パス。指定したパスにファイルがすでに存在する場合、ファイルは上書きされます。 |
| ファイルの UTF-8 または base64 でエンコードされたコンテンツ。 |
|
コンテンツのエンコード方法を定義します。 |
|
オプション: ファイルの権限モード。先頭にゼロで 8 進数 (例: |
|
オプション: ファイルの所有者。名前または数値 ID として指定します。デフォルト値は |
| オプション: ファイルのグループ。名前または数値 ID として指定します。 |
1.5.7.2. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- デバイスのライフサイクルフックおよび Red Hat Edge Manager エージェントで使用されるデフォルトのルールの詳細は、デバイスのライフサイクルフック を参照してください。
- Red Hat Edge Manager 権限を付与する方法は、Red Hat Edge Manager の認可 を参照してください。
1.5.8. MicroShift クラスターを自動登録するためのフリートの設定 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: MicroShift を含むオペレーティングシステムイメージを実行しているデバイスフリートがある場合は、MicroShift クラスターを Red Hat Advanced Cluster Management に自動登録するようにフリートを設定できます。
1.5.8.1. デバイステンプレートの設定 リンクのコピーリンクがクリップボードにコピーされました!
フリート内での自動登録を有効にするには、デバイステンプレートに設定を追加します。以下の手順を実行します。
crd.yaml
ファイルのfilePath
、repository
、およびsuffix
を含むacm-crd
リソース設定をFleet
リソースに追加します。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例のように、
filePath
、repository
、suffix
を使用してacm-import
リソース設定を追加します。- name: acm-import httpRef: filePath: /var/local/acm-import/import.yaml repository: acm-registration suffix: /agent-registration/manifests/{{.metadata.name}}
- name: acm-import httpRef: filePath: /var/local/acm-import/import.yaml repository: acm-registration suffix: /agent-registration/manifests/{{.metadata.name}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: MicroShift クラスターが Red Hat Advanced Cluster Management イメージをプルしなかった場合は、テンプレートに次の追加部分に示すように、
pull-secret
リソースを追加します。- name: pull-secret inline: - path: "/etc/crio/openshift-pull-secret" content: "{\"auths\":{...}}"
- name: pull-secret inline: - path: "/etc/crio/openshift-pull-secret" content: "{\"auths\":{...}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow crd.yaml
ファイルとimport.yaml
ファイルでkubectl apply -f
を実行するには、次の条件付きif
要件を含むapply-acm-manifests
リソースを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
コンソールで、デバイスに
fleet:acm
というラベルを付け、Approve をクリックすると、fleet-acm
フリートが自動的に選択されます。ラベルを使用してデバイスを管理する方法は、デバイスフリートの管理 を参照してください。
1.5.9. CLI の Git リポジトリーからのデバイス設定の管理 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Git リポジトリーでデバイス設定を作成して適用します。
以下の手順を実行します。
site-settings
という名前のRepository
リソースの次の定義が含まれるsite-settings-repo.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
Repository
リソースを作成します。flightctl apply -f site-settings-repo.yaml
flightctl apply -f site-settings-repo.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、リソースが正しく作成され、Red Hat Edge Manager がアクセスできることを確認します。
flightctl get repository/site-settings
flightctl get repository/site-settings
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
NAME TYPE REPOSITORY URL ACCESSIBLE site-settings git https://github.com/<your_org>/<your_repo>.git True
NAME TYPE REPOSITORY URL ACCESSIBLE site-settings git https://github.com/<your_org>/<your_repo>.git True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デバイス仕様を更新して、
example-site
設定をデバイスに適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5.10. デバイスのライフサイクルフック リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Edge Manager エージェントは、デバイスライフサイクルフックを使用して、デバイスライフサイクルの特定のポイントでユーザー定義のコマンドを実行できます。たとえば、アプリケーションデータのバックアップを作成するオペレーティングシステムイメージにシェルスクリプトを追加できます。次に、エージェントがオペレーティングシステムの更新を開始する前に、スクリプトが実行され、正常に完了するように指定できます。
別の例として、特定のアプリケーションやシステムサービスは、ファイルがディスク上で変更されても、設定ファイルを自動的にリロードしません。エージェントが更新プロセスを完了した後に呼び出される別のフックとしてコマンドを指定することで、設定ファイルを手動でリロードできます。
次のデバイスのライフサイクルフックがサポートされています。
ライフサイクルフック | 説明 |
| エージェントが更新の準備を完了した後、ただし、オペレーティングシステムを変更する前に、フックが呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルします。 |
| フックは、エージェントがディスクに更新を書き込んだ後に呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。 |
| フックは、システムが再起動する前に呼び出されます。エージェントは、アクションの完了またはタイムアウトまで再起動をブロックします。このフックの何らかのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。 |
| フックは、エージェントが再起動後に最初に起動すると呼び出されます。このフックの何らかのアクションが失敗を返した場合、エージェントは失敗を報告しますが、起動を継続します。 |
1.5.10.1. ルールファイル リンクのコピーリンクがクリップボードにコピーされました!
デバイスのファイルシステムの以下のいずれかのロケーションに、ルールファイルを追加することで、デバイスのライフサイクルフックを定義できます。
-
/usr/lib/flightctl/hooks.d/<lifecycle_hook_name>/
ドロップインディレクトリーのルールは読み取り専用です。/usr
ディレクトリーにルールを追加するには、イメージのビルド中にオペレーティングシステムイメージにルールを追加する必要があります。 -
/etc/flightctl/hooks.d/<lifecycle_hook_name>/
ドロップインディレクトリーのルールは読み書きが可能です。複数の方法を使用して、ランタイム時にルールを更新できます。
ファイルを作成して配置するときは、以下を考慮する必要があります。
- ルールの名前はすべて小文字である必要があります。
- 両方のロケーションでルールを定義すると、ルールはマージされます。
- 複数のルールファイルをライフサイクルフックディレクトリーに追加すると、ファイルはファイル名の辞書的な順序で処理されます。
-
両方のロケーションで同じファイル名を持つファイルを定義する場合、
/etc
フォルダー内のファイルは、/usr
フォルダー内の同じ名前のファイルよりも優先されます。
ルールファイルは YAML 形式で記述され、1 つ以上のアクションのリストが含まれます。アクションは、外部コマンドを実行する指示である場合があります。
フックに多くのアクションを指定すると、アクションは順番に実行され、次のアクションを開始する前に 1 つのアクションを終了します。
アクションが失敗を返した場合、以下のアクションはスキップされます。
run
アクションは以下のパラメーターを取ります。
パラメーター | 説明 |
|
実行するコマンドへの絶対パス。その後にフラグまたは引数が続きます (例: |
| オプション: コマンドの環境変数として設定するキーと値のペアのリスト。 |
| オプション: コマンドが実行されるディレクトリー。 |
|
オプション: アクションが完了するまで許可される最大時間。期間は、単一の正の整数として指定し、その後に時間単位を指定します。 |
| オプション: アクションを実行するために true でなければならない条件のリスト。指定されていない場合、アクションは無条件に実行されます。 |
デフォルトでは、アクションはフックがトリガーされるたびに実行されます。ただし、afterUpdating
フックの場合、If
パラメーターを使用して、アクションを実行するために true でなければならない条件を追加できます。それ以外の場合、アクションはスキップされます。
たとえば、更新中に特定のファイルまたはディレクトリーが変更された場合にのみアクションを実行するには、以下のパラメーターを取るパス条件を定義できます。
パラメーター | 説明 |
|
アクションを実行する条件として、更新中に変更される必要があるファイルまたはディレクトリーへの絶対パス。スラッシュ ( |
|
|
afterUpdating
フックでアクションのパス条件を指定する場合、コマンドの引数に含めることができ、変更されたファイルの絶対パスに置き換えられる次の変数があります。
変数 | 説明 |
| パス条件で指定されたファイルまたはディレクトリーへの絶対パス。 |
| 更新時に変更され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。 |
| 更新時に作成され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。 |
| 更新時に更新され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。 |
| 更新時に削除され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。 |
Red Hat Edge Manager エージェントには、/usr/lib/flightctl/hooks.d/afterupdating/00-default.yaml
で定義された組み込みのルールセットが含まれています。特定のファイルが変更された場合、以下のコマンドが実行されます。
File | コマンド | 説明 |
|
|
|
|
|
|
|
|
|
1.5.10.2. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- ネットワークの設定および管理 を参照してください。
1.5.11. デバイスリソースのモニタリング リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: デバイスリソースのリソースモニターを設定し、リソースの使用率が定義されたしきい値を超えたときにアラートを作成できます。エージェントが Red Hat Edge Manager サービスにアラートを出すと、サービスは重大度レベルに応じてデバイスのステータスを degraded
または error
に設定します。
リソースモニターは以下のパラメーターを取ります。
パラメーター | 説明 |
|
監視するリソース。現在、 |
|
モニターが使用量をサンプリングする間隔で、正の整数の後に時間単位 ( |
| アラートルールのリスト。 |
|
|
アラートルールは以下のパラメーターを取ります。
パラメーター | 説明 |
|
アラートルールの重大度は、 |
|
サンプリング時にリソース使用量が測定され、平均化される期間で、正の整数の後に時間単位 ( |
| アラートをトリガーする使用量のしきい値 (パーセンテージの値)。値は、% 記号なしの 0 から 100 までです。 |
|
人間が判読できるアラートの説明。デバッグに役立つアラートの詳細を追加します。デフォルトでは、アラートの説明は |
1.5.11.1. CLI を使用したデバイスリソースのモニタリング リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用してデバイスのリソースを監視し、パフォーマンスを追跡して問題のトラブルシューティングを行うツールとコマンドを提供します。
以下の手順を実行します。
1.6. エッジデバイスでのアプリケーションの管理 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: デバイス仕様内のアプリケーションのリストを更新することで、デバイス上のアプリケーションをデプロイ、更新、または削除できます。Red Hat Edge Manager エージェントが確認して仕様の変更を検出すると、エージェントは、Open Container Initiative (OCI) 互換レジストリーから新規または更新されたアプリケーションパッケージとイメージをダウンロードします。次に、エージェントはパッケージを適切なアプリケーションランタイムにデプロイしたり、そのランタイムからパッケージを削除したりします。
Red Hat Edge Manager は、podman-compose
ツールをアプリケーションのランタイムと形式としてサポートします。
1.6.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Edge Manager CLI をインストールする必要がある。
- Red Hat Edge Manager サービスにログインする必要がある。
-
デバイスが、
podman-compose
ツールがインストールされているオペレーティングシステムイメージを実行している。Red Hat Edge Manager で使用する bootc オペレーティングシステムイメージのビルド を参照してください。
1.6.2. アプリケーションパッケージイメージのビルド リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Edge Manager は、Open Container Initiative (OCI) と互換性のあるレジストリーからアプリケーションパッケージをダウンロードできます。podman-compose
形式でアプリケーションパッケージを含む OCI コンテナーイメージをビルドし、そのイメージを OCI レジストリーにプッシュできます。
以下の手順を実行します。
Podman Compose の仕様に従う
podman-compose.yaml
というファイルで、アプリケーションの機能を定義します。-
以下の内容で
Containerfile
というファイルを作成します。
FROM scratch COPY podman-compose.yaml /podman-compose.yaml LABEL appType="compose"
FROM scratch
1 COPY podman-compose.yaml /podman-compose.yaml LABEL appType="compose"
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
以下の内容で
コンテナーイメージをビルドして OCI レジストリーにプッシュします。
次のコマンドを実行して、書き込み権限を持つイメージリポジトリーを定義します。
OCI_IMAGE_REPO=quai.io/<your_org>/<your_image>
OCI_IMAGE_REPO=quai.io/<your_org>/<your_image>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、イメージタグを定義します。
OCI_IMAGE_TAG=v1
OCI_IMAGE_TAG=v1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションコンテナーイメージをビルドします。以下のコマンドを実行します。
podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .
podman build -t ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - コンテナーイメージをプッシュします。
podman push ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .
podman push ${OCI_IMAGE_REPO}:${OCI_IMAGE_TAG} .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6.3. CLI を使用したデバイスへのアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して OCI レジストリーからデバイスにアプリケーションパッケージをデプロイします。
以下の手順を実行します。
デプロイするアプリケーションパッケージを
Device
リソースのspec.applications
フィールドに指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記: デバイス仕様の
applications
セクションでアプリケーションごとに、対応するデバイスステータス情報を確認できます。デバイスのステータス情報を確認して、デバイスへのアプリケーションデプロイメントのステータスを確認します。以下のコマンドを実行します。
flightctl get device/<your_device_id> -o yaml
flightctl get device/<your_device_id> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7. デバイスフリートの管理 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: Red Hat Edge Manager は、デバイスフリート を通じて多数のデバイスとワークロードの管理を簡素化します。フリートは、共通のデバイステンプレートと管理ポリシーによって管理されるデバイスのグループを定義するリソースです。
デバイステンプレートに変更を加えた場合に、Red Hat Edge Manager エージェントが新しいターゲット仕様を検出すると、フリート内のすべてのデバイスが変更を受け取ります。
また、フリート全体のステータスサマリーを確認できるため、フリートでのデバイスのモニタリングも簡素化されます。
フリートレベル管理には、以下の利点があります。
- 各デバイスに対して 1 回ではなく、各フリートに対して 1 回だけ操作を実行するため、オペレーションがスケーリングされます。
- 設定ミスや設定ドリフトのリスクを最小限に抑えます。
- デバイスをフリートに追加するか、フリート内のデバイスを置き換える際に、ターゲット設定を自動的に適用します。
フリート仕様は以下の機能で構成されています。
- ラベルセレクター
- どのデバイスがフリートの一部であるかを決定します。
- デバイステンプレート
- フリート内のデバイスに Red Hat Edge Manager が適用する設定を定義します。
- ポリシー
- デバイステンプレートへの変更がどのようにデバイスにロールアウトされるかなど、デバイスの管理方法を管理します。
個別に管理されるデバイスとフリートで管理されるデバイスの両方を同時に使用できます。デバイスがフリートに選択されると、Red Hat Edge Manager はデバイステンプレートに基づいて、新しいデバイスのデバイス仕様を作成します。フリートのデバイステンプレートを更新するか、新しいデバイスがフリートに参加すると、Red Hat Edge Manager はフリート内で新しい仕様を適用します。
デバイスがフリートに選択されていない場合、そのデバイスはユーザー管理または管理対象外とみなされます。ユーザー管理のデバイスの場合、デバイスの仕様を手動で、または外部の自動化を通じて更新する必要があります。
重要: デバイスは、同時に複数のフリートに所属することはできません。
詳細は、ラベルとラベルセレクター を参照してください。
1.7.1. フリートへのデバイスの選択 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、デバイスはフリートに割り当てられません。代わりに、各フリートは、デバイスがフリートに追加されるために必要なラベルを定義するセレクターを使用します。
フリートでラベルを使用する方法を理解するには、次の例を参照してください。
次のリストは、Point-of-Sales (POS) 端末装置とそのラベルを示しています。
デバイス | ラベル |
A |
|
B |
|
C |
|
D |
|
すべての POS 端末が同じ設定を使用し、同じ運用チームによって管理される場合は、type=pos-terminal
ラベルセレクターを使用して pos-terminals
と呼ばれる単一のフリートを定義できます。すると、そのフリートにはデバイス A、B、C、D が含まれます。
ただし、開発環境または実稼働環境用に、異なる組織ごとに別々のフリートを作成したい場合もあるかもしれません。type=pos-terminal, stage=development
ラベルセレクターを使用して、開発用のフリートを定義できます。これにより、デバイス C と D が選択されます。その後、type=pos-terminal, stage=production
ラベルセレクターを使用して、実稼働環境用の別のフリートを定義できます。正しいラベルセレクターを使用することで、両方のフリートを個別に管理できます。
重要: 2 つのフリートが同じデバイスを選択しない方法で、セレクターを定義する必要があります。たとえば、あるフリートが region=east
を選択し、別のフリートが stage=production
を選択した場合、両方のフリートがデバイス A を選択しようとします。2 つのフリートが同じデバイスを選択しようとすると、Red Hat Edge Manager は、現在割り当てられているフリート (存在する場合) にデバイスを保持し、影響を受けるフリートの OverlappingSelectors
条件を true
に設定します。
1.7.2. デバイステンプレート リンクのコピーリンクがクリップボードにコピーされました!
フリートのデバイステンプレートには、テンプレートの更新時にフリート内のすべてのデバイスに適用されるデバイス仕様が含まれています。
たとえば、フリートのデバイステンプレートで、フリート内のすべてのデバイスが quay.io/flightctl/rhel:9.5
オペレーティングシステムイメージを実行する必要があることを指定できます。
次に、Red Hat Edge Manager サービスはターゲット仕様をフリート内のすべてのデバイスにロールアウトし、Red Hat Edge Manager エージェントは各デバイスを適宜更新します。
デバイステンプレートの他の仕様項目を変更でき、Red Hat Edge Manager は同じ方法で変更を適用します。
しかし、フリート内のすべてのデバイスがまったく同じ仕様である必要がない場合もあります。Red Hat Edge Manager では、テンプレートにデバイス名またはラベルの値に基づいて設定されるプレースホルダーを含めることができます。
プレースホルダーの構文は、Go テンプレート と一致します。ただし、単純なテキストとアクションのみを使用できます。
プレースホルダーでの条件付きまたはループの使用はサポートされません。
{{ .metadata.labels.key }}
または {{ .metadata.name }}
など、デバイスのメタデータから任意のものを参照できます。
プレースホルダーで以下の関数を使用することもできます。
-
upper
関数により、値が大文字に変更されます。たとえば、関数は{{ upper .metadata.name }}
です。 -
lower
関数により、値が小文字に変更されます。たとえば、関数は{{ lower .metadata.labels.key }}
です。 -
replace
関数は、部分文字列のすべての出現を別の文字列に置き換えます。たとえば、関数は{{ replace "old" "new" .metadata.labels.key }}
です。 -
getOrDefault
関数は、存在しないラベルにアクセスした場合にデフォルト値を返します。たとえば、関数は{{ getOrDefault .metadata.labels "key" "default" }}
です。
パイプラインで関数を組み合わせることができます。たとえば、組み合わせた関数は {{ getOrDefault .metadata.labels "key" "default" | upper | replace " " "-" }}
です。
注記: 適切な Go テンプレート構文を使用していることを確認してください。たとえば、ハイフンにより {{ .metadata.labels.target-revision }}
は有効ではありません。代わりに、フィールドを {{ index .metadata.labels "target-revision" }}
として参照する必要があります。
次の方法で、デバイステンプレートでプレースホルダーを使用できます。
-
デプロイメントステージでデバイスにラベルを付けることができます。たとえば、ステージラベルは
stage: testing
とstage: production
です。次に、使用するオペレーティングシステムイメージを参照する際に、stage
キーのラベルをプレースホルダーとして使用できます。たとえば、quay.io/myorg/myimage:latest-{{ .metadata.labels.stage }}
のように指定したり、Git リポジトリー内の設定フォルダーを参照したりできます。 -
デプロイメントサイトによってデバイスにラベルを付けることができます。たとえば、デプロイメントサイトは
site: factory-berlin
およびsite: factory-madrid
などです。 -
次に、Kubernetes でネットワークアクセス認証情報を含むシークレットを参照する際に、
site
キーのラベルをパラメーターとして使用できます。
デバイステンプレートの次のフィールドは、プレースホルダーをサポートします。
フィールド | サポートされているプレースホルダー |
オペレーティングシステムイメージ | リポジトリー名、イメージ名、イメージタグ |
Git 設定プロバイダー | ターゲットリビジョン、パス |
HTTP 設定プロバイダー | URL 接尾辞、パス |
インライン設定プロバイダー | コンテンツ、パス |
1.7.3. CLI を使用したフリートへのデバイスの選択 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー: デバイスをフリートに追加するためのラベルセレクターを定義します。
以下のタスクを完了します。
以下のコマンドを実行して、ラベルセレクターがフリートに追加するデバイスを返すことを確認します。
flightctl get devices -l type=pos-terminal -l stage=development
flightctl get devices -l type=pos-terminal -l stage=development
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドを実行し、予想されるデバイスのリストが返された場合は、次の YAML ファイルを使用してデバイスを選択するフリートを定義できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して変更を適用します。
flightctl apply -f my_fleet.yaml
flightctl apply -f my_fleet.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、他のフリートのセレクターと重複を確認します。
flightctl get fleets/my_fleet -o json | jq -r '.status.conditions[] | select(.type=="OverlappingSelectors").status'
flightctl get fleets/my_fleet -o json | jq -r '.status.conditions[] | select(.type=="OverlappingSelectors").status'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の出力例を参照してください。
False
False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow