Red Hat OpenShiftまたはアップストリームKubernetesを使用したGatekeeper
Zusammenfassung: このKBでは、Red Hat GitHubのkubevirt-rawio-addonリポジトリーを使用して、PowerMax GatekeeperをRed Hat OpenShiftまたはアップストリームのKubernetes環境に提示する方法について説明します。
Weisungen
PowerMaxゲートキーパー
PowerMax Gatekeeperは、PowerMaxのディスクから切り分けられた小型デバイス(通常は3 MB)であり、Solutions EnablerコマンドのSCSIターゲットとして機能します。構成とステータス情報は、デフォルトでsymapi_db.bin PowerMaxホスト データベース ファイルに保持されます。これは、PowerMax構成データベースと呼ばれます。これにより、ホストからストレージ アレイへの問い合わせの数が減ります。Gatekeeperは、OSが操作せずにSCSIコマンドを渡すだけになるように、rawデバイスである必要があります。物理ホストは常にGatekeeper(対応OSを使用)と連携しますが、仮想ホストは物理RAWデバイス マッピング(RDM)、WindowsまたはLinuxのゲスト内iSCSI、Linuxのゲスト内NVMe/TCP、パススルー デバイス(NICまたはHBA)を使用するVMwareに限定されます。ただし、実行可能なGatekeeperとして認識されている真のrawデバイスを提供できるのはVMwareのみです。他の仮想化ソリューションでは、ユーザーはデバイスを「raw」として表示できますが、それらのソリューションは一部のSCSIコマンドをブロックし、Gatekeeperとしての使用を妨げます。Solutions EnablerはこれらをGatekeeperとしてラベル付けしますが、次のようにエラーを報告します。

さらに、Gatekeeperを調べると、「CLS」または「クローズ」の状態が表示されます。

したがって、必要なSCSIコマンドを渡すことはできません。
このソリューションを利用するには、選択したオペレーティング システムでSolutions Enablerがサポートするプロトコルを使用する必要があります。製品マニュアルを参照してください。
Red Hat GitHubソリューション
Dellは、両社の一部のお客様を対象に、OpenShift環境でのGatekeeperの回避策を開発するためのRed Hatの支援を要請しました。そのために、実装にわずかなバリエーションを加えて、OpenShiftとアップストリームKubernetesの両方で機能するソリューションを作成しました。GitHub リポジトリーは kubevirt-rawio-addon と呼ばれています。 https://github.com/openshift-cnv/kubevirt-rawio-addon GitHub には readme https://github.com/openshift-cnv/kubevirt-rawio-addon/blob/main/README.md が含まれています。
このアドオンは、いくつかのコンポーネントをインストールします。
- Webhookを変更してオブジェクトをその場で変更する
- Webhook の検証 - OpenShift 固有の安全性チェック
- 特権機能を許可するセキュリティ構成
- サイドカーフック
サイドカーは、VM ポッドと共に実行され、起動前に VM の低レベルの構成を変更する小さな追加コンテナーです。KubeVirtによって生成されたVM構成をインターセプトし、注釈付きディスクを見つけて、rawio=yesを設定します。その後、KubeVirtはXMLを取得します。libvirt/QEMU の基盤となるアーキテクチャはこれをサポートしていますが、公開していないため、この小さな調整が必要です。KubeVirtが将来これを公開する可能性があり、その時点で回避策は不要になります。
OpenShiftでの実装
リポジトリーには、このソリューションを実装するためのすべての手順が含まれています。Red Hatがソリューションを所有しているため、Dellでは、将来変更される可能性のある現在の手順に従うことをお勧めします。 Dellは、これらの変更を反映するためにKBを更新することはありません。礼儀として、以下の基本情報を提供しますが、このKBのユーザーはリポジトリと一緒にそれらを使用することをお勧めします。
前述のように、これはOpenShiftまたはアップストリームKubernetesに実装できます。OpenShiftの手順であるため、アップストリームKubernetesを実行する場合は注意点がいくつかあります。
- バニラK8sに実装する場合は、cert-managerがインストールされている必要があります。PowerMax CSIドライバーがインストールされている場合は、このドライバーが存在します。
- バニラK8sに実装する場合は、特権ネームスペースが必要です。ネームスペースは、スクリプトで使用することも、独自のネームスペースを作成してからスクリプトを変更することもできます。
実装に必要な 2 つのスクリプトは hack フォルダーにあります。rawio-setup.sh は最初のスクリプトであり、どちらのプラットフォームでも同じですが、OpenShiftにのみ存在するopenshift-cnvネームスペースに依存していることに注意してください。ネームスペースを追加するか、新しいネームスペースを作成して、Kubernetesのスクリプトを変更します。VM作成スクリプトはプラットフォームに固有ですが、ここでもopenshift-cnvネームスペースを使用します。OpenShiftの場合は rawio-create-vm-openshift.sh です。スクリプトはテスト環境を作成するように設計されており、本番環境のセットアップ用に変更する必要があります。特に、rawio-setup.sh スクリプトは仮想SCSIデバイスを作成します。代わりに、PowerMaxストレージ クラスを使用するようにスクリプトを変更します。さらに、このスクリプトでは、VM をスケジュールするための 1 つのノードを想定しています。任意のワーカー ノードで実行できるように変更します。このスクリプトは、構築前のFedoraOSを使用します。
サンプル スクリプトは 、補足コンテンツにあります。
基本手順
- リポジトリをクローンします: git clonehttps://github.com/openshift-cnv/kubevirt-rawio-addon.git
- マニフェストをインストールします。 oc apply -fhttps://github.com/openshift-cnv/kubevirt-rawio-addon/releases/download/v0.1.0/rawio-addon-openshift.yaml
- サイドカーをインストールします。 oc annotate –overwrite -n openshift-cnv hco kubevirt-hyperconverged kubevirt.kubevirt.io/jsonpatch='[{"op": 「追加」、「パス」: "/spec/configuration/developerConfiguration/featureGates/-", "value": "サイドカー"}]'
- セットアップを実行します: rawio-setup.sh
- VMの作成: rawio-create-vm-openshift.sh
- OSをインストールします(ビルド済みのものを使用していないことが前提です)
従来の3 MBのGatekeeperを要求した場合でも、PowerMax CSIでは50 MB未満のデバイスを作成できないことに注意してください。問題は発生しません。


その他の仮想化ソリューション
以下のソリューションはいずれも、このRed Hatリポジトリーでは機能しません。
- SUSE HarvesterなどのK8sベースのソリューション - SUSEは独自のソリューションを開発する必要がある
- ProxmoxやOracle KVM(oVirt)などのKVMソリューション - これらはKubeVirtベースではないため、使用できません
Weitere Informationen
rawio-setup.sh
*******************************************
rawio-create-vm-openshift.sh