OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
4.4. S3 プロトコルを使用してレガシーアプリケーションデータをクラウドネイティブアプリケーションと共有する
多くのレガシーアプリケーションは、ファイルシステムを使用してデータセットを共有します。S3 操作を使用して、ファイルシステム内のレガシーデータにアクセスして共有できます。データを共有するには、次のことを行う必要があります。
- 既存のファイルシステムデータセット、つまり Ceph FileSystem (CephFS) などの RWX ボリュームをエクスポートするか、S3 プロトコルを使用して新しいファイルシステムデータセットを作成します。
- ファイルシステムと S3 プロトコルの両方からファイルシステムデータセットにアクセスします。
- S3 アカウントを設定し、それらを既存または新規のファイルシステムの一意の識別子 (UID) とグループ識別子 (GID) にマップします。
4.4.1. ファイルシステムを使用するための NamespaceStore の作成 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- OpenShift Data Foundation Operator を使用した OpenShift Container Platform のインストール
- Multicloud Object Gateway (MCG) へのアクセス。
手順
- OpenShift Web コンソールにログインします。
-
Storage
Data Foundation をクリックします。 - Namespace Store タブをクリックして、namespace バケットで使用される NamespaceStore リソースを作成します。
- Create namespaces をクリックします。
- NamespaceStore の名前を入力します。
- プロバイダーとしてファイルシステムを選択します。
- 永続ボリュームクレームを選択します。
フォルダー名を入力します。
フォルダー名が存在する場合は、そのフォルダーを使用して NamespaceStore を作成するか、その名前のフォルダーを作成します。
- Create をクリックします。
- namespacestore が Ready 状態にあることを確認します。
4.4.2. NamespaceStore ファイルシステム設定を使用したアカウントの作成 リンクのコピーリンクがクリップボードにコピーされました!
NamespaceStore ファイルシステム設定を使用して新しいアカウントを作成するか、YAML を編集して既存の通常のアカウントを NamespaceStore ファイルシステムアカウントに変換できます。
NamespaceStore ファイルシステム設定をアカウントから削除することはできません。
前提条件
Multicloud Object Gateway (MCG) コマンドラインインターフェイスをダウンロードします。
subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms yum install mcg
# subscription-manager repos --enable=rh-odf-4-for-rhel-8-x86_64-rpms # yum install mcgCopy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
MCG コマンドラインインターフェイスを使用して、NamespaceStore ファイルシステム設定で新しいアカウントを作成します。
noobaa account create <noobaa-account-name> [flags]
$ noobaa account create <noobaa-account-name> [flags]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
noobaa account create testaccount --full_permission --nsfs_account_config --gid 10001 --uid 10001 –default_resource fs_namespacestore
$ noobaa account create testaccount --full_permission --nsfs_account_config --gid 10001 --uid 10001 –default_resource fs_namespacestoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow allow_bucket_createアカウントが新しいバケットの作成を許可されているかどうかを示します。サポートされている値は
trueまたはfalseです。デフォルト値はtrueです。allowed_bucketsユーザーがアクセス権と管理権を持つことを許可されているバケット名のコンマ区切りのリスト。
default_resourceS3 CreateBucket 操作を使用するときに新しいバケットが作成される NamespaceStore リソース。NamespaceStore は、RWX (ReadWriteMany) 永続ボリューム要求 (PVC) によってサポートされている必要があります。
full_permissionアカウントに完全な許可を許可するかどうかを示します。サポートされている値は
trueまたはfalseです。デフォルト値はfalseです。new_buckets_path新しいバケットに対応するディレクトリーが作成されるファイルシステムパス。パスは、NamespaceStore ファイルシステム PVC のファイルシステム内にあり、新しく作成されたオブジェクトバケットクラスのファイルシステムマッピングとして機能する新しいディレクトリーが作成されます。
nsfs_account_configアカウントが NamespaceStore ファイルシステムに使用されているかどうかを示す必須フィールド。
nsfs_onlyアカウントが NamespaceStore ファイルシステムにのみ使用されるかどうかを示します。サポートされている値は true または
falseです。デフォルト値はfalseです。true に設定すると、他のタイプのバケットへのアクセスが制限されます。uidMCG アカウントがマップされるファイルシステムのユーザー ID であり、ファイルシステム上のデータにアクセスして管理するために使用されます。
gidMCG アカウントがマップされるファイルシステムのグループ ID であり、ファイルシステム上のデータにアクセスして管理するために使用されます。
MCG システムは、アカウント設定とその S3 クレデンシャルを含む応答を送信します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを使用して、すべてのカスタムリソース定義 (CRD) ベースのアカウントを一覧表示できます。
noobaa account list NAME ALLOWED_BUCKETS DEFAULT_RESOURCE PHASE AGE testaccount [*] noobaa-default-backing-store Ready 1m17s
$ noobaa account list NAME ALLOWED_BUCKETS DEFAULT_RESOURCE PHASE AGE testaccount [*] noobaa-default-backing-store Ready 1m17sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のアカウントに関心がある場合は、そのカスタムリソース定義 (CRD) をアカウント名で直接読み取ることができます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.3. openshift-storage namespace からレガシーアプリケーションデータにアクセスする リンクのコピーリンクがクリップボードにコピーされました!
Multicloud Object Gateway (MCG) NamespaceStore ファイルシステム (NSFS) 機能を使用する場合、データが openshift-storage namespace に存在する 永続ボリューム要求 (PVC) が必要です。ほとんどすべての場合、アクセスする必要のあるデータは、openshift-storage namespace ではなく、レガシーアプリケーションが使用する namespace にあります。
別の namespace に保存されているデータにアクセスするには、レガシーアプリケーションが使用するのと同じ CephFS ボリュームを指す PVC を openshift-storage namespace に作成する必要があります。
手順
sccを使用してアプリケーションの namespace を表示します。oc get ns <application_namespace> -o yaml | grep scc
$ oc get ns <application_namespace> -o yaml | grep sccCopy to Clipboard Copied! Toggle word wrap Toggle overflow - <application_namespace>
アプリケーションの namespace の名前を指定します。
以下に例を示します。
oc get ns testnamespace -o yaml | grep scc openshift.io/sa.scc.mcs: s0:c26,c5 openshift.io/sa.scc.supplemental-groups: 1000660000/10000 openshift.io/sa.scc.uid-range: 1000660000/10000
$ oc get ns testnamespace -o yaml | grep scc openshift.io/sa.scc.mcs: s0:c26,c5 openshift.io/sa.scc.supplemental-groups: 1000660000/10000 openshift.io/sa.scc.uid-range: 1000660000/10000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
アプリケーションの namespace に移動します。
oc project <application_namespace>
$ oc project <application_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc project testnamespace
$ oc project testnamespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow MCG NSFS 機能を使用して、noobaa S3 エンドポイントから消費する Pod に ReadWriteMany (RWX) PVC がマウントされていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get pod NAME READY STATUS RESTARTS AGE cephfs-write-workload-generator-no-cache-1-cv892 1/1 Running 0 11s
$ oc get pod NAME READY STATUS RESTARTS AGE cephfs-write-workload-generator-no-cache-1-cv892 1/1 Running 0 11sCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod 内の永続ボリューム (PV) のマウントポイントを確認します。
Pod から PV のボリューム名を取得します。
oc get pods <pod_name> -o jsonpath='{.spec.volumes[]}'$ oc get pods <pod_name> -o jsonpath='{.spec.volumes[]}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <pod_name>
pod の名前を指定します。
以下に例を示します。
oc get pods cephfs-write-workload-generator-no-cache-1-cv892 -o jsonpath='{.spec.volumes[]}' {"name":"app-persistent-storage","persistentVolumeClaim":{"claimName":"cephfs-write-workload-generator-no-cache-pv-claim"}}$ oc get pods cephfs-write-workload-generator-no-cache-1-cv892 -o jsonpath='{.spec.volumes[]}' {"name":"app-persistent-storage","persistentVolumeClaim":{"claimName":"cephfs-write-workload-generator-no-cache-pv-claim"}}Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、PVC のボリュームの名前は
cephfs-write-workload-generator-no-cache-pv-claimです。
Pod 内のすべてのマウントを一覧表示し、前の手順で特定したボリュームのマウントポイントを確認します。
oc get pods <pod_name> -o jsonpath='{.spec.containers[].volumeMounts}'$ oc get pods <pod_name> -o jsonpath='{.spec.containers[].volumeMounts}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc get pods cephfs-write-workload-generator-no-cache-1-cv892 -o jsonpath='{.spec.containers[].volumeMounts}' [{"mountPath":"/mnt/pv","name":"app-persistent-storage"},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-8tnc5","readOnly":true}]$ oc get pods cephfs-write-workload-generator-no-cache-1-cv892 -o jsonpath='{.spec.containers[].volumeMounts}' [{"mountPath":"/mnt/pv","name":"app-persistent-storage"},{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-8tnc5","readOnly":true}]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod 内の RWX PV のマウントポイントを確認します。
oc exec -it <pod_name> -- df <mount_path>
$ oc exec -it <pod_name> -- df <mount_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <mount_path>前の手順で特定したマウントポイントへのパスを指定します。
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
UID および SELinux ラベルが、レガシー namespace が使用するものと同じであることを確認してください。
oc exec -it <pod_name> -- ls -latrZ <mount_path>
$ oc exec -it <pod_name> -- ls -latrZ <mount_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-storagenamespace からアクセス可能にするレガシーアプリケーション RWX PV の情報を取得します。oc get pv | grep <pv_name>
$ oc get pv | grep <pv_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <pv_name>PV の名前を指定します。
以下に例を示します。
oc get pv | grep pvc-aa58fb91-c3d2-475b-bbee-68452a613e1a pvc-aa58fb91-c3d2-475b-bbee-68452a613e1a 10Gi RWX Delete Bound testnamespace/cephfs-write-workload-generator-no-cache-pv-claim ocs-storagecluster-cephfs 47s
$ oc get pv | grep pvc-aa58fb91-c3d2-475b-bbee-68452a613e1a pvc-aa58fb91-c3d2-475b-bbee-68452a613e1a 10Gi RWX Delete Bound testnamespace/cephfs-write-workload-generator-no-cache-pv-claim ocs-storagecluster-cephfs 47sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1 つ以上の noobaa-endpoint Pod が PVC にアクセスできるように、レガシーアプリケーションの PVC が
openshift-storagenamespace からアクセス可能であることを確認します。volumeAttributesからsubvolumePathとvolumeHandleの値を検索します。これらの値は、レガシーアプリケーション PV の YAML 記述から取得できます。oc get pv <pv_name> -o yaml
$ oc get pv <pv_name> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のステップで特定した
subvolumePathとvolumeHandleの値を使用して、レガシーアプリケーション PV と同じ CephFS ボリュームを指すopenshift-storagenamespace に新しい PV および PVC オブジェクトを作成します。YAML ファイルサンプル:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のステップで指定した YAML ファイルを使用して、
openshift-storagenamespace に PV と PVC を作成します。oc create -f <YAML_file>
$ oc create -f <YAML_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <YAML_file>YAML ファイルの名前を指定します。
以下に例を示します。
oc create -f pv-openshift-storage.yaml persistentvolume/cephfs-pv-legacy-openshift-storage created persistentvolumeclaim/cephfs-pvc-legacy created
$ oc create -f pv-openshift-storage.yaml persistentvolume/cephfs-pv-legacy-openshift-storage created persistentvolumeclaim/cephfs-pvc-legacy createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
PVC が
openshift-storagenamespace で使用可能であることを確認します。oc get pvc -n openshift-storage NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cephfs-pvc-legacy Bound cephfs-pv-legacy-openshift-storage 10Gi RWX 14s
$ oc get pvc -n openshift-storage NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE cephfs-pvc-legacy Bound cephfs-pv-legacy-openshift-storage 10Gi RWX 14sCopy to Clipboard Copied! Toggle word wrap Toggle overflow openshift-storageプロジェクトに移動します。oc project openshift-storage Now using project "openshift-storage" on server "https://api.cluster-5f6ng.5f6ng.sandbox65.opentlc.com:6443".
$ oc project openshift-storage Now using project "openshift-storage" on server "https://api.cluster-5f6ng.5f6ng.sandbox65.opentlc.com:6443".Copy to Clipboard Copied! Toggle word wrap Toggle overflow NSFS namespace ストアを作成します。
noobaa namespacestore create nsfs <nsfs_namespacestore> --pvc-name='<cephfs_pvc_name>' --fs-backend='CEPH_FS'
$ noobaa namespacestore create nsfs <nsfs_namespacestore> --pvc-name='<cephfs_pvc_name>' --fs-backend='CEPH_FS'Copy to Clipboard Copied! Toggle word wrap Toggle overflow <nsfs_namespacestore>- NSFS namespace ストアの名前を指定します。
<cephfs_pvc_name>openshift-storagenamespace で CephFSPVC の名前を指定します。以下に例を示します。
noobaa namespacestore create nsfs legacy-namespace --pvc-name='cephfs-pvc-legacy' --fs-backend='CEPH_FS'
$ noobaa namespacestore create nsfs legacy-namespace --pvc-name='cephfs-pvc-legacy' --fs-backend='CEPH_FS'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
noobaa-endpointPod が再起動し、NSFS namespace ストア (
/nsfs/legacy-namespacemountpoint など) に PVC が正常にマウントされていることを確認します。oc exec -it <noobaa_endpoint_pod_name> -- df -h /nsfs/<nsfs_namespacestore>
$ oc exec -it <noobaa_endpoint_pod_name> -- df -h /nsfs/<nsfs_namespacestore>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <noobaa_endpoint_pod_name>noobaa エンドポイント Pod の名前を指定します。
以下に例を示します。
oc exec -it noobaa-endpoint-5875f467f5-546c6 -- df -h /nsfs/legacy-namespace Filesystem Size Used Avail Use% Mounted on 172.30.202.87:6789,172.30.120.254:6789,172.30.77.247:6789:/volumes/csi/csi-vol-cc416d9e-dbf3-11ec-b286-0a580a810213/edcfe4d5-bdcb-4b8e-8824-8a03ad94d67c 10G 0 10G 0% /nsfs/legacy-namespace
$ oc exec -it noobaa-endpoint-5875f467f5-546c6 -- df -h /nsfs/legacy-namespace Filesystem Size Used Avail Use% Mounted on 172.30.202.87:6789,172.30.120.254:6789,172.30.77.247:6789:/volumes/csi/csi-vol-cc416d9e-dbf3-11ec-b286-0a580a810213/edcfe4d5-bdcb-4b8e-8824-8a03ad94d67c 10G 0 10G 0% /nsfs/legacy-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
MCG ユーザーアカウントを作成します。
noobaa account create <user_account> --full_permission --allow_bucket_create=true --new_buckets_path='/' --nsfs_only=true --nsfs_account_config=true --gid <gid_number> --uid <uid_number> --default_resource='legacy-namespace'
$ noobaa account create <user_account> --full_permission --allow_bucket_create=true --new_buckets_path='/' --nsfs_only=true --nsfs_account_config=true --gid <gid_number> --uid <uid_number> --default_resource='legacy-namespace'Copy to Clipboard Copied! Toggle word wrap Toggle overflow <user_account>- MCG ユーザーアカウントの名前を指定します。
<gid_number>- GID 番号を指定します。
<uid_number>UID 番号を指定します。
重要レガシーアプリケーションと同じ
UIDとGIDを使用します。前の出力から見つけることができます。以下に例を示します。
noobaa account create leguser --full_permission --allow_bucket_create=true --new_buckets_path='/' --nsfs_only=true --nsfs_account_config=true --gid 0 --uid 1000660000 --default_resource='legacy-namespace'
$ noobaa account create leguser --full_permission --allow_bucket_create=true --new_buckets_path='/' --nsfs_only=true --nsfs_account_config=true --gid 0 --uid 1000660000 --default_resource='legacy-namespace'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
MCG バケットを作成します。
レガシーアプリケーション Pod の CephFS PV および PVC の NSFS 共有内に S3 専用のフォルダーを作成します。
oc exec -it <pod_name> -- mkdir <mount_path>/nsfs
$ oc exec -it <pod_name> -- mkdir <mount_path>/nsfsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc exec -it cephfs-write-workload-generator-no-cache-1-cv892 -- mkdir /mnt/pv/nsfs
$ oc exec -it cephfs-write-workload-generator-no-cache-1-cv892 -- mkdir /mnt/pv/nsfsCopy to Clipboard Copied! Toggle word wrap Toggle overflow nsfs/パスを使用して MCG バケットを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
レガシーアプリケーションおよび
openshift-storagenamespace の PVC にあるフォルダーの SELinux ラベルを確認します。oc exec -it <noobaa_endpoint_pod_name> -n openshift-storage -- ls -ltraZ /nsfs/<nsfs_namespacstore>
$ oc exec -it <noobaa_endpoint_pod_name> -n openshift-storage -- ls -ltraZ /nsfs/<nsfs_namespacstore>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc exec -it <pod_name> -- ls -latrZ <mount_path>
$ oc exec -it <pod_name> -- ls -latrZ <mount_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの例では、SELinux ラベルが同じではないため、アクセス許可が拒否されたり、アクセスの問題が発生したりすることがわかります。
レガシーアプリケーションと
openshift-storagePod がファイルで同じ SELinux ラベルを使用していることを確認します。これは、次のいずれかの方法で実行できます。
NSFS namespace ストアを削除します。
MCG バケットを削除します。
noobaa bucket delete <bucket_name>
$ noobaa bucket delete <bucket_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
noobaa bucket delete legacy-bucket
$ noobaa bucket delete legacy-bucketCopy to Clipboard Copied! Toggle word wrap Toggle overflow MCG ユーザーアカウントを削除します。
noobaa account delete <user_account>
$ noobaa account delete <user_account>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
noobaa account delete leguser
$ noobaa account delete leguserCopy to Clipboard Copied! Toggle word wrap Toggle overflow NSFS namespace ストアを削除します。
noobaa namespacestore delete <nsfs_namespacestore>
$ noobaa namespacestore delete <nsfs_namespacestore>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
noobaa namespacestore delete legacy-namespace
$ noobaa namespacestore delete legacy-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
PV と PVC を削除します。
重要PV と PVC を削除する前に、PV に保持ポリシーが設定されていることを確認してください。
oc delete pv <cephfs_pv_name>
$ oc delete pv <cephfs_pv_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pvc <cephfs_pvc_name>
$ oc delete pvc <cephfs_pvc_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <cephfs_pv_name>- レガシーアプリケーションの CephFS PV 名を指定します。
<cephfs_pvc_name>レガシーアプリケーションの CephFS PVC 名を指定します。
以下に例を示します。
oc delete pv cephfs-pv-legacy-openshift-storage
$ oc delete pv cephfs-pv-legacy-openshift-storageCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc delete pvc cephfs-pvc-legacy
$ oc delete pvc cephfs-pvc-legacyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.3.1. レガシーアプリケーションプロジェクトのデフォルトの SELinux ラベルを、openshift-storage プロジェクトのラベルと一致するように変更します リンクのコピーリンクがクリップボードにコピーされました!
現在の
openshift-storagenamespace をsa.scc.mcsで表示します。oc get ns openshift-storage -o yaml | grep sa.scc.mcs openshift.io/sa.scc.mcs: s0:c26,c0
$ oc get ns openshift-storage -o yaml | grep sa.scc.mcs openshift.io/sa.scc.mcs: s0:c26,c0Copy to Clipboard Copied! Toggle word wrap Toggle overflow レガシーアプリケーションの namespace を編集し、
openshift-storagenamespace のsa.scc.mcsの値でsa.scc.mcsを変更します。oc edit ns <appplication_namespace>
$ oc edit ns <appplication_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc edit ns testnamespace
$ oc edit ns testnamespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get ns <application_namespace> -o yaml | grep sa.scc.mcs
$ oc get ns <application_namespace> -o yaml | grep sa.scc.mcsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc get ns testnamespace -o yaml | grep sa.scc.mcs openshift.io/sa.scc.mcs: s0:c26,c0
$ oc get ns testnamespace -o yaml | grep sa.scc.mcs openshift.io/sa.scc.mcs: s0:c26,c0Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
レガシーアプリケーション Pod を再起動します。すべてのファイルの再ラベル付けが行われ、SELinux ラベルが
openshift-storageデプロイメントと一致するようになりました。
4.4.3.2. レガシーアプリケーション PVC をマウントする Pod を持つデプロイメント設定に対してのみ SELinux ラベルを変更する リンクのコピーリンクがクリップボードにコピーされました!
MustRunAsおよびseLinuxOptionsオプションを使用して、openshift-storageプロジェクトが使用するマルチカテゴリーセキュリティー (MCS) を使用して新しいsccを作成します。サンプル YAML ファイル:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc create -f scc.yaml
$ oc create -f scc.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメント用のサービスアカウントを作成し、新しく作成した
sccに追加します。サービスアカウントを作成します。
oc create serviceaccount <service_account_name>
$ oc create serviceaccount <service_account_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <service_account_name>`
サービスアカウントの名前を指定します。
以下に例を示します。
oc create serviceaccount testnamespacesa
$ oc create serviceaccount testnamespacesaCopy to Clipboard Copied! Toggle word wrap Toggle overflow
新しく作成した
sccにサービスアカウントを追加します。oc adm policy add-scc-to-user restricted-pvselinux -z <service_account_name>
$ oc adm policy add-scc-to-user restricted-pvselinux -z <service_account_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc adm policy add-scc-to-user restricted-pvselinux -z testnamespacesa
$ oc adm policy add-scc-to-user restricted-pvselinux -z testnamespacesaCopy to Clipboard Copied! Toggle word wrap Toggle overflow
新しく作成されたサービスアカウントを使用するように、レガシーアプリケーションのデプロイメントにパッチを適用します。これにより、デプロイメントで SELinux ラベルを指定できます。
oc patch dc/<pod_name> '{"spec":{"template":{"spec":{"serviceAccountName": "<service_account_name>"}}}}'$ oc patch dc/<pod_name> '{"spec":{"template":{"spec":{"serviceAccountName": "<service_account_name>"}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
oc patch dc/cephfs-write-workload-generator-no-cache --patch '{"spec":{"template":{"spec":{"serviceAccountName": "testnamespacesa"}}}}'$ oc patch dc/cephfs-write-workload-generator-no-cache --patch '{"spec":{"template":{"spec":{"serviceAccountName": "testnamespacesa"}}}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメントを編集して、デプロイメント設定の SELinux ラベルで使用するセキュリティーコンテキストを指定します。
oc edit dc <pod_name> -n <application_namespace>
$ oc edit dc <pod_name> -n <application_namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の行を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <security_context_value>この値は、レガシーアプリケーション Pod の CephFS PV および PVC で、NSFS 共有内に S3 専用のフォルダーを作成するコマンドを実行するときに見つかります。
以下に例を示します。
oc edit dc cephfs-write-workload-generator-no-cache -n testnamespace
$ oc edit dc cephfs-write-workload-generator-no-cache -n testnamespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
デプロイメント設定の SELinux ラベルで使用されるセキュリティーコンテキストが正しく指定されていることを確認してください。
oc get dc <pod_name> -n <application_namespace> -o yaml | grep -A 2 securityContext
$ oc get dc <pod_name> -n <application_namespace> -o yaml | grep -A 2 securityContextCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例えば
oc get dc cephfs-write-workload-generator-no-cache -n testnamespace -o yaml | grep -A 2 securityContext securityContext: seLinuxOptions: level: s0:c26,c0$ oc get dc cephfs-write-workload-generator-no-cache -n testnamespace -o yaml | grep -A 2 securityContext securityContext: seLinuxOptions: level: s0:c26,c0Copy to Clipboard Copied! Toggle word wrap Toggle overflow レガシーアプリケーションが再起動され、
openshift-storagenamespace と同じ SELinux ラベルの使用が開始されます。