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. 前提条件

1.5.1.2. CLI を使用したデバイスの登録

デバイスを Red Hat Edge Manager サービスに登録してから管理する必要があります。以下の手順を実行します。

  1. 次のコマンドを実行して、現在承認を待機しているすべてのデバイスをリスト表示します。

    Copy to Clipboard Toggle word wrap
    flightctl get enrollmentrequests --field-selector="status.approval.approved != true"

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    NAME           APPROVAL  APPROVER  APPROVED LABELS
    <device_name>  Pending   <none>    <none>

    注記: 一意のデバイス名はエージェントにより生成され、変更できません。エージェントは、デバイス名として公開鍵の Base32 エンコードハッシュを選択します。

  2. 登録要求の名前を指定して、登録要求を承認します。オプションで、--label または -l フラグを使用してラベルをデバイスに追加できます。以下の例を参照してください。

    Copy to Clipboard Toggle word wrap
    flightctl approve -l region=eu-west-1 -l site=factory-berlin enrollmentrequest/54shovu028bvj6stkovjcvovjgo0r48618khdd5huhdjfn6raskg

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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. デバイスインベントリーとデバイスの詳細の表示

デバイスインベントリー内のデバイスを表示します。以下の手順を実行します。

  1. 次のコマンドを実行して、デバイスインベントリー内のデバイスを表示します。

    Copy to Clipboard Toggle word wrap
    flightctl get devices

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    NAME           ALIAS    OWNER   SYSTEM  UPDATED     APPLICATIONS  LAST SEEN
    <device_name>  <none>   <none>  Online  Up-to-date  <none>        3 seconds ago
  2. 次のコマンドを実行して、このデバイスの詳細を YAML 形式で表示します。

    Copy to Clipboard Toggle word wrap
    flightctl get device/<device_name> -o yaml

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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
    デバイスに割り当てられたユーザー定義のラベル。
    2
    デバイスのターゲット OS イメージバージョン。
    3
    デバイスのターゲット OS 設定。
    4
    デバイスの現在の OS イメージバージョン。
    5
    デバイスの現在の OS 設定バージョン。
    6
    デバイスのデプロイされたアプリケーションの現時点でのリスト。
    7
    デバイス上のアプリケーションのヘルスステータス。
    8
    CPU、ディスク、およびメモリーリソースの可用性。
    9
    基本的なシステム情報。
    10
    デバイスのヘルスステータス。
    11
    デバイスの更新ステータス。
    12
    デバイスの最後のチェックイン時刻と日付。

1.5.2.3. ラベルおよびラベルセレクター

テクノロジープレビュー: 個々のデバイス、フリート、その他のリソースを含むリソースにラベルを割り当てることで整理できます。たとえば、ラベルを使用してロケーション、ハードウェアタイプ、目的を記録できます。Red Hat Edge Manager ラベルは、Kubernetes ラベルとラベルセレクターと同じ構文、原則、および Operator に従います。

デバイスのインベントリーを表示するとき、またはデバイスに操作を適用するときに、ラベルの付いたデバイスを選択できます。

ラベルは、キーを使用してデバイスをグループ化する key=value 形式に従います。たとえば、ラベルが site=<location> の命名規則に従う場合、サイトごとにデバイスをグループ化できます。

キーのみを含むラベルを使用することもできます。

ラベルが有効であるためには、次のルールに従う必要があります。

  • キーと値はそれぞれ 63 文字以下である必要があります。
  • キーと値は、英数字 (a-zA-Z0-9) で構成可能です。
  • キーと値には、ダッシュ (-)、アンダースコア (_)、ドット (.) を含めることができますが、これらを先頭または末尾に配置することはできません。
  • 値は省略できます。

次の方法でラベルをリソースに適用できます。

  • イメージのビルド時にデフォルトのラベルセットを定義し、デプロイ時にすべてのデバイスに自動適用されるようにします。
  • 登録時に初期ラベルを割り当てます。
  • 登録後、ラベルを割り当てます。

リソースにラベルが付けられる場合、ラベルセレクターを作成することでリソースのサブセットを選択できます。ラベルセレクターは、同じラベルのセットを持つリソースを選択するためのラベルのコンマ区切りリストです。

以下の例を参照してください。

ラベルセレクターの例選択したデバイス

site=factory-berlin

site ラベルキーと factory-berlin ラベルの値を持つすべてのデバイス。

site!=factory-berlin

site ラベルキーがあるものの、ラベルの値が factory-berlin ではないすべてのデバイス。

site in (factory-berlin,factory-madrid)

site ラベルキーとラベルの値が factory-berlin または factory-madrid のいずれかを持つすべてのデバイス。

詳細は、Labels and Selectors を参照してください。

1.5.2.4. ラベルの使用

テクノロジープレビュー: ラベルを使用してデバイスを整理できます。

1.5.2.4.1. CLI を使用したデバイスとそのラベルの表示

デバイスとそれに関連するラベルを表示します。ラベルを使用して、デバイスおよびデバイスフリートを整理できます。

以下の手順を実行します。

  1. -o wide オプションを使用して、インベントリー内のデバイスを表示します。

    Copy to Clipboard Toggle word wrap
    flightctl get devices -o wide

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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
  2. -l <key=value> オプションを使用して、特定のラベルまたはラベルセットでインベントリー内のデバイスを表示します。

    Copy to Clipboard Toggle word wrap
    flightctl get devices -l site=factory-berlin -o wide

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    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 を使用してデバイスでラベルを更新します。以下の手順を実行します。

  1. 次のコマンドを実行して、デバイスの現在の定義をファイルにエクスポートします。

    Copy to Clipboard Toggle word wrap
    flightctl get device/<device1_name> -o yaml > my_device.yaml
  2. 任意のエディターを使用して my_device.yaml ファイルを編集します。以下の例を参照してください。

    Copy to Clipboard Toggle word wrap
    apiVersion: flightctl.io/v1alpha1
    kind: Device
    metadata:
      labels:
        some_key: some_value
        some_other_key: some_other_value
      name: <device1_name>
    spec:
    [...]
  3. ファイルを保存し、次のコマンドを実行して更新されたデバイス定義を適用します。

    Copy to Clipboard Toggle word wrap
    flightctl apply -f my_device.yaml
  4. 以下のコマンドを実行して、変更が適用されていることを確認します。

    Copy to Clipboard Toggle word wrap
    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. 追加のサポートされるフィールドのリスト

メタデータフィールドに加えて、各リソースには選択可能な固有のフィールドセットがあり、リソース固有の属性に基づいて、フィルタリングと選択にさらなる柔軟性を提供します。

以下の表は、各リソースの種類でフィルタリングがサポートされるフィールドのリストです。

種類

フィールド

証明書署名要求

status.certificate

デバイス

status.summary.status

status.applicationsSummary.status

status.updated.status

status.lastSeen

status.lifecycle.status

登録要求

status.approval.approved

status.certificate

フリート

spec.template.spec.os.image

リポジトリー

spec.type

spec.url

Resource Sync

spec.repository

1.5.2.5.3. フィールド検出

Red Hat Edge Manager リソースによっては、追加のサポートされるフィールドを公開する場合があります。flightctl コマンドに --field-selector オプションを使用することで、サポートされているフィールドを確認できます。サポートされていないフィールドを使用しようとすると、エラーメッセージに利用可能なサポート対象フィールドがリスト表示されます。以下の例を参照してください。

Copy to Clipboard Toggle word wrap
flightctl get device --field-selector='text'
Copy to Clipboard Toggle word wrap
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 で使用できるサポート対象のフィールドのリストを提供します。

サポートされているフィールドのいずれかを使用することができます。

Copy to Clipboard Toggle word wrap
flightctl get devices --field-selector 'metadata.alias contains cluster'

metadata.alias フィールドは、包含 Operator contains を使用して、値 cluster があるかどうかがチェックされます。

1.5.2.5.3.1. 例

名前による特定デバイスの除外

次のコマンドは、名前で特定のデバイスを除外します。

Copy to Clipboard Toggle word wrap
flightctl get devices --field-selector 'metadata.name!=<device_name>'

所有者、ラベル、および作成タイムスタンプでフィルタリングします。

このコマンドは、us リージョンにあり、2024 に作成された Fleet/pos-fleet が所有するデバイスを取得します。

Copy to Clipboard Toggle word wrap
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 が所有するデバイスを取得します。

Copy to Clipboard Toggle word wrap
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

--field-selector <field>

フィールドが存在するかチェックします。たとえば、--field-selector 'metadata.owner' フィールドセレクターは、metadata.owner フィールドを持つリソースを返します。

DoesNotExist

!

フィールドが存在しないか確認します。

Equals

=

フィールドが値と等しいか確認します。

DoubleEquals

==

別の形式の等価性チェック。

NotEquals

!=

フィールドが値と等しくないか確認します。

GreaterThan

>

フィールドが値よりも大きいか確認します。

GreaterThanOrEquals

>=

フィールドが値以上であるか確認します。

LessThan

<

フィールドが値未満か確認します。

LessThanOrEquals

フィールドが値以下であるか確認します。

In

in

フィールドが値のリスト内にあるか確認します。

NotIn

notin

フィールドが値のリストにないか確認します。

Contains

contains

フィールドに値があるか確認します。

NotContains

notcontains

フィールドに値が含まれていないか確認します。

1.5.2.5.5. フィールドタイプ別の Operator の使用量

各フィールドタイプは、特定の Operator のサブセットをサポートします。

フィールドタイプ

サポート対象の Operator

文字列

Equals: フィールドの値が指定された文字列と完全に一致する場合に一致します。

DoubleEquals: フィールドの値が指定された文字列と完全に一致する場合に一致します。Equals の代替です。

NotEquals: フィールドの値が指定された文字列と完全に一致しない場合に一致します。

In: フィールドの値がリスト内の少なくとも 1 つの文字列と一致する場合に一致します。

NotIn: フィールドの値がリスト内の文字列のいずれにも一致しない場合に一致します。

Contains: フィールド値に指定された部分文字列が含まれる場合に一致します。

NotContains: フィールドの値に指定された部分文字列が含まれていない場合に一致します。

Exists: フィールドが存在する場合に一致します。

DoesNotExist: フィールドが存在しない場合に一致します。

テキスト文字列

タイムスタンプ

Equals: フィールドの値が指定されたタイムスタンプと完全に一致する場合に一致します。

DoubleEquals: フィールドの値が指定されたタイムスタンプと完全に一致する場合に一致します。Equals の代替です。

NotEquals: フィールドの値が指定されたタイムスタンプと完全に一致しない場合に一致します。

GreaterThan: フィールドの値が指定されたタイムスタンプよりも後の場合に一致します。

GreaterThanOrEquals: フィールドの値が指定されたタイムスタンプの後または等しい場合に一致します。

LessThan: フィールドの値が指定されたタイムスタンプの前の場合に一致します。

LessThanOrEquals: フィールドの値が指定されたタイムスタンプの前または等しい場合に一致します。

In: フィールドの値がリスト内の少なくとも 1 つのタイムスタンプと一致する場合に一致します。

NotIn: フィールドの値がリスト内のタイムスタンプのいずれにも一致しない場合に一致します。

Exists: フィールドが存在する場合に一致します。

DoesNotExist: フィールドが存在しない場合に一致します。

RFC 3339 形式

数値

Equals: フィールドの値が指定された数と等しい場合に一致します。

DoubleEquals: フィールドの値が指定された数と等しい場合に一致します。Equals の代替です。

NotEquals: フィールドの値が指定された数と等しくない場合に一致します。

GreaterThan: フィールドの値が指定された数よりも大きい場合に一致します。

GreaterThanOrEquals: フィールドの値が指定された数以上であれば一致します。

LessThan: フィールドの値が指定された数よりも小さい場合に一致します。

LessThanOrEquals: フィールドの値が指定された数値以下である場合に一致します。

In: フィールドの値がリスト内の少なくとも 1 つの数と等しい場合に一致します。

NotIn: フィールドの値がリスト内の数値に等しくない場合に一致します。

Exists: フィールドが存在する場合に一致します。

DoesNotExist: フィールドが存在しない場合に一致します。

番号形式

ブール値

Equals: 値が true または false の場合に一致します。

DoubleEquals: 値が true または false の場合に一致します。Equals の代替です。

NotEquals: 値が指定された値の逆の場合に一致します。

In: 値 true または false がリストにある場合に一致します。リストに含めることができるのは true または false のみであるため、この Operator の使用は制限されています。

NotIn: 値がリストにない場合に一致します。

Exists: フィールドが存在する場合に一致します。

DoesNotExist: フィールドが存在しない場合に一致します。

ブール値の形式 (truefalse)

配列

Contains: 配列に指定された値がある場合に一致します。

NotContains: 配列に指定された値が含まれていない場合に一致します。

In: 配列が指定された値と重複する場合に一致します。

NotIn: 配列が指定された値と重複しない場合に一致します。Exists: フィールドが存在する場合に一致します。

DoesNotExist: フィールドが存在しない場合に一致します。

配列要素

1.5.3. オペレーティングシステムの更新

テクノロジープレビュー: デバイス仕様でターゲットオペレーティングシステムイメージの名前またはバージョンを更新することで、デバイスのオペレーティングシステムを更新できます。

Red Hat Edge Manager エージェントがサービスと通信すると、エージェントは要求された更新を検出します。その後、エージェントはバックグラウンドで、新しいオペレーティングシステムのバージョンのダウンロードと検証を自動的に開始します。

Red Hat Edge Manager エージェントは、更新ポリシーに従って実際のシステム更新をスケジュールします。スケジュールされた更新時に、エージェントは現在実行中のオペレーティングシステムを中断することなく、新しいバージョンをインストールします。

最後に、デバイスは新規バージョンで再起動します。

Red Hat Edge Manager は現在、以下のイメージタイプとイメージ参照形式をサポートしています。

イメージタイプ

イメージ参照

bootc

コンテナーレジストリーへの OCI イメージ参照。例: quay.io/flightctl-example/rhel:9.5

プロセス中に、エージェントはステータスの更新をサービスに送信します。デバイスのステータスを表示することで、更新プロセスを監視できます。詳細は、デバイスの表示 を参照してください。

1.5.3.1. CLI でのオペレーティングシステムの更新

CLI を使用してデバイスを更新します。以下の手順を実行します。

  1. 次のコマンドを実行して、デバイスの現在のリソースマニフェストを取得します。

    Copy to Clipboard Toggle word wrap
    flightctl get device/<device_name> -o yaml > my_device.yaml
  2. Device リソースを編集して、新しいオペレーティングシステム名とバージョンターゲットを指定します。

    Copy to Clipboard Toggle word wrap
    apiVersion: flightctl.io/v1alpha1
    kind: Device
    metadata:
      name: <device_name>
    spec:
    [...]
      os:
        image: quay.io/flightctl/rhel:9.5
    [...]
  3. 次のコマンドを実行して、更新された Device リソースを適用します。

    Copy to Clipboard Toggle word wrap
    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 で定義された Repository リソースの名前。

TargetRevision

チェックアウトするリポジトリーのブランチ、タグ、またはコミット。

Path

ファイルおよびサブディレクトリーがデバイスのファイルシステムに同期されるリポジトリー内のディレクトリーへの絶対パス。Path ディレクトリーは、MountPath パラメーターが指定されていない限り、デバイス上の root ディレクトリー (/) に対応します。

MountPath

オプション: リポジトリーの内容を書き込むためのデバイスのファイルシステム内のディレクトリーへの絶対パス。デフォルトでは、値はファイルシステムの 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

シークレットの namespace。

MountPath

シークレットの内容を書き込むためのデバイスのファイルシステム内のディレクトリー。

注記: Red Hat Edge Manager には、定義された namespace のシークレットにアクセスする権限が必要です。たとえば、ClusterRoleClusterRoleBinding を作成すると、flightctl-worker サービスアカウントがその namespace のシークレットを取得し、リスト表示できます。

1.5.4.1.3. HTTP サーバーからの設定

Red Hat Edge Manager は、設定のために HTTP サーバーにクエリーを実行できます。HTTP サーバーは、デバイスに対して静的または動的に生成された設定を提供できます。

HTTP 設定プロバイダーは以下のパラメーターを取ります。

パラメーター

説明

リポジトリー

Red Hat Edge Manager で定義された Repository リソースの名前。

接尾辞

Repository リソースで定義されたベース URL に追加する接尾辞。接尾辞には、/path/to/endpoint?query=param などのパスおよびクエリーパラメーターを含めることができます。

FilePath

HTTP サーバーの応答を書き込むためのデバイスのファイルシステム内のファイルへの絶対パス。

Repository リソースは、Red Hat Edge Manager が接続するための HTTP サーバーを指定し、使用するプロトコルとアクセスの認証情報を指定します。レポジトリーは、一度セットアップする必要があります。その後、レポジトリーを使用して複数のデバイスまたはデバイスフリートを設定できます。

1.5.4.1.4. デバイス仕様のインライン設定

設定はデバイス仕様にインラインで指定できます。インラインデバイス仕様を使用する場合、Red Hat Edge Manager は設定を取得するために外部システムに接続する必要はありません。

Inline 設定プロバイダーは、ファイル仕様のリストを取ります。各ファイル仕様は以下のパラメーターを取ります。

パラメーター

説明

Path

コンテンツを書き込むためのデバイスのファイルシステム内のファイルへの絶対パス。指定したパスにファイルがすでに存在する場合、ファイルは上書きされます。

Content

ファイルの UTF-8 または base64 でエンコードされたコンテンツ。

ContentEncoding

コンテンツのエンコード方法を定義します。plain または base64 のどちらかである必要があります。デフォルト値は plain に設定されます。

モード

オプション: ファイルの権限モード。先頭にゼロで 8 進数 (例: 0644) を指定するか、先頭にゼロのない 10 進数 (例: 420) として指定できます。setuidsetgid、および sticky ビットがサポートされています。指定しない場合、ファイルの権限モードはデフォルトで 0644 に設定されます。

User

オプション: ファイルの所有者。名前または数値 ID として指定します。デフォルト値は root に設定されます。

Group

オプション: ファイルのグループ。名前または数値 ID として指定します。

1.5.4.2. 関連情報

1.5.5. MicroShift クラスターを自動登録するためのフリートの設定

テクノロジープレビュー: MicroShift を含むオペレーティングシステムイメージを実行しているデバイスフリートがある場合は、MicroShift クラスターを Red Hat Advanced Cluster Management に自動登録するようにフリートを設定できます。

1.5.5.1. デバイステンプレートの設定

フリート内での自動登録を有効にするには、デバイステンプレートに設定を追加します。以下の手順を実行します。

  1. crd.yaml ファイルの filePathrepository、および suffix を含む acm-crd リソース設定を Fleet リソースに追加します。以下の例を参照してください。

    Copy to Clipboard Toggle word wrap
    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
  2. 次の例のように、filePathrepositorysuffix を使用して acm-import リソース設定を追加します。

    Copy to Clipboard Toggle word wrap
    - name: acm-import
        httpRef:
         filePath: /var/local/acm-import/import.yaml
         repository: acm-registration
         suffix: /agent-registration/manifests/{{.metadata.name}}
  3. オプション: MicroShift クラスターが Red Hat Advanced Cluster Management イメージをプルしなかった場合は、テンプレートに次の追加部分に示すように、pull-secret リソースを追加します。

    Copy to Clipboard Toggle word wrap
    - name: pull-secret
        inline:
        - path: "/etc/crio/openshift-pull-secret"
         content: "{\"auths\":{...}}"
  4. crd.yaml ファイルと import.yaml ファイルで kubectl apply -f を実行するには、次の条件付き if 要件を含む apply-acm-manifests リソースを追加します。

    Copy to Clipboard Toggle word wrap
    - 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
  5. コンソールで、デバイスに fleet:acm というラベルを付け、Approve をクリックすると、fleet-acm フリートが自動的に選択されます。ラベルを使用してデバイスを管理する方法は、デバイスフリートの管理 を参照してください。

1.5.5.2. CLI の Git リポジトリーからのデバイス設定の管理

テクノロジープレビュー: Git リポジトリーでデバイス設定を作成して適用します。

以下の手順を実行します。

  1. site-settings という名前の Repository リソースの次の定義が含まれる site-settings-repo.yaml などのファイルを作成します。

    Copy to Clipboard Toggle word wrap
    apiVersion: flightctl.io/v1alpha1
    kind: Repository
    metadata:
      name: site-settings
    spec:
      type: git
      url: https://github.com/<your_org>/<your_repo>.git
  2. 次のコマンドを実行して、Repository リソースを作成します。

    Copy to Clipboard Toggle word wrap
    flightctl apply -f site-settings-repo.yaml
  3. 以下のコマンドを実行して、リソースが正しく作成され、Red Hat Edge Manager がアクセスできることを確認します。

    Copy to Clipboard Toggle word wrap
    flightctl get repository/site-settings

    以下の出力例を参照してください。

    Copy to Clipboard Toggle word wrap
    NAME           TYPE  REPOSITORY URL                                 ACCESSIBLE
    site-settings  git   https://github.com/<your_org>/<your_repo>.git  True
  4. デバイス仕様を更新して、example-site 設定をデバイスに適用します。

    Copy to Clipboard Toggle word wrap
    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
    この例の設定では、site-settings リポジトリーの production ブランチにある example-site ディレクトリー内のすべてのファイルを取得し、それらを root ディレクトリー (/) に配置します。
    2
    ディレクトリー構造を作成して、ターゲットパスが書き込み可能であることを確認します。bootc システムでは、root ディレクトリー (/) は書き込み可能ではありません。

1.5.6. デバイスのライフサイクルフック

テクノロジープレビュー: Red Hat Edge Manager エージェントは、デバイスライフサイクルフックを使用して、デバイスライフサイクルの特定のポイントでユーザー定義のコマンドを実行できます。たとえば、アプリケーションデータのバックアップを作成するオペレーティングシステムイメージにシェルスクリプトを追加できます。次に、エージェントがオペレーティングシステムの更新を開始する前に、スクリプトが実行され、正常に完了するように指定できます。

別の例として、特定のアプリケーションやシステムサービスは、ファイルがディスク上で変更されても、設定ファイルを自動的にリロードしません。エージェントが更新プロセスを完了した後に呼び出される別のフックとしてコマンドを指定することで、設定ファイルを手動でリロードできます。

次のデバイスのライフサイクルフックがサポートされています。

ライフサイクルフック

説明

beforeUpdating

エージェントが更新の準備を完了した後、ただし、オペレーティングシステムを変更する前に、フックが呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルします。

afterUpdating

フックは、エージェントがディスクに更新を書き込んだ後に呼び出されます。このフックのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。

beforeRebooting

フックは、システムが再起動する前に呼び出されます。エージェントは、アクションの完了またはタイムアウトまで再起動をブロックします。このフックの何らかのアクションが失敗を返した場合、エージェントは更新をキャンセルしてロールバックします。

afterRebooting

フックは、エージェントが再起動後に最初に起動すると呼び出されます。このフックの何らかのアクションが失敗を返した場合、エージェントは失敗を報告しますが、起動を継続します。

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 アクションは以下のパラメーターを取ります。

パラメーター

説明

以下を実行します。

実行するコマンドへの絶対パス。その後にフラグまたは引数が続きます (例: /usr/bin/nmcli connection reload)。コマンドはシェルで実行されないため、$PATH$HOME などのシェル変数や、|; などのチェーンコマンドは使用できません。必要に応じて、実行するコマンドとしてシェルを指定してシェルを起動できます (例: /usr/bin/bash -c 'echo $SHELL $HOME $USER')。

EnvVars

オプション: コマンドの環境変数として設定するキーと値のペアのリスト。

WorkDir

オプション: コマンドが実行されるディレクトリー。

Timeout

オプション: アクションが完了するまで許可される最大時間。期間は、単一の正の整数として指定し、その後に時間単位を指定します。sm、および h 単位は、それぞれ秒、分、および時間に対応しています。

if

オプション: アクションを実行するために true でなければならない条件のリスト。指定されていない場合、アクションは無条件に実行されます。

デフォルトでは、アクションはフックがトリガーされるたびに実行されます。ただし、afterUpdating フックの場合、If パラメーターを使用して、アクションを実行するために true でなければならない条件を追加できます。それ以外の場合、アクションはスキップされます。

たとえば、更新中に特定のファイルまたはディレクトリーが変更された場合にのみアクションを実行するには、以下のパラメーターを取るパス条件を定義できます。

パラメーター

説明

Path

アクションを実行する条件として、更新中に変更される必要があるファイルまたはディレクトリーへの絶対パス。スラッシュ (/) を使用してパスを指定します。ディレクトリーへのパスの場合は、スラッシュ (/) で終了する必要があります。ファイルへのパスを指定する場合は、条件を満たすようにファイルを変更する必要があります。ディレクトリーへのパスを指定する場合は、そのディレクトリーまたはそのサブディレクトリー内のファイルが、その条件を満たすように変更されている必要があります。

Op

createdupdated、および removed などのファイル操作のリスト。変更の種類を、アクションの実行の条件として指定したパスに制限します。

afterUpdating フックでアクションのパス条件を指定する場合、コマンドの引数に含めることができ、変更されたファイルの絶対パスに置き換えられる次の変数があります。

変数

説明

${ Path }

パス条件で指定されたファイルまたはディレクトリーへの絶対パス。

${ Files }

更新時に変更され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。

${ CreatedFiles }

更新時に作成され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。

${ UpdatedFiles }

更新時に更新され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。

${ RemovedFiles }

更新時に削除され、パス条件でカバーされるファイルの絶対パスのスペース区切りリスト。

Red Hat Edge Manager エージェントには、/usr/lib/flightctl/hooks.d/afterupdating/00-default.yaml で定義された組み込みのルールセットが含まれています。特定のファイルが変更された場合、以下のコマンドが実行されます。

File

コマンド

説明

/etc/systemd/system/

systemctl daemon-reload

systemd ユニットへの変更は、systemd デーモンに systemd マネージャー設定をリロードするよう通知することでアクティベートされます。これにより、すべてのジェネレーターが再実行され、すべてのユニットファイルがリロードされ、依存関係ツリー全体が再作成されます。

/etc/NetworkManager/system-connections/

nmcli conn reload

NetworkManager のシステム接続への変更は、NetworkManager デーモンにすべての接続をリロードするよう通知することでアクティベートされます。詳細は、関連情報 セクションを参照してください。

/etc/firewalld/

firewall-cmd --reload

firewalld の永続的な設定への変更は、firewalld に、新しいランタイム設定としてファイアウォールルールをリロードするよう通知することでアクティベートされます。

1.5.6.2. 関連情報

1.5.7. デバイスリソースのモニタリング

テクノロジープレビュー: デバイスリソースのリソースモニターを設定し、リソースの使用率が定義されたしきい値を超えたときにアラートを作成できます。エージェントが Red Hat Edge Manager サービスにアラートを出すと、サービスは重大度レベルに応じてデバイスのステータスを degraded または error に設定します。

リソースモニターは以下のパラメーターを取ります。

パラメーター

説明

MonitorType

監視するリソース。現在、CPUMemory、および Disk リソースがサポートされています。

SamplingInterval

モニターが使用量をサンプリングする間隔で、正の整数の後に時間単位 (s は秒、m は分、h は時間) として指定されます。

AlertRules

アラートルールのリスト。

Path

Disk モニター用のみ。監視するディレクトリーへの絶対パス。使用率は、定義されたパスがマウントポイントではない場合でも、パスを含むファイルシステムを反映します。

アラートルールは以下のパラメーターを取ります。

パラメーター

説明

Severity

アラートルールの重大度は、InfoWarning、または Critical です。重大度レベルとモニターごとに 1 つのアラートルールのみが許可されます。

Duration

サンプリング時にリソース使用量が測定され、平均化される期間で、正の整数の後に時間単位 (s は秒、m は分、h は時間) として指定されます。期間はサンプリング間隔よりも短くする必要があります。

Percentage

アラートをトリガーする使用量のしきい値 (パーセンテージの値)。値は、% 記号なしの 0 から 100 までです。

Description

人間が判読できるアラートの説明。デバッグに役立つアラートの詳細を追加します。デフォルトでは、アラートの説明は load is above >% for more than になります。

1.5.7.1. CLI を使用したデバイスリソースのモニタリング

CLI を使用してデバイスのリソースを監視し、パフォーマンスを追跡して問題のトラブルシューティングを行うツールとコマンドを提供します。

以下の手順を実行します。

  • デバイス仕様の spec.resources セクションにリソースモニターを追加します。たとえば、ディスク用に次のモニターを追加します。

    Copy to Clipboard Toggle word wrap
    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.
    [...]
    1
    5 秒ごとに使用量をサンプリングします。
    2
    /applications_data パスに関連付けられたファイルシステムのディスク使用量を確認します。
    3
    平均使用量が 30 分超にわたって 75% を超えると警告を開始します。
    4
    平均使用量が 10 分にわたって 90% を超えると、重大なアラートを開始します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.