ページの先頭です

ページ内を移動するためのリンク
本文へ (c)

ここから本文です。

Red Hat Edge Managerによるエッジデバイスの宣言的な管理

エッジコンピューティングの導入を成功させるには、分散する拠点やデバイスを効率的かつ安全に運用するための集中管理が不可欠です。エッジ環境における集中管理のソリューションであるRed Hat Edge Managerをご紹介します。

ライター:奈良 昌紀
通信事業者のデータセンターにおいてネットワーク・サーバー運用を経験した後、ネットワンシステムズに入社。帯域制御やWAN高速化製品担当を経て、2008年から仮想化関連製品を担当。現在は主にクラウド、仮想インフラの管理、自動化、ネットワーク仮想化を担当。

目次

はじめに

Kubernetesは宣言的に記述されたマニフェストに基づき、クラスターの状態(Actual State)を「あるべき姿(Desired State)」に自律的に収束させるReconciliation Loopという仕組みを備えており、この仕組みにGitを組み合わせた運用モデルがGitOpsと呼ばれています。GitOpsでは、Gitリポジトリ上のマニフェストを「単一の信頼できる情報源(Single Source of Truth, SSOT)」として扱い、クラスターがその内容と常に整合するように自律的に構成管理を行います。特に複数クラスター環境では、各クラスターが共通のGitリポジトリを参照することで、設定やアプリケーションの一元管理が可能となり、構成の一貫性と運用の効率化を実現できます。

この仕組みは、エッジコンピューティングのような分散環境において特に有効です。エッジ拠点では、ネットワーク帯域が制限されていたり、通信が不安定であったりすることが多く、中央集権型のPushモデルでは運用が困難です。一方GitOpsは、各エッジクラスターに配置されたエージェントがGitから必要な構成をPullして適用するモデルであるため、オフライン耐性があり、安定した継続的運用が可能です。さらに、Gitによる構成管理は、変更履歴の可視化、監査対応、設定のロールバックの容易さといった利点も提供します。これにより、数十〜数千に及ぶエッジデバイスに対しても、統一されたセキュリティポリシー、アプリケーション展開、インフラ管理をスケーラブルに実現できます。

Red Hat Advanced Cluster Management for Kubernetes (ACM)は複数クラスターのKubernetesアプリケーションのGitOpsを実現するための機能を備えています。2025年3月にリリースされたバージョン2.13では、新たにEdge Managerと呼ばれる機能がTechnology Previewとして追加されています。この機能はOSのバージョン、ホスト設定アプリケーションのデプロイメント等、エッジデバイスの設定情報を宣言的に管理することを実現します。本記事ではEdge Managerの機能を中心に、エッジコンピューティング環境にデバイス管理のソリューションをご紹介します。

Edge Managerとは

Edge Managerはオープンソースとして開発されているFlight Control を元にしており、Red Hat Advanced Cluster Management(ACM) for Kubernetesの機能として利用することが可能です。Edge Managerは以下の機能を持ち、宣言型アプローチにより、エッジデバイスのイメージベースのLinux OS(bootc/rpm-ostree)とそのOS上のコンテナワークロードを管理することが可能です。

  • ACMに統合されたGUI:デバイスとアプリケーションを管理するためのWeb UIの提供。
  • GitOps管理に適した宣言型API : Edge Manager APIはKubernetesに似たAPIを実装しており、Kubernetes管理者は比較的容易に管理することが可能。
  • フリート管理:エッジデバイスのフリート(グループ)とそのワークロードをデバイステンプレートとして宣言的に管理可能。
  • エージェントベースのアーキテクチャ:不安定なネットワークであっても、スケーラブルで堅牢な管理を実現。

Edge Managerの有効化

Edge ManagerはACMをインストールしたHubクラスターのopen-cluster-managementネームスペースでpodとして起動します。バージョン2.13の現在、Technology Previewであるため、ACMをインストールしただけでは有効化されず、multiclusterhubs.operator.open-cluster-management.ioで明示的にedge-manager-previewをenableにする必要があります。

$ oc get pod -n open-cluster-management | grep flightctl
flightctl-api-9c584dcc6-6fnf6                              1/1     Running     2 (48s ago)   64s
flightctl-db-5b5496d86-bpbdk                               1/1     Running     0             65s
flightctl-kv-0                                             1/1     Running     0             65s
flightctl-periodic-5c5b44856c-qdt5t                        1/1     Running     2 (47s ago)   65s
flightctl-secrets-8h4z9                                    0/1     Completed   0             64s
flightctl-ui-58b4b67c64-rhshs                              1/1     Running     0             64s
flightctl-worker-78d976c789-c4whh                          1/1     Running     0             64s
$ oc get route -n open-cluster-management
NAME                        HOST/PORT                                         PATH   SERVICES              PORT         TERMINATION          WILDCARD
acm-cli-downloads           acm-cli-downloads.apps.cap.techlab.netone.co.jp          acm-cli-downloads     https-8443   reencrypt/Redirect   None
flightctl-api-route         api.apps.cap.techlab.netone.co.jp                        flightctl-api         3443         passthrough/None     None
flightctl-api-route-agent   agent-api.apps.cap.techlab.netone.co.jp                  flightctl-api-agent   7443         passthrough/None     None

必要なリソースが作成されると、ACMの画面に「Edge Management」のメニューが追加され、ホーム画面にはエッジデバイスの状態を確認するためのタブが追加されます。

Edge Managerに対する各種操作は、GUIの他flightctl CLIを利用することが出来ます。flightctl CLIはkubectlに似たコマンドで、Edge Managerの管理下のデバイスの確認やポリシーの適用が可能です。(flightctl APIはOpenShiftとは独立しており、OpenShift内のKubernetesリソースとは分離されています)

    • Edge Managerへのログイン
$ flightctl login --username=${USER} --password=${PASSWRD} https://api.apps.cap.techlab.netone.co.jp
    • デバイス一覧の取得
$ flightctl get devices
NAME                                                    ALIAS                   OWNER   SYSTEM  UPDATED         APPLICATIONS    LAST SEEN
apt6guqotuungteks86fe9pj3s5ut1f56p06322t6g8mcpb0l0lg    flightctl-device-1        Online  UpToDate        Healthy         43 seconds ago
b5b754j8ou4qj9s99mqq28ota55lp2om13dp2h205c17oml46rjg    flightctl-device-2        Online  UpToDate        Healthy         7 seconds ago
    • デバイスに対するポリシーの適用
$ flightctl apply -f policy.yaml

デバイスの登録

Edge Managerで管理されるデバイスにはRPM-OSTreeによるイメージベースのOSであるRHEL for Edge利用し、Edge Managerのエージェントソフトウェア(flightctl-agent)をインストールします。デバイス上で起動するエージェントはEdge Managerが発行した証明書(Enrollment Certificate)を利用してEdge Managerに対して接続して登録要求を行います。Edge Managerで管理者が登録を承認すると、Edge Managerから制御可能になります。

デバイスの管理

Edge Manager GUIからデバイスで利用するOSイメージや、OS上に作成する各種ファイル、OS上で実行するコンテナアプリケーションを指定することが可能です。これらの設定はDeviceリソースとしてマニフェストを編集し、flightctl CLIにより設定することも可能です。

  • Device labels:デバイスにラベルを付与することが出来ます。ラベルに基づいて、フリートに参加することが可能です。
  • System image:RPM-OSTreeにより作成したOCIイメージをコンテナレジストリに登録したものを指定します。実行中のOSイメージと差分がある場合、自動的にダウンロードしてアップグレードします。
  • Configurations:設定ファイル等静的なファイルを作成します。ファイルのデータソースはInline/Git/HTTPを利用可能です。
  • Applications:デバイス上で実行するアプリケーションを定義します。アプリケーションはpodman-compose向けの設定ファイルを利用して定義します。設定ファイルをOCIイメージ化し、コンテナレジストリに登録したものを指定します。マニフェストして指定する場合、Inlinepodman-compose.yamlを記述することも可能です。

また、各デバイスの管理画面にはTerminal機能があり、管理下のデバイスのターミナルに直接接続することが可能です。ターミナル接続はデバイス側から発信されたものであるため、NAT配下のデバイスであっても利用することが出来ます。

フリートとGitOpsによるデバイスの管理

上記のデバイス管理方法ではデバイス単体の管理となるため、多数のデバイス管理には適していません。Edge Managerは多数のデバイスを効率的に管理するためにフリートを利用することが出来ます。デバイスに付与したラベルに基づき、デバイスをフリートとしてグルーピングします。フリートに対してデバイスと同じ様にSystem imageConfigurationsApplicationsを定義します。フリートを利用することにより、新たに追加されたデバイスにラベルを付与するだけで、既存のフリートに追加され、自動的に設定ファイルやアプリケーションをデプロイすることが可能になります。

フリートの設定もマニフェストとして定義することができ、このマニフェストはGitにより管理可能です。Edge ManagerGitリポジトリをRepositoryとして登録し、リポジトリ上のFleetマニフェストをResource Syncとして登録することで、Fleetに対するGitOpsが可能になります。

デバイスにタグを付与することにより、自動的にフリート設定が適用され、フリートリソースによる設定が優先され、各デバイスに対する個別の設定は出来なくなります。

Gitリポジトリ上のFleetマニフェストを更新すると、Fleetに参加している全てのデバイスの設定として反映されます。

ACMとの統合

Edge ManagerのデバイスでMicroShiftを実行している場合、MicroShiftACMにクラスターとして登録することで、ACMのアプリケーション管理機能を利用してデバイスに対してアプリケーションを配信することも可能です。

Edge Managerのリポジトリには「acm-registration」があらかじめ用意されており、デバイスリソースのオプションとして「Register this MicroShift device to ACM」を有効化すると、デバイスのMicroShiftをACMの管理クラスターとして管理可能です。

ACMのアプリケーション機能を利用することにより、ArgoCDを利用して管理下のデバイスにKubernetesアプリケーションを配信することが可能です。

まとめ

Red Hat Advanced Cluster Management for Kubernetesと新機能であるEdge Managerは、エッジコンピューティングを実現するRed Hat Device Edgeの管理に必要な機能を提供します。さらに、Ansible Automation Platformとも連携することで、エッジコンピューティング環境に求められる複雑な管理を簡素化し、エッジコンピューティングのプロダクション環境への導入を可能にします。

ネットワンシステムズでは、様々なエッジコンピューティング向けソリューションを提供し、お客様のエッジコンピューティングの導入をご支援させていただいています。

※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。

RECOMMEND