4.5. root または非 root として Rsync を実行する
このセクションは、Web コンソールではなく、OpenShift API を使用している場合にのみ適用されます。
OpenShift 環境では、PodSecurityAdmission
コントローラーがデフォルトで有効になっています。このコントローラーでは、クラスター管理者がネームスペースラベルを使用して Pod セキュリティー標準を適用する必要があります。クラスター内のすべてのワークロードは、次の Pod セキュリティー標準レベルのいずれかを実行することが期待されます: Privileged
、Baseline
または Restricted
。すべてのクラスターには、独自のデフォルトポリシーセットがあります。
MTC 1.7.5 では、すべての環境で正常なデータ転送を確実に実行するために、Rsync Pod に変更が導入されました。たとえば、デフォルトで Rsync Pod を非 root ユーザーとして実行することなどです。これにより、必ずしもより高い特権を必要としないワークロードでもデータ転送が可能になります。この変更が行われたのは、可能な限り低いレベルの特権でワークロードを実行するのが最善であるためです。
データ転送におけるデフォルトの非 root 操作の手動オーバーライド
ほとんどの場合、非 root ユーザーとして Rsync Pod を実行すると機能しますが、ソース側で root ユーザーとしてワークロードを実行すると、データ転送が失敗することがあります。MTC は、データ転送のデフォルトの非ルート操作を手動でオーバーライドする 2 つの方法を提供します。
- すべての移行の宛先クラスターで Rsync Pod をルートとして実行するように、すべての移行を設定します。
- 移行ごとに宛先クラスターで Rsync Pod をルートとして実行します。
どちらの場合も、移行前に、より高い権限でワークロードを実行している namespace のソース側に、enforce
、audit
、および warn
のラベルを設定する必要があります。
Pod セキュリティーアドミッションとラベルの設定値の詳細は、Pod セキュリティーアドミッションの同期の制御 を参照してください。
4.5.1. すべての移行で MigrationController CR をルートまたは非ルートとして設定する
デフォルトでは、Rsync は非ルートとして実行されます。
宛先クラスターで、Rsync をルートとして実行するように MigrationController
CR を設定できます。
手順
MigrationController
CR を次のように設定します。apiVersion: migration.openshift.io/v1alpha1 kind: MigrationController metadata: name: migration-controller namespace: openshift-migration spec: [...] migration_rsync_privileged: true
この設定は、今後のすべての移行に適用されます。
4.5.2. 移行ごとにルートまたは非ルートとして MigMigration CR を設定する
移行先クラスターでは、MigMigration
CR を設定して、次の非ルートオプションを使用して、ルートまたは非ルートとして Rsync を実行できます。
- 特定のユーザー ID (UID) として
- 特定のグループ ID (GID) として
手順
Rsync をルートとして実行するには、次の例に従って
MigMigration
CR を設定します。apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: name: migration-controller namespace: openshift-migration spec: [...] runAsRoot: true
Rsync を特定のユーザー ID (UID) または特定のグループ ID (GID) として実行するには、次の例に従って
MigMigration
CR を設定します。apiVersion: migration.openshift.io/v1alpha1 kind: MigMigration metadata: name: migration-controller namespace: openshift-migration spec: [...] runAsUser: 10010001 runAsGroup: 3