3.3. eBPF プログラムのデプロイ
クラスター管理者は、eBPF Manager Operator を使用してコンテナー化された eBPF アプリケーションをデプロイできます。
この手順でデプロイされるサンプル eBPF プログラムの場合、サンプルマニフェストは次のことを実行します。
まず、Namespace、ServiceAccount、ClusterRoleBinding などの基本的な Kubernetes オブジェクトを作成します。また、eBPF Manager が提供するカスタムリソース定義 (CRD) である XdpProgram オブジェクトも作成し、eBPF XDP プログラムをロードします。各プログラムタイプには独自の CRD がありますが、その機能は似ています。詳細は、Kubernetes での eBPF プログラムのロード を参照してください。
次に、eBPF プログラムが作成する eBPF マップを読み取るユーザー空間プログラムを実行するデーモンセットを作成します。この eBPF マップは、Container Storage Interface (CSI) ドライバーを使用してボリュームマウントされます。ホスト上でアクセスする代わりにコンテナー内の eBPF マップをボリュームマウントすることで、アプリケーション Pod は権限なしで eBPF マップにアクセスできます。CSI の設定方法の詳細は、Kubernetes での eBPF 対応アプリケーションのデプロイ を参照してください。
eBPF Manager Operator はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。
3.3.1. コンテナー化された eBPF プログラムの導入 リンクのコピーリンクがクリップボードにコピーされました!
クラスター管理者は、クラスター上のノードに eBPF プログラムをデプロイできます。この手順では、サンプルのコンテナー化された eBPF プログラムが go-xdp-counter namespace にインストールされます。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - 管理者権限を持つアカウントがある。
- eBPF Manager Operator をインストールしている。
手順
マニフェストをダウンロードするには、次のコマンドを入力します。
$ curl -L https://github.com/bpfman/bpfman/releases/download/v0.5.1/go-xdp-counter-install-selinux.yaml -o go-xdp-counter-install-selinux.yamlサンプル eBPF アプリケーションをデプロイするには、次のコマンドを実行します。
$ oc create -f go-xdp-counter-install-selinux.yaml出力例
namespace/go-xdp-counter created serviceaccount/bpfman-app-go-xdp-counter created clusterrolebinding.rbac.authorization.k8s.io/xdp-binding created daemonset.apps/go-xdp-counter-ds created xdpprogram.bpfman.io/go-xdp-counter-example created selinuxprofile.security-profiles-operator.x-k8s.io/bpfman-secure createdeBPF サンプルアプリケーションが正常にデプロイされたことを確認するには、次のコマンドを実行します。
$ oc get all -o wide -n go-xdp-counter出力例
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod/go-xdp-counter-ds-4m9cw 1/1 Running 0 44s 10.129.0.92 ci-ln-dcbq7d2-72292-ztrkp-master-1 <none> <none> pod/go-xdp-counter-ds-7hzww 1/1 Running 0 44s 10.130.0.86 ci-ln-dcbq7d2-72292-ztrkp-master-2 <none> <none> pod/go-xdp-counter-ds-qm9zx 1/1 Running 0 44s 10.128.0.101 ci-ln-dcbq7d2-72292-ztrkp-master-0 <none> <none> NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR daemonset.apps/go-xdp-counter-ds 3 3 3 3 3 <none> 44s go-xdp-counter quay.io/bpfman-userspace/go-xdp-counter:v0.5.0 name=go-xdp-counterサンプル XDP プログラムが実行していることを確認するには、次のコマンドを実行します。
$ oc get xdpprogram go-xdp-counter-example出力例
NAME BPFFUNCTIONNAME NODESELECTOR STATUS go-xdp-counter-example xdp_stats {} ReconcileSuccessXDP プログラムがデータを収集していることを確認するには、次のコマンドを実行します。
$ oc logs <pod_name> -n go-xdp-counter<pod_name>を、go-xdp-counter-ds-4m9cwなどの XDP プログラム Pod の名前に置き換えます。出力例
2024/08/13 15:20:06 15016 packets received 2024/08/13 15:20:06 93581579 bytes received ...