This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.3. Special Resource Operator の使用
Special Resource Operator(SRO) は、ドライバーコンテナーのビルドおよびデプロイメント管理に使用されます。コンテナーのビルドおよびデプロイに必要なオブジェクトは Helm チャートに定義できます。
このセクションの例では、simple-kmod SpecialResource オブジェクトを使用して、Helm チャートを格納するために作成された ConfigMap オブジェクトをポイントしています。
3.3.1. 設定マップを使用した simple-kmod SpecialResource のビルドおよび実行 リンクのコピーリンクがクリップボードにコピーされました!
この例では、simple-kmod カーネルモジュールは、Special Resource Operator (SRO) がドライバーコンテナーを管理する方法を示しています。コンテナーは、設定マップに保存されている Helm チャートテンプレートで定義されます。
前提条件
- OpenShift Container Platform クラスターが実行中である。
-
クラスターのイメージレジストリー Operator の状態を
Managedに設定している。 -
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限があるユーザーとして OpenShift CLI にログインしている。 - Node Feature Discovery(NFD)Operator がインストールされている。
- SRO をインストールされている。
-
Helm CLI(
helm) がインストールされている。
手順
simple-kmod
SpecialResourceオブジェクトを作成するには、イメージをビルドするイメージストリームおよびビルド設定を定義し、コンテナーを実行するサービスアカウント、ロール、ロールバインディング、およびデーモンセットを定義します。カーネルモジュールを読み込めるように、特権付きセキュリティーコンテキストでデーモンセットを実行するにはサービスアカウント、ロール、およびロールバインディングが必要です。templatesディレクトリーを作成して、このディレクトリーに移動します。mkdir -p chart/simple-kmod-0.0.1/templates
$ mkdir -p chart/simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow cd chart/simple-kmod-0.0.1/templates
$ cd chart/simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージストリームおよびビルド設定の YAML テンプレートを
0000-buildconfig.yamlとしてtemplatesディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow RBAC リソースおよびデーモンセットの以下の YAML テンプレートを
1000-driver-container.yamlとしてtemplatesディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow chart/simple-kmod-0.0.1ディレクトリーに移動します。cd ..
$ cd ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow チャートに関する以下の YAML を
Chart.yamlとしてchart/simple-kmod-0.0.1ディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
chartディレクトリーから、helm packageコマンドを使用してチャートを作成します。helm package simple-kmod-0.0.1/
$ helm package simple-kmod-0.0.1/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgz
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定マップを作成して、チャートファイルを保存します。
設定マップファイルのディレクトリーを作成します。
mkdir cm
$ mkdir cmCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm チャートを
cmディレクトリーにコピーします。cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgz
$ cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm チャートが含まれる Helm リポジトリーを指定してインデックスファイルを作成します。
helm repo index cm --url=cm://simple-kmod/simple-kmod-chart
$ helm repo index cm --url=cm://simple-kmod/simple-kmod-chartCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm チャートで定義されるオブジェクトの namespace を作成します。
oc create namespace simple-kmod
$ oc create namespace simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定マップオブジェクトを作成します。
oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmod
$ oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下の
SpecialResourceマニフェストを使用して、設定マップで作成した Helm チャートにより simple-kmod オブジェクトをデプロイします。この YAML をsimple-kmod-configmap.yamlとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインで、
SpecialResourceファイルを作成します。oc create -f simple-kmod-configmap.yaml
$ oc create -f simple-kmod-configmap.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ノードから simple-kmod カーネルモジュールを削除する場合は、oc delete コマンドを使用して simple-kmod SpecialResource API オブジェクトを削除します。カーネルモジュールは、ドライバーコンテナー Pod が削除されるとアンロードされます。
検証
simple-kmod リソースは、オブジェクトマニフェストで指定された simple-kmod namespace にデプロイされます。しばらくすると、simple-kmod ドライバーコンテナーのビルド Pod の実行が開始されます。ビルドは数分後に完了し、ドライバーコンテナー Pod の実行が開始されます。
oc get podsコマンドを使用して、ビルド Pod のステータスを表示します。oc get pods -n simple-kmod
$ oc get pods -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-12813789169ac0ee-1-build 0/1 Completed 0 7m12s simple-kmod-driver-container-12813789169ac0ee-mjsnh 1/1 Running 0 8m2s simple-kmod-driver-container-12813789169ac0ee-qtkff 1/1 Running 0 8m2s
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-12813789169ac0ee-1-build 0/1 Completed 0 7m12s simple-kmod-driver-container-12813789169ac0ee-mjsnh 1/1 Running 0 8m2s simple-kmod-driver-container-12813789169ac0ee-qtkff 1/1 Running 0 8m2sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の
oc get podsコマンドから取得したビルド Pod 名と共にoc logsコマンドを使用して、simple-kmod ドライバーコンテナーイメージビルドのログを表示します。oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmod
$ oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow simple-kmod カーネルモジュールがロードされていることを確認するには、上記の
oc get podsコマンドから返されたドライバーコンテナー Pod のいずれかでlsmodコマンドを実行します。oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simple
$ oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simpleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
simple_procfs_kmod 16384 0 simple_kmod 16384 0
simple_procfs_kmod 16384 0 simple_kmod 16384 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
sro_kind_completed_info SRO Prometheus メトリックから、デプロイされているさまざまなオブジェクトのステータスに関する情報が分かるので、SROCR インストールのトラブルシューティングに役立ちます。SRO には、環境の正常性監視に使用できる他のタイプのメトリックも含まれます。
3.3.2. hub-and-spoke トポロジー用の simple-kmod SpecialResource の構築および実行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Advanced Cluster Management(RHACM) がハブクラスターを 1 つ以上のマネージドクラスターに接続するハブおよびスポークデプロイメントで Special Resource Operator(SRO) を使用できます。
以下の手順では、ハブの SRO ビルドドライバーコンテナーについて説明します。SRO は、ハブクラスターリソースを監視し、スポークを提供するリソースの作成に使用する helm チャートの OpenShift Container Platform バージョンを特定します。
前提条件
- OpenShift Container Platform クラスターが実行中である。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限があるユーザーとして OpenShift CLI にログインしている。 - SRO をインストールされている。
-
Helm CLI(
helm) がインストールされている。 - Red Hat Advanced Cluster Management (RHACM) をインストールしました。
- コンテナーレジストリーを設定している。
手順
以下のコマンドを実行して
templatesディレクトリーを作成します。mkdir -p charts/acm-simple-kmod-0.0.1/templates
$ mkdir -p charts/acm-simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して
templatesディレクトリーに移動します。cd charts/acm-simple-kmod-0.0.1/templates
$ cd charts/acm-simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow BuildConfig、Policy、およびPlacementRuleリソースのテンプレートファイルを作成します。イメージストリームとビルド設定のこの YAML テンプレートを
0001-buildconfig.yamlとしてtemplatesディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACM ポリシーのこの YAML テンプレートを
0002-policy.yamlとしてtemplatesディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーの配置用に、この YAML テンプレートを
0003-policy.yamlとしてtemplatesディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して
charts/acm-simple-kmod-0.0.1ディレクトリーに移動します。cd ..
cd ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow チャートの次の YAML テンプレートを
Charts/acm-simple-kmod-0.0.1ディレクトリーにChart.yamlとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
chartsディレクトリーから、以下のコマンドを使用してチャートを作成します。helm package acm-simple-kmod-0.0.1/
$ helm package acm-simple-kmod-0.0.1/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Successfully packaged chart and saved it to: <directory>/charts/acm-simple-kmod-0.0.1.tgz
Successfully packaged chart and saved it to: <directory>/charts/acm-simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow チャートファイルを保存する設定マップを作成します。
以下のコマンドを実行して、設定マップファイルのディレクトリーを作成します。
mkdir cm
$ mkdir cmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、Helm チャートを
cmディレクトリーにコピーします。cp acm-simple-kmod-0.0.1.tgz cm/acm-simple-kmod-0.0.1.tgz
$ cp acm-simple-kmod-0.0.1.tgz cm/acm-simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、Helm チャートを含む Helm リポジトリーを指定してインデックスファイルを作成します。
helm repo index cm --url=cm://acm-simple-kmod/acm-simple-kmod-chart
$ helm repo index cm --url=cm://acm-simple-kmod/acm-simple-kmod-chartCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、Helm チャートで定義されるオブジェクトの namespace を作成します。
oc create namespace acm-simple-kmod
$ oc create namespace acm-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して設定マップオブジェクトを作成します。
oc create cm acm-simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/acm-simple-kmod-0.0.1.tgz -n acm-simple-kmod
$ oc create cm acm-simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/acm-simple-kmod-0.0.1.tgz -n acm-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下の
SpecialResourceModuleマニフェストを使用して、設定マップで作成した Helm チャートを使用してsimple-kmodオブジェクトをデプロイします。この YAML ファイルをacm-simple-kmod.yamlとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 設定したレジストリーの URL を指定します。
以下のコマンドを実行して、特別なリソースモジュールを作成します。
oc apply -f charts/examples/acm-simple-kmod.yaml
$ oc apply -f charts/examples/acm-simple-kmod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
以下のコマンドを実行して、ビルド Pod のステータスを確認します。
KUBECONFIG=~/hub/auth/kubeconfig oc get pod -n acm-simple-kmod
$ KUBECONFIG=~/hub/auth/kubeconfig oc get pod -n acm-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE acm-simple-kmod-4-18-0-305-34-2-el8-4-x86-64-1-build 0/1 Completed 0 42m
NAME READY STATUS RESTARTS AGE acm-simple-kmod-4-18-0-305-34-2-el8-4-x86-64-1-build 0/1 Completed 0 42mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、ポリシーが作成されていることを確認します。
KUBECONFIG=~/hub/auth/kubeconfig oc get placementrules,placementbindings,policies -n acm-simple-kmod
$ KUBECONFIG=~/hub/auth/kubeconfig oc get placementrules,placementbindings,policies -n acm-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、リソースが調整されていることを確認します。
KUBECONFIG=~/hub/auth/kubeconfig oc get specialresourcemodule acm-simple-kmod -o json | jq -r '.status'
$ KUBECONFIG=~/hub/auth/kubeconfig oc get specialresourcemodule acm-simple-kmod -o json | jq -r '.status'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、リソースがスポークで稼働していることを確認します。
KUBECONFIG=~/spoke1/kubeconfig oc get ds,pod -n acm-simple-kmod
$ KUBECONFIG=~/spoke1/kubeconfig oc get ds,pod -n acm-simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow