5.2. CSI インラインの一時ボリューム
Container Storage Interface (CSI) のインライン一時ボリュームを使用すると、Pod のデプロイ時にインラインの一時ボリュームを作成し、Pod の破棄時にそれらを削除する Pod
仕様を定義できます。
この機能は、サポートされている Container Storage Interface (CSI) ドライバーでのみ利用できます: * 共有リソース CSI ドライバー * Azure File CSI ドライバー
5.2.1. CSI インラインの一時ボリュームの概要
従来は、Container Storage Interface (CSI) ドライバーでサポートされるボリュームは PersistentVolume
および PersistentVolumeClaim
オブジェクトの組み合わせでのみ使用できます。
この機能により、PersistentVolume
オブジェクトではなく、Pod
仕様に CSI ボリュームを直接指定できます。インラインボリュームは一時的なボリュームであり、Pod の再起動後は永続化されません。
5.2.1.1. サポートの制限
デフォルトで、OpenShift Container Platform は以下の制限下で CSI インラインの一時ボリュームのクローン作成をサポートします。
- サポートは CSI ドライバーでのみ利用可能です。インツリーおよび FlexVolumes はサポートされません。
-
共有リソース CSI ドライバーは、テクノロジープレビュー機能として、複数の namespace にまたがる
Secrets
またはConfigMap
にアクセスするためだけに、インラインのエフェメラルボリュームを使用することをサポートします。 - コミュニティーまたはストレージベンダーは、これらのボリュームをサポートする他の CSI ドライバーを提供します。CSI ドライバーのプロバイダーが提供するインストール手順に従います。
CSI ドライバーは、Ephemeral
機能を含む、インラインボリューム機能を実装していない可能性があります。詳細は、CSI ドライバーのドキュメントを参照してください。
Shared Resource CSI Driver は、テクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
5.2.2. CSI Volume Admission プラグイン
Container Storage Interface (CSI) Volume Admission プラグインを使用すると、Pod アドミッション時に CSI 一時ボリュームをプロビジョニングできる個別の CSI ドライバーの使用を制限できます。管理者は csi-ephemeral-volume-profile
ラベルを追加できます。このラベルは Admission プラグインによって検査され、施行、警告、監査の決定に使用されます。
5.2.2.1. 概要
CSI Volume Admission プラグインを使用するには、管理者は security.openshift.io/csi-ephemeral-volume-profile
ラベルを CSIDriver
オブジェクトに追加します。これは、CSI 一時ボリュームを提供するために使用される CSI ドライバーの有効な Pod セキュリティープロファイルを次のように宣言します。次の例に示されています。
kind: CSIDriver
metadata:
name: csi.mydriver.company.org
labels:
security.openshift.io/csi-ephemeral-volume-profile: restricted 1
- 1
csi-ephemeral-volume-profile
ラベルが "restricted" に設定された CSI ドライバーオブジェクト YAML ファイル
この “有効なプロファイル” は、Pod の namespace が Pod のセキュリティー標準によって管理されている場合に、Pod が CSI ドライバーを使用して CSI 一時ボリュームをマウントできることを伝えます。
CSI Volume Admission プラグインは、Pod の作成時に Pod ボリュームを検査します。CSI ボリュームを使用する既存の Pod は影響を受けません。Pod がコンテナーストレージインターフェイス (CSI) ボリュームを使用する場合、プラグインは CSIDriver
オブジェクトを検索して csi-ephemeral-volume-profile
ラベルを検査し、そのラベルの値を適用、警告、および監査の決定に使用します。
5.2.2.2. Pod セキュリティープロファイルの適用
CSI ドライバーに csi-ephemeral-volume-profile
ラベルが付いている場合、CSI ドライバーを使用して CSI 一時ボリュームをマウントする Pod は、同等以上のアクセス許可の Pod セキュリティー標準を強制する namespace で実行する必要があります。namespace がより制限的な標準を適用する場合、CSI Volume Admission プラグインは受付を拒否します。以下の表は、指定のラベル値に対するさまざまな Pod セキュリティープロファイルの適用動作を説明しています。
Pod セキュリティープロファイル | ドライバーラベル: restricted | ドライバーラベル: baseline | ドライバーラベル: privileged |
---|---|---|---|
Restricted |
Allowed |
Denied |
Denied |
Baseline |
Allowed |
Allowed |
Denied |
Privileged |
Allowed |
Allowed |
Allowed |
5.2.2.3. Pod セキュリティープロファイルの警告
CSI Volume Admission プラグインは、CSI ドライバーの有効なプロファイルが Pod namespace の Pod セキュリティー警告プロファイルよりも許容度が高い場合に警告できます。次の表は、指定されたラベル値のさまざまな Pod セキュリティープロファイルで警告がいつ発生するかを示しています。
Pod セキュリティープロファイル | ドライバーラベル: restricted | ドライバーラベル: baseline | ドライバーラベル: privileged |
---|---|---|---|
Restricted |
No warning |
Warning |
Warning |
Baseline |
No warning |
No warning |
Warning |
Privileged |
No warning |
No warning |
No warning |
5.2.2.4. Pod セキュリティープロファイル監査
CSI ボリュームの受付プラグインは、CSI ドライバーの有効なプロファイルが Pod namespace の Pod セキュリティー監査プロファイルよりも許容されている場合に、監査アノテーションを Pod に適用できます。以下の表は、指定のラベル値のさまざまな Pod セキュリティープロファイルに適用される監査アノテーションを示しています。
Pod セキュリティープロファイル | ドライバーラベル: restricted | ドライバーラベル: baseline | ドライバーラベル: privileged |
---|---|---|---|
Restricted |
No audit |
Audit |
Audit |
Baseline |
No audit |
No audit |
Audit |
Privileged |
No audit |
No audit |
No audit |
5.2.2.5. CSI Volume Admission プラグインのデフォルト動作
CSI エフェメラルボリュームの参照 CSI ドライバーに csi-ephemeral-volume-profile
ラベルがない場合、CSI Volume Admission プラグインは、ドライバーに強制、警告、および監査動作用の特権プロファイルがあると見なされます。同様に、Pod の namespace に Pod セキュリティーアドミッションラベルが設定されていない場合、受付プラグインは restricted プロファイルが強制、警告、および監査の決定について許可されていると見なします。そのため、ラベルが設定されていない場合、その CSI ドライバーを使用する CSI 一時ボリュームはデフォルトで特権付き namespace でのみ利用できます。
OpenShift Container Platform に同梱され、一時ボリュームをサポートする CSI ドライバーには、csi-ephemeral-volume-profile
ラベルの妥当なデフォルトセットがあります。
- Shared Resource CSI ドライバー: restricted
- Azure File CSI ドライバー: privileged
管理者は、必要に応じてラベルのデフォルト値を変更できます。
5.2.3. Pod 仕様への CSI インライン一時ボリュームの埋め込み
CSI インラインの一時ボリュームを OpenShift Container Platform の Pod
仕様に埋め込むことができます。ランタイム時に、ネストされたインラインボリュームは、関連付けられた Pod の一時的なライフサイクルに従うため、CSI ドライバーは Pod の作成および破棄時にボリューム操作のすべてのフェーズをすべて処理できます。
手順
-
Pod
オブジェクト定義を作成し、これをファイルに保存します。 CSI インラインの一時ボリュームをファイルに埋め込みます。
my-csi-app.yaml
kind: Pod apiVersion: v1 metadata: name: my-csi-app spec: containers: - name: my-frontend image: busybox volumeMounts: - mountPath: "/data" name: my-csi-inline-vol command: [ "sleep", "1000000" ] volumes: 1 - name: my-csi-inline-vol csi: driver: inline.storage.kubernetes.io volumeAttributes: foo: bar
- 1
- Pod で使用されるボリュームの名前。
直前のステップで保存したオブジェクト定義ファイルを作成します。
$ oc create -f my-csi-app.yaml