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 サービスに登録してから管理する必要があります。以下の手順を実行します。
次のコマンドを実行して、現在承認を待機しているすべてのデバイスをリスト表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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>
注記: 一意のデバイス名はエージェントにより生成され、変更できません。エージェントは、デバイス名として公開鍵の Base32 エンコードハッシュを選択します。
登録要求の名前を指定して、登録要求を承認します。オプションで、
--label
または-l
フラグを使用してラベルをデバイスに追加できます。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
登録要求を承認した後、サービスは管理証明書を発行し、デバイスをインベントリーに登録します。これでデバイスを管理する準備が整いました。
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. デバイスインベントリーとデバイスの詳細の表示
デバイスインベントリー内のデバイスを表示します。以下の手順を実行します。
次のコマンドを実行して、デバイスインベントリー内のデバイスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
次のコマンドを実行して、このデバイスの詳細を YAML 形式で表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow flightctl get device/<device_name> -o yaml
flightctl get device/<device_name> -o yaml
以下の出力例を参照してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> labels: region: eu-west-1 site: factory-berlin spec: os: image: quay.io/flightctl/rhel:9.5 config: - name: my-os-configuration configType: GitConfigProviderSpec gitRef: path: /configuration repository: my-configuration-repo targetRevision: production status: os: image: quay.io/flightctl/rhel:9.5 config: renderedVersion: "1" applications: data: {} summary: status: Unknown resources: cpu: Healthy disk: Healthy memory: Healthy systemInfo: architecture: amd64 bootID: 037750f7-f293-4c5b-b06e-481eef4e883f operatingSystem: linux summary: info: "" status: Online updated: status: UpToDate lastSeen: "2024-08-28T11:45:34.812851905Z" [...]
apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> labels:
1 region: eu-west-1 site: factory-berlin spec: os: image: quay.io/flightctl/rhel:9.5
2 config: - name: my-os-configuration
3 configType: GitConfigProviderSpec gitRef: path: /configuration repository: my-configuration-repo targetRevision: production status: os: image: quay.io/flightctl/rhel:9.5
4 config: renderedVersion: "1"
5 applications: data: {}
6 summary: status: Unknown
7 resources:
8 cpu: Healthy disk: Healthy memory: Healthy systemInfo:
9 architecture: amd64 bootID: 037750f7-f293-4c5b-b06e-481eef4e883f operatingSystem: linux summary: info: "" status: Online
10 updated: status: UpToDate
11 lastSeen: "2024-08-28T11:45:34.812851905Z"
12 [...]
1.5.2.3. ラベルおよびラベルセレクター
テクノロジープレビュー: 個々のデバイス、フリート、その他のリソースを含むリソースにラベルを割り当てることで整理できます。たとえば、ラベルを使用してロケーション、ハードウェアタイプ、目的を記録できます。Red Hat Edge Manager ラベルは、Kubernetes ラベルとラベルセレクターと同じ構文、原則、および Operator に従います。
デバイスのインベントリーを表示するとき、またはデバイスに操作を適用するときに、ラベルの付いたデバイスを選択できます。
ラベルは、キーを使用してデバイスをグループ化する key=value
形式に従います。たとえば、ラベルが site=<location>
の命名規則に従う場合、サイトごとにデバイスをグループ化できます。
キーのみを含むラベルを使用することもできます。
ラベルが有効であるためには、次のルールに従う必要があります。
- キーと値はそれぞれ 63 文字以下である必要があります。
-
キーと値は、英数字 (
a-z
、A-Z
、0-9
) で構成可能です。 -
キーと値には、ダッシュ (
-
)、アンダースコア (_
)、ドット (.
) を含めることができますが、これらを先頭または末尾に配置することはできません。 - 値は省略できます。
次の方法でラベルをリソースに適用できます。
- イメージのビルド時にデフォルトのラベルセットを定義し、デプロイ時にすべてのデバイスに自動適用されるようにします。
- 登録時に初期ラベルを割り当てます。
- 登録後、ラベルを割り当てます。
リソースにラベルが付けられる場合、ラベルセレクターを作成することでリソースのサブセットを選択できます。ラベルセレクターは、同じラベルのセットを持つリソースを選択するためのラベルのコンマ区切りリストです。
以下の例を参照してください。
ラベルセレクターの例 | 選択したデバイス |
---|---|
|
|
|
|
|
|
詳細は、Labels and Selectors を参照してください。
1.5.2.4. ラベルの使用
テクノロジープレビュー: ラベルを使用してデバイスを整理できます。
1.5.2.4.1. CLI を使用したデバイスとそのラベルの表示
デバイスとそれに関連するラベルを表示します。ラベルを使用して、デバイスおよびデバイスフリートを整理できます。
以下の手順を実行します。
-o wide
オプションを使用して、インベントリー内のデバイスを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
-l <key=value>
オプションを使用して、特定のラベルまたはラベルセットでインベントリー内のデバイスを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
1.5.2.4.2. CLI を使用したラベルの更新
CLI を使用してデバイスでラベルを更新します。以下の手順を実行します。
次のコマンドを実行して、デバイスの現在の定義をファイルにエクスポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow flightctl get device/<device1_name> -o yaml > my_device.yaml
flightctl get device/<device1_name> -o yaml > my_device.yaml
任意のエディターを使用して
my_device.yaml
ファイルを編集します。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flightctl.io/v1alpha1 kind: Device metadata: labels: some_key: some_value some_other_key: some_other_value name: <device1_name> spec: [...]
apiVersion: flightctl.io/v1alpha1 kind: Device metadata: labels: some_key: some_value some_other_key: some_other_value name: <device1_name> spec: [...]
ファイルを保存し、次のコマンドを実行して更新されたデバイス定義を適用します。
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
1.5.2.5. フィールドセレクター
フィールドセレクターは、特定のリソースフィールドの値に基づいて、個々のデバイス、フリート、およびその他のリソースを含む Red Hat Edge Manager リソースのリストをフィルタリングします。
フィールドセレクターは、Kubernetes のフィールドセレクターおよびラベルセレクターと同じ構文、原則、Operator に従いますが、より高度な検索ユースケース用に追加の Operator も利用できます。
1.5.2.5.1. サポートされるフィールド
Red Hat Edge Manager リソースには、選択可能なメタデータフィールドのセットが表示されます。
各リソースは以下のメタデータフィールドをサポートします。
-
metadata.name
-
metadata.owner
-
metadata.creationTimestamp
注記: ラベルをクエリーするには、ラベルセレクターを使用して詳細で柔軟なラベルのフィルターを行います。
詳細は、ラベルとラベルセレクター を参照してください。
1.5.2.5.2. 追加のサポートされるフィールドのリスト
メタデータフィールドに加えて、各リソースには選択可能な固有のフィールドセットがあり、リソース固有の属性に基づいて、フィルタリングと選択にさらなる柔軟性を提供します。
以下の表は、各リソースの種類でフィルタリングがサポートされるフィールドのリストです。
種類 | フィールド |
証明書署名要求 |
|
デバイス |
|
登録要求 |
|
フリート |
|
リポジトリー |
|
Resource Sync |
|
1.5.2.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.2.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.2.5.4. サポート対象の Operator
Operator | 記号 | 説明 |
Exists |
|
フィールドが存在するかチェックします。たとえば、 |
DoesNotExist |
| フィールドが存在しないか確認します。 |
Equals |
| フィールドが値と等しいか確認します。 |
DoubleEquals |
| 別の形式の等価性チェック。 |
NotEquals |
| フィールドが値と等しくないか確認します。 |
GreaterThan |
| フィールドが値よりも大きいか確認します。 |
GreaterThanOrEquals |
| フィールドが値以上であるか確認します。 |
LessThan |
| フィールドが値未満か確認します。 |
LessThanOrEquals |
| フィールドが値以下であるか確認します。 |
In |
| フィールドが値のリスト内にあるか確認します。 |
NotIn |
| フィールドが値のリストにないか確認します。 |
Contains |
| フィールドに値があるか確認します。 |
NotContains |
| フィールドに値が含まれていないか確認します。 |
1.5.2.5.5. フィールドタイプ別の Operator の使用量
各フィールドタイプは、特定の Operator のサブセットをサポートします。
フィールドタイプ | サポート対象の Operator | 値 |
文字列 |
| テキスト文字列 |
タイムスタンプ |
| RFC 3339 形式 |
数値 |
| 番号形式 |
ブール値 |
|
ブール値の形式 ( |
配列 |
| 配列要素 |
1.5.3. オペレーティングシステムの更新
テクノロジープレビュー: デバイス仕様でターゲットオペレーティングシステムイメージの名前またはバージョンを更新することで、デバイスのオペレーティングシステムを更新できます。
Red Hat Edge Manager エージェントがサービスと通信すると、エージェントは要求された更新を検出します。その後、エージェントはバックグラウンドで、新しいオペレーティングシステムのバージョンのダウンロードと検証を自動的に開始します。
Red Hat Edge Manager エージェントは、更新ポリシーに従って実際のシステム更新をスケジュールします。スケジュールされた更新時に、エージェントは現在実行中のオペレーティングシステムを中断することなく、新しいバージョンをインストールします。
最後に、デバイスは新規バージョンで再起動します。
Red Hat Edge Manager は現在、以下のイメージタイプとイメージ参照形式をサポートしています。
イメージタイプ | イメージ参照 |
bootc |
コンテナーレジストリーへの OCI イメージ参照。例: |
プロセス中に、エージェントはステータスの更新をサービスに送信します。デバイスのステータスを表示することで、更新プロセスを監視できます。詳細は、デバイスの表示 を参照してください。
1.5.3.1. CLI でのオペレーティングシステムの更新
CLI を使用してデバイスを更新します。以下の手順を実行します。
次のコマンドを実行して、デバイスの現在のリソースマニフェストを取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow flightctl get device/<device_name> -o yaml > my_device.yaml
flightctl get device/<device_name> -o yaml > my_device.yaml
Device
リソースを編集して、新しいオペレーティングシステム名とバージョンターゲットを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> spec: [...] os: image: quay.io/flightctl/rhel:9.5 [...]
apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> spec: [...] os: image: quay.io/flightctl/rhel:9.5 [...]
次のコマンドを実行して、更新された
Device
リソースを適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow flightctl apply -f <device_name>.yaml
flightctl apply -f <device_name>.yaml
1.5.4. エッジデバイスのオペレーティングシステム設定
テクノロジープレビュー: 最大限の一貫性と再現性を実現するために、オペレーティングシステムレベルのホスト設定をイメージに含めることができます。
設定を更新するには、新しいオペレーティングシステムイメージを作成し、新しいイメージでデバイスを更新します。
ただし、以下の場合には、新しいイメージでデバイスを更新することは実用的ではありません。
- イメージ内に設定がない場合。
- 設定がデバイスに固有のものである必要がある場合。
- この設定は、オペレーティングシステムイメージを更新して再起動せずに、ランタイム時に更新できる必要があります。
このような場合には、デバイスのファイルシステムに存在する設定ファイルのセットを宣言できます。Red Hat Edge Manager エージェントは、すべてのファイルがファイルシステムで正常に更新されるか、更新前の状態にロールバックするかを確認しながら、設定ファイルに更新を適用します。ユーザーがデバイスのオペレーティングシステムと設定セットの両方を同時に更新すると、Red Hat Edge Manager エージェントは最初にオペレーティングシステムを更新し、その後、指定された設定ファイルのセットを適用します。
Red Hat Edge Manager エージェントが順番に適用する設定セットのリストを指定することもできます。競合が発生した場合は、最後に適用された設定セットは有効です。
重要: Red Hat Edge Manager エージェントがディスクの設定を更新した後、実行中のアプリケーションは、設定を有効にするために、新しい設定をメモリーにリロードする必要があります。更新に再起動が必要な場合、systemd
は新しい設定と正しい順序でアプリケーションを自動的に再起動します。更新に再起動が含まれない場合、多くのアプリケーションは設定ファイルへの変更を検出し、ファイルを自動的にリロードできます。アプリケーションが変更検出をサポートしていない場合は、特定の条件が満たされている場合に、デバイスのライフサイクルフックを使用してスクリプトまたはコマンドを実行できます。
1.5.4.1. 設定プロバイダー
Red Hat Edge Manager では、設定プロバイダーと呼ばれる複数のソースから設定を提供できます。Red Hat Edge Manager は現在、以下の設定プロバイダーをサポートします。
- Git 設定プロバイダー
- Git リポジトリーからデバイス設定ファイルを取得します。
- Kubernetes Secret プロバイダー
- Kubernetes クラスターからシークレットを取得し、そのコンテンツをデバイスのファイルシステムに書き込みます。
- HTTP 設定プロバイダー
- HTTP (S) エンドポイントからデバイス設定ファイルを取得します。
- インライン設定プロバイダー
- 外部システムをクエリーしなくても、デバイスマニフェストでデバイス設定ファイルをインラインで指定できます。
以下のセクションでは、設定プロバイダーの詳細を説明します。
1.5.4.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.4.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.4.1.3. HTTP サーバーからの設定
Red Hat Edge Manager は、設定のために HTTP サーバーにクエリーを実行できます。HTTP サーバーは、デバイスに対して静的または動的に生成された設定を提供できます。
HTTP 設定プロバイダーは以下のパラメーターを取ります。
パラメーター | 説明 |
|
Red Hat Edge Manager で定義された |
|
|
| HTTP サーバーの応答を書き込むためのデバイスのファイルシステム内のファイルへの絶対パス。 |
Repository
リソースは、Red Hat Edge Manager が接続するための HTTP サーバーを指定し、使用するプロトコルとアクセスの認証情報を指定します。レポジトリーは、一度セットアップする必要があります。その後、レポジトリーを使用して複数のデバイスまたはデバイスフリートを設定できます。
1.5.4.1.4. デバイス仕様のインライン設定
設定はデバイス仕様にインラインで指定できます。インラインデバイス仕様を使用する場合、Red Hat Edge Manager は設定を取得するために外部システムに接続する必要はありません。
Inline 設定プロバイダーは、ファイル仕様のリストを取ります。各ファイル仕様は以下のパラメーターを取ります。
パラメーター | 説明 |
| コンテンツを書き込むためのデバイスのファイルシステム内のファイルへの絶対パス。指定したパスにファイルがすでに存在する場合、ファイルは上書きされます。 |
| ファイルの UTF-8 または base64 でエンコードされたコンテンツ。 |
|
コンテンツのエンコード方法を定義します。 |
|
オプション: ファイルの権限モード。先頭にゼロで 8 進数 (例: |
|
オプション: ファイルの所有者。名前または数値 ID として指定します。デフォルト値は |
| オプション: ファイルのグループ。名前または数値 ID として指定します。 |
1.5.4.2. 関連情報
- デバイスのライフサイクルフックおよび Red Hat Edge Manager エージェントで使用されるデフォルトのルールの詳細は、デバイスのライフサイクルフック を参照してください。
- Red Hat Edge Manager 権限を付与する方法は、Red Hat Edge Manager の認可 を参照してください。
1.5.5. MicroShift クラスターを自動登録するためのフリートの設定
テクノロジープレビュー: MicroShift を含むオペレーティングシステムイメージを実行しているデバイスフリートがある場合は、MicroShift クラスターを Red Hat Advanced Cluster Management に自動登録するようにフリートを設定できます。
1.5.5.1. デバイステンプレートの設定
フリート内での自動登録を有効にするには、デバイステンプレートに設定を追加します。以下の手順を実行します。
crd.yaml
ファイルのfilePath
、repository
、およびsuffix
を含むacm-crd
リソース設定をFleet
リソースに追加します。以下の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flightctl.io/v1alpha1 kind: Fleet metadata: name: fleet-acm spec: selector: matchLabels: fleet: acm template: spec: os: image: <your os image> config: - name: acm-crd httpRef: filePath: /var/local/acm-import/crd.yaml repository: acm-registration suffix: /agent-registration/crds/v1
apiVersion: flightctl.io/v1alpha1 kind: Fleet metadata: name: fleet-acm spec: selector: matchLabels: fleet: acm template: spec: os: image: <your os image> config: - name: acm-crd httpRef: filePath: /var/local/acm-import/crd.yaml repository: acm-registration suffix: /agent-registration/crds/v1
次の例のように、
filePath
、repository
、suffix
を使用してacm-import
リソース設定を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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}}
オプション: MicroShift クラスターが Red Hat Advanced Cluster Management イメージをプルしなかった場合は、テンプレートに次の追加部分に示すように、
pull-secret
リソースを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: pull-secret inline: - path: "/etc/crio/openshift-pull-secret" content: "{\"auths\":{...}}"
- name: pull-secret inline: - path: "/etc/crio/openshift-pull-secret" content: "{\"auths\":{...}}"
crd.yaml
ファイルとimport.yaml
ファイルでkubectl apply -f
を実行するには、次の条件付きif
要件を含むapply-acm-manifests
リソースを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: apply-acm-manifests inline: - path: "/etc/flightctl/hooks.d/afterupdating/50-acm-registration.yaml" content: | - if: - path: /var/local/acm-import/crd.yaml op: [created] run: kubectl apply -f /var/local/acm-import/crd.yaml envVars: KUBECONFIG: /var/lib/microshift/resources/kubeadmin/kubeconfig - if: - path: /var/local/acm-import/import.yaml op: [created] run: kubectl apply -f /var/local/acm-import/import.yaml envVars: KUBECONFIG: /var/lib/microshift/resources/kubeadmin/kubeconfig
- name: apply-acm-manifests inline: - path: "/etc/flightctl/hooks.d/afterupdating/50-acm-registration.yaml" content: | - if: - path: /var/local/acm-import/crd.yaml op: [created] run: kubectl apply -f /var/local/acm-import/crd.yaml envVars: KUBECONFIG: /var/lib/microshift/resources/kubeadmin/kubeconfig - if: - path: /var/local/acm-import/import.yaml op: [created] run: kubectl apply -f /var/local/acm-import/import.yaml envVars: KUBECONFIG: /var/lib/microshift/resources/kubeadmin/kubeconfig
-
コンソールで、デバイスに
fleet:acm
というラベルを付け、Approve をクリックすると、fleet-acm
フリートが自動的に選択されます。ラベルを使用してデバイスを管理する方法は、デバイスフリートの管理 を参照してください。
1.5.5.2. CLI の Git リポジトリーからのデバイス設定の管理
テクノロジープレビュー: Git リポジトリーでデバイス設定を作成して適用します。
以下の手順を実行します。
site-settings
という名前のRepository
リソースの次の定義が含まれるsite-settings-repo.yaml
などのファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flightctl.io/v1alpha1 kind: Repository metadata: name: site-settings spec: type: git url: https://github.com/<your_org>/<your_repo>.git
apiVersion: flightctl.io/v1alpha1 kind: Repository metadata: name: site-settings spec: type: git url: https://github.com/<your_org>/<your_repo>.git
次のコマンドを実行して、
Repository
リソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow flightctl apply -f site-settings-repo.yaml
flightctl apply -f site-settings-repo.yaml
以下のコマンドを実行して、リソースが正しく作成され、Red Hat Edge Manager がアクセスできることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
デバイス仕様を更新して、
example-site
設定をデバイスに適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> spec: [...] config: - name: example-site configType: GitConfigProviderSpec gitRef: repository: site-settings targetRevision: production path: /etc/example-site [...]
apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> spec: [...] config:
1 - name: example-site configType: GitConfigProviderSpec gitRef: repository: site-settings targetRevision: production path: /etc/example-site
2 [...]
1.5.6. デバイスのライフサイクルフック
テクノロジープレビュー: Red Hat Edge Manager エージェントは、デバイスライフサイクルフックを使用して、デバイスライフサイクルの特定のポイントでユーザー定義のコマンドを実行できます。たとえば、アプリケーションデータのバックアップを作成するオペレーティングシステムイメージにシェルスクリプトを追加できます。次に、エージェントがオペレーティングシステムの更新を開始する前に、スクリプトが実行され、正常に完了するように指定できます。
別の例として、特定のアプリケーションやシステムサービスは、ファイルがディスク上で変更されても、設定ファイルを自動的にリロードしません。エージェントが更新プロセスを完了した後に呼び出される別のフックとしてコマンドを指定することで、設定ファイルを手動でリロードできます。
次のデバイスのライフサイクルフックがサポートされています。
ライフサイクルフック | 説明 |
| エージェントが更新の準備を完了した後、ただし、オペレーティングシステムを変更する前に、フックが呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルします。 |
| フックは、エージェントがディスクに更新を書き込んだ後に呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。 |
| フックは、システムが再起動する前に呼び出されます。エージェントは、アクションの完了またはタイムアウトまで再起動をブロックします。このフックの何らかのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。 |
| フックは、エージェントが再起動後に最初に起動すると呼び出されます。このフックの何らかのアクションが失敗を返した場合、エージェントは失敗を報告しますが、起動を継続します。 |
1.5.6.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.6.2. 関連情報
- ネットワークの設定および管理 を参照してください。
1.5.7. デバイスリソースのモニタリング
テクノロジープレビュー: デバイスリソースのリソースモニターを設定し、リソースの使用率が定義されたしきい値を超えたときにアラートを作成できます。エージェントが Red Hat Edge Manager サービスにアラートを出すと、サービスは重大度レベルに応じてデバイスのステータスを degraded
または error
に設定します。
リソースモニターは以下のパラメーターを取ります。
パラメーター | 説明 |
|
監視するリソース。現在、 |
|
モニターが使用量をサンプリングする間隔で、正の整数の後に時間単位 ( |
| アラートルールのリスト。 |
|
|
アラートルールは以下のパラメーターを取ります。
パラメーター | 説明 |
|
アラートルールの重大度は、 |
|
サンプリング時にリソース使用量が測定され、平均化される期間で、正の整数の後に時間単位 ( |
| アラートをトリガーする使用量のしきい値 (パーセンテージの値)。値は、% 記号なしの 0 から 100 までです。 |
|
人間が判読できるアラートの説明。デバッグに役立つアラートの詳細を追加します。デフォルトでは、アラートの説明は |
1.5.7.1. CLI を使用したデバイスリソースのモニタリング
CLI を使用してデバイスのリソースを監視し、パフォーマンスを追跡して問題のトラブルシューティングを行うツールとコマンドを提供します。
以下の手順を実行します。
デバイス仕様の
spec.resources
セクションにリソースモニターを追加します。たとえば、ディスク用に次のモニターを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> spec: [...] resources: - monitorType: Disk samplingInterval: 5s path: /application_data alertRules: - severity: Warning duration: 30m percentage: 75 description: Disk space for application data is >75% full for over 30m. - severity: Critical duration: 10m percentage: 90 description: Disk space for application data is >90% full over 10m. [...]
apiVersion: flightctl.io/v1alpha1 kind: Device metadata: name: <device_name> spec: [...] resources: - monitorType: Disk samplingInterval: 5s
1 path: /application_data
2 alertRules: - severity: Warning
3 duration: 30m percentage: 75 description: Disk space for application data is >75% full for over 30m. - severity: Critical
4 duration: 10m percentage: 90 description: Disk space for application data is >90% full over 10m. [...]