4.5. root または非 root として Rsync を実行する

重要

このセクションは、Web コンソールではなく、OpenShift API を使用している場合にのみ適用されます。

OpenShift 環境では、PodSecurityAdmission コントローラーがデフォルトで有効になっています。このコントローラーでは、クラスター管理者がネームスペースラベルを使用して Pod セキュリティー標準を適用する必要があります。クラスター内のすべてのワークロードは、次の Pod セキュリティー標準レベルのいずれかを実行することが期待されます: PrivilegedBaseline または Restricted。すべてのクラスターには、独自のデフォルトポリシーセットがあります。

すべての環境で正常なデータ転送を保証するために、Migration Toolkit for Containers (MTC) 1.7.5 では Rsync Pod に変更が導入されました。これには、デフォルトで非ルートユーザーとして Rsync Pod を実行することが含まれます。これにより、必ずしもより高い特権を必要としないワークロードでもデータ転送が可能になります。この変更が行われたのは、可能な限り低いレベルの特権でワークロードを実行するのが最善であるためです。

データ転送におけるデフォルトの非 root 操作の手動オーバーライド

ほとんどの場合、非 root ユーザーとして Rsync Pod を実行すると機能しますが、ソース側で root ユーザーとしてワークロードを実行すると、データ転送が失敗することがあります。MTC は、データ転送のデフォルトの非ルート操作を手動でオーバーライドする 2 つの方法を提供します。

  • すべての移行の宛先クラスターで Rsync Pod をルートとして実行するように、すべての移行を設定します。
  • 移行ごとに宛先クラスターで Rsync Pod をルートとして実行します。

どちらの場合も、移行前に、より高い権限でワークロードを実行している namespace のソース側に、enforceaudit、および 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) として

手順

  1. Rsync をルートとして実行するには、次の例に従って MigMigration CR を設定します。

    apiVersion: migration.openshift.io/v1alpha1
    kind: MigMigration
    metadata:
      name: migration-controller
      namespace: openshift-migration
    spec:
      [...]
      runAsRoot: true
  2. 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