名前空間間でNFSボリュームを共有する
Tridentを使用すると、プライマリ名前空間にボリュームを作成し、それを1つ以上のセカンダリ名前空間で共有できます。
機能
TridentVolumeReference CR を使用すると、ReadWriteMany(RWX)NFS ボリュームを 1 つ以上の Kubernetes 名前空間にわたって安全に共有できます。この Kubernetes ネイティブソリューションには、次の利点があります:
-
セキュリティを確保するための複数レベルのアクセス制御
-
すべての Trident NFS ボリュームドライバーに対応
-
tridentctl やその他の非ネイティブ Kubernetes 機能に依存しない
この図は、2 つの Kubernetes 名前空間間での NFS ボリュームの共有を示しています。
クイック スタート
わずか数ステップで NFS ボリューム共有を設定できます。
ボリュームを共有するようにソース PVC を設定するソース名前空間の所有者は、ソース PVC 内のデータにアクセスする権限を付与します。
宛先ネームスペースに CR を作成する権限を付与しますクラスタ管理者は、宛先名前空間の所有者にTridentVolumeReference CRを作成する権限を付与します。
宛先名前空間にTridentVolumeReferenceを作成する宛先名前空間の所有者は、ソースPVCを参照するTridentVolumeReference CRを作成します。
宛先ネームスペースに従属PVCを作成する宛先ネームスペースの所有者は、ソース PVC のデータソースを使用するために従属 PVC を作成します。
ソースネームスペースと宛先ネームスペースを設定する
セキュリティを確保するには、名前空間間の共有には、ソース名前空間の所有者、クラスター管理者、および宛先名前空間の所有者による連携とアクションが必要です。各ステップでユーザーロールが指定されます。
-
*ソースネームスペースの所有者*:ソースネームスペースでPVC(`pvc1`を作成し、(`namespace2`宛てに共有する権限を付与するために、 `shareToNamespace`アノテーションを使用します。
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc1 namespace: namespace1 annotations: trident.netapp.io/shareToNamespace: namespace2 spec: accessModes: - ReadWriteMany storageClassName: trident-csi resources: requests: storage: 100GiTrident は PV とそのバックエンド NFS ストレージボリュームを作成します。
-
コンマ区切りのリストを使用して、PVC を複数の名前空間で共有できます。例えば、
trident.netapp.io/shareToNamespace: namespace2,namespace3,namespace4。 -
すべての名前空間に共有するには、
*`を使用します。例: `trident.netapp.io/shareToNamespace: * -
PVCを更新して、 `shareToNamespace`アノテーションをいつでも含めることができます。
-
-
*クラスタ管理者:*適切なRBACが設定されていることを確認し、宛先ネームスペースの所有者が宛先ネームスペースにTridentVolumeReference CRを作成する権限を付与します。
-
宛先名前空間の所有者: ソース名前空間を参照するTridentVolumeReference CRを宛先名前空間に作成します
pvc1。apiVersion: trident.netapp.io/v1 kind: TridentVolumeReference metadata: name: my-first-tvr namespace: namespace2 spec: pvcName: pvc1 pvcNamespace: namespace1 -
宛先ネームスペースの所有者: 宛先ネームスペース(
namespace2)でPVC(pvc2)を作成し、ソースPVCを指定するために `shareFromPVC`アノテーションを使用します。kind: PersistentVolumeClaim apiVersion: v1 metadata: annotations: trident.netapp.io/shareFromPVC: namespace1/pvc1 name: pvc2 namespace: namespace2 spec: accessModes: - ReadWriteMany storageClassName: trident-csi resources: requests: storage: 100Giデスティネーション PVC のサイズは、ソース PVC のサイズ以下である必要があります。
Tridentは、デスティネーションPVCの `shareFromPVC`アノテーションを読み取り、デスティネーションPVを、独自のストレージリソースを持たず、ソースPVを指してソースPVストレージリソースを共有する従属ボリュームとして作成します。デスティネーションPVCとPVは正常にバインドされているように見えます。
共有ボリュームを削除する
複数の名前空間間で共有されているボリュームを削除できます。Tridentは、ソース名前空間のボリュームへのアクセスを削除し、ボリュームを共有する他の名前空間へのアクセスを維持します。ボリュームを参照するすべての名前空間が削除されると、Tridentはボリュームを削除します。
`tridentctl get`を使用して従属ボリュームを照会する
[`tridentctl`ユーティリティを使用して、 `get`コマンドを実行すると、従属ボリュームを取得できます。詳細については、link:../trident-reference/trident-cl.html[`tridentctl`コマンドとオプション]を参照してください。
Usage: tridentctl get [option]
フラグ:
-
`-h, --help:ボリュームのヘルプ。 -
--parentOfSubordinate string:クエリを従属ソースボリュームに制限します。 -
--subordinateOf string:ボリュームの下位にクエリを制限します。
制限事項
-
Tridentは、宛先ネームスペースが共有ボリュームに書き込むのを防ぐことはできません。共有ボリュームのデータが上書きされないようにするには、ファイルロックまたはその他のプロセスを使用する必要があります。
-
ソースPVCへのアクセスを取り消すには、 `shareToNamespace`または `shareFromNamespace`アノテーションを削除するか、 `TridentVolumeReference`CRを削除しても取り消すことはできません。アクセスを取り消すには、従属PVCを削除する必要があります。
-
従属ボリュームではスナップショット、クローン、ミラーリングは実行できません。
詳細情報
クロスネームスペースボリュームアクセスの詳細については、次を参照してください:
-
"名前空間間でボリュームを共有する:クロスネームスペースボリュームアクセスの実現"にアクセスしてください。
-
"NetAppTV"でデモをご覧ください。