5.7. AWS S3 互換ストレージを使用した OADP の設定


5.7.1. AWS S3 互換ストレージを使用した OpenShift API for Data Protection の設定

OADP Operator をインストールすることで、Amazon Web Services (AWS) S3 互換ストレージを使用して OpenShift API for Data Protection (OADP) をインストールします。Operator は Velero 1.16 をインストールします。

注記

OADP 1.0.4 以降、すべての OADP 1.0.z バージョンは Migration Toolkit for Containers Operator の依存関係としてのみ使用でき、スタンドアロン Operator として使用することはできません。

Velero 向けに AWS を設定し、デフォルトの Secret を作成し、次に、Data Protection Application をインストールします。詳細は、OADP Operator のインストール を参照してください。

制限されたネットワーク環境に OADP Operator をインストールするには、最初にデフォルトの OperatorHub ソースを無効にして、Operator カタログをミラーリングする必要があります。詳細は、非接続環境での Operator Lifecycle Manager の使用 を参照してください。

5.7.1.1. Amazon Simple Storage Service、Identity and Access Management、GovCloud について

Amazon Simple Storage Service (Amazon S3) は、インターネット向けの Amazon のストレージソリューションです。許可されたユーザーは、このサービスを使用して、Web 上のどこからでも、いつでも任意の量のデータを保存および取得できます。

AWS Identity and Access Management (IAM) Web サービスは、Amazon S3 やその他の Amazon サービスへのアクセスをセキュアに制御するために使用します。

IAM を使用すると、ユーザーがアクセスできる AWS リソースを制御する権限を管理できます。IAM は、ユーザーが本人であるかどうかを認証 (検証) するとともに、リソースを使用する権限を認可 (付与) するために使用します。

AWS GovCloud (US) は、米国連邦政府の厳格かつ特定のデータセキュリティー要件を満たすために開発された Amazon ストレージソリューションです。AWS GovCloud (US) は、次の点を除いて Amazon S3 と同じように動作します。

  • AWS GovCloud (米国) リージョンの Amazon S3 バケットの内容を、別の AWS リージョンに、または別の AWS リージョンから直接コピーすることはできません。
  • Amazon S3 ポリシーを使用する場合は、IAM ポリシー、Amazon S3 バケット名、API 呼び出しなど、AWS 全体で、AWS GovCloud (US) の Amazon Resource Name (ARN) 識別子を使用してリソースを明確に指定します。

    • AWS GovCloud (US) リージョンでは、他の標準 AWS リージョンの識別子とは異なる識別子 (arn:aws-us-gov) が ARN に付きます。US-West または US-East リージョンを指定する必要がある場合は、次のいずれかの ARN を使用します。

      • US-West の場合は、us-gov-west-1 を使用します。
      • US-East の場合は、us-gov-east-1 を使用します。
    • その他のすべての標準リージョンでは、ARN は arn:aws で始まります。
  • AWS GovCloud (US) リージョンでは、Amazon Simple Storage Service endpoints and quotas の "Amazon S3 endpoints" の AWS GovCloud (US-East) および AWS GovCloud (US-West) の行にリストされているエンドポイントを使用します。輸出規制対象のデータを処理している場合は、SSL/TLS エンドポイントのいずれかを使用します。FIPS 要件がある場合は、https://s3-fips.us-gov-west-1.amazonaws.comhttps://s3-fips.us-gov-east-1.amazonaws.com などの FIPS 140-2 エンドポイントを使用します。
  • AWS が課すその他の制限は、How Amazon Simple Storage Service Differs for AWS GovCloud (US) を参照してください。

5.7.1.2. Amazon Web Services の設定

OpenShift API for Data Protection (OADP) 用に Amazon Web Services (AWS) を設定します。

前提条件

  • AWS CLI がインストールされていること。

手順

  1. BUCKET 変数を設定します。

    $ BUCKET=<your_bucket>
    Copy to Clipboard Toggle word wrap
  2. REGION 変数を設定します。

    $ REGION=<your_region>
    Copy to Clipboard Toggle word wrap
  3. AWS S3 バケットを作成します。

    $ aws s3api create-bucket \
        --bucket $BUCKET \
        --region $REGION \
        --create-bucket-configuration LocationConstraint=$REGION 
    1
    Copy to Clipboard Toggle word wrap
    1
    us-east-1LocationConstraint をサポートしていません。お住まいの地域が us-east-1 の場合は、--create-bucket-configuration LocationConstraint=$REGION を省略してください。
  4. IAM ユーザーを作成します。

    $ aws iam create-user --user-name velero 
    1
    Copy to Clipboard Toggle word wrap
    1
    Velero を使用して複数の S3 バケットを持つ複数のクラスターをバックアップする場合は、クラスターごとに一意のユーザー名を作成します。
  5. velero-policy.json ファイルを作成します。

    $ cat > velero-policy.json <<EOF
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ec2:DescribeVolumes",
                    "ec2:DescribeSnapshots",
                    "ec2:CreateTags",
                    "ec2:CreateVolume",
                    "ec2:CreateSnapshot",
                    "ec2:DeleteSnapshot"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:DeleteObject",
                    "s3:PutObject",
                    "s3:AbortMultipartUpload",
                    "s3:ListMultipartUploadParts"
                ],
                "Resource": [
                    "arn:aws:s3:::${BUCKET}/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation",
                    "s3:ListBucketMultipartUploads"
                ],
                "Resource": [
                    "arn:aws:s3:::${BUCKET}"
                ]
            }
        ]
    }
    EOF
    Copy to Clipboard Toggle word wrap
  6. ポリシーを添付して、velero ユーザーに必要最小限の権限を付与します。

    $ aws iam put-user-policy \
      --user-name velero \
      --policy-name velero \
      --policy-document file://velero-policy.json
    Copy to Clipboard Toggle word wrap
  7. velero ユーザーのアクセスキーを作成します。

    $ aws iam create-access-key --user-name velero
    Copy to Clipboard Toggle word wrap

    出力例

    {
      "AccessKey": {
            "UserName": "velero",
            "Status": "Active",
            "CreateDate": "2017-07-31T22:24:41.576Z",
            "SecretAccessKey": <AWS_SECRET_ACCESS_KEY>,
            "AccessKeyId": <AWS_ACCESS_KEY_ID>
      }
    }
    Copy to Clipboard Toggle word wrap

  8. credentials-velero ファイルを作成します。

    $ cat << EOF > ./credentials-velero
    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    EOF
    Copy to Clipboard Toggle word wrap

    Data Protection Application をインストールする前に、credentials-velero ファイルを使用して AWS の Secret オブジェクトを作成します。

5.7.1.3. バックアップおよびスナップショットの場所、ならびにそのシークレットについて

DataProtectionApplication カスタムリソース (CR) で、バックアップおよびスナップショットの場所、ならびにそのシークレットを指定します。

5.7.1.3.1. バックアップの場所

バックアップの場所として、次のいずれかの AWS S3 互換オブジェクトストレージソリューションを指定できます。

  • Multicloud Object Gateway (MCG)
  • Red Hat Container Storage
  • Ceph RADOS Gateway (別称 Ceph Object Gateway)
  • Red Hat OpenShift Data Foundation
  • MinIO

Velero は、オブジェクトストレージのアーカイブファイルとして、OpenShift Container Platform リソース、Kubernetes オブジェクト、および内部イメージをバックアップします。

5.7.1.3.2. スナップショットの場所

クラウドプロバイダーのネイティブスナップショット API を使用して永続ボリュームをバックアップする場合、クラウドプロバイダーをスナップショットの場所として指定する必要があります。

Container Storage Interface (CSI) スナップショットを使用する場合、CSI ドライバーを登録するために VolumeSnapshotClass CR を作成するため、スナップショットの場所を指定する必要はありません。

File System Backup (FSB) を使用する場合、FSB がオブジェクトストレージ上にファイルシステムをバックアップするため、スナップショットの場所を指定する必要はありません。

5.7.1.3.3. シークレット

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、次の 2 つの secret オブジェクトを作成します。

  • DataProtectionApplication CR で指定する、バックアップの場所用のカスタム Secret
  • DataProtectionApplication CR で参照されない、スナップショットの場所用のデフォルト Secret
重要

Data Protection Application には、デフォルトの Secret が必要です。作成しないと、インストールは失敗します。

インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。

5.7.1.3.4. デフォルト Secret の作成

バックアップとスナップショットの場所が同じ認証情報を使用する場合、またはスナップショットの場所が必要ない場合は、デフォルトの Secret を作成します。

Secret のデフォルト名は cloud-credentials です。

注記

DataProtectionApplication カスタムリソース (CR) にはデフォルトの Secret が必要です。作成しないと、インストールは失敗します。バックアップの場所の Secret の名前が指定されていない場合は、デフォルトの名前が使用されます。

インストール時にバックアップ場所の認証情報を使用しない場合は、空の credentials-velero ファイルを使用して、デフォルト名の Secret を作成できます。

前提条件

  • オブジェクトストレージとクラウドストレージがある場合は、同じ認証情報を使用する必要があります。
  • Velero のオブジェクトストレージを設定する必要があります。

手順

  1. Backup Storage Location の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。

    以下の例を参照してください。

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard Toggle word wrap
  2. デフォルト名で Secret カスタムリソース (CR) を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap

Secret は、Data Protection Application をインストールするときに、DataProtectionApplication CR の spec.backupLocations.credential ブロックで参照されます。

5.7.1.3.5. 異なる認証情報のプロファイルの作成

バックアップとスナップショットの場所で異なる認証情報を使用する場合は、credentials-velero ファイルに個別のプロファイルを作成します。

次に、Secret オブジェクトを作成し、DataProtectionApplication カスタムリソース (CR) でプロファイルを指定します。

手順

  1. 次の例のように、バックアップとスナップショットの場所に別々のプロファイルを持つ credentials-velero ファイルを作成します。

    [backupStorage]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    
    [volumeSnapshot]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard Toggle word wrap
  2. credentials-velero ファイルを使用して Secret オブジェクトを作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero 
    1
    Copy to Clipboard Toggle word wrap
  3. 次の例のように、プロファイルを DataProtectionApplication CR に追加します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
            config:
              region: us-east-1
              profile: "backupStorage"
            credential:
              key: cloud
              name: cloud-credentials
      snapshotLocations:
        - velero:
            provider: aws
            config:
              region: us-west-2
              profile: "volumeSnapshot"
    Copy to Clipboard Toggle word wrap
5.7.1.3.6. AWS を使用した Backup Storage Location の設定

次の例の手順に示すように、AWS の Backup Storage Location (BSL) を設定できます。

前提条件

  • AWS を使用してオブジェクトストレージバケットを作成した。
  • OADP Operator がインストールされている。

手順

  • ユースケースに応じて、BSL カスタムリソース (CR) に適切な値を設定します。

    Backup Storage Location

    apiVersion: oadp.openshift.io/v1alpha1
    kind: BackupStorageLocation
    metadata:
      name: default
      namespace: openshift-adp
    spec:
      provider: aws 
    1
    
      objectStorage:
        bucket: <bucket_name> 
    2
    
        prefix: <bucket_prefix> 
    3
    
      credential: 
    4
    
        key: cloud 
    5
    
        name: cloud-credentials 
    6
    
      config:
        region: <bucket_region> 
    7
    
        s3ForcePathStyle: "true" 
    8
    
        s3Url: <s3_url> 
    9
    
        publicUrl: <public_s3_url> 
    10
    
        serverSideEncryption: AES256 
    11
    
        kmsKeyId: "50..c-4da1-419f-a16e-ei...49f" 
    12
    
        customerKeyEncryptionFile: "/credentials/customer-key" 
    13
    
        signatureVersion: "1" 
    14
    
        profile: "default" 
    15
    
        insecureSkipTLSVerify: "true" 
    16
    
        enableSharedConfig: "true" 
    17
    
        tagging: "" 
    18
    
        checksumAlgorithm: "CRC32" 
    19
    Copy to Clipboard Toggle word wrap

    1 1
    オブジェクトストアプラグインの名前。この例では、プラグインは aws です。このフィールドは必須です。
    2
    バックアップを保存するバケットの名前。このフィールドは必須です。
    3
    バックアップを保存するバケット内の接頭辞。このフィールドは任意です。
    4
    Backup Storage Location の認証情報。カスタムの認証情報を設定できます。カスタムの認証情報が設定されていない場合は、デフォルトの認証情報のシークレットが使用されます。
    5
    シークレットの認証情報データ内の key
    6
    認証情報を含むシークレットの名前。
    7
    バケットが配置されている AWS リージョン。s3ForcePathStyle が false の場合は任意です。
    8
    仮想ホスト形式のバケットアドレス指定の代わりにパス形式のアドレス指定を使用するかどうかを決定するブール値フラグ。MinIO や NooBaa などのストレージサービスを使用する場合は、true に設定します。これは任意のフィールドです。デフォルト値は false です。
    9
    ここで AWS S3 の URL を明示的に指定できます。このフィールドは主に、MinIO や NooBaa などのストレージサービス用です。これは任意のフィールドです。
    10
    このフィールドは主に、MinIO や NooBaa などのストレージサービスに使用されます。これは任意のフィールドです。
    11
    オブジェクトのアップロードに使用するサーバー側暗号化アルゴリズムの名前 (例: AES256)。これは任意のフィールドです。
    12
    AWS KMS のキー ID を指定します。例に示すように、alias/<KMS-key-alias-name> などのエイリアスまたは完全な ARN の形式で指定して、S3 に保存されているバックアップの暗号化を有効にできます。kmsKeyId は、customerKeyEncryptionFile と一緒に使用できないことに注意してください。これは任意のフィールドです。
    13
    SSE-C カスタマーキーを含むファイルを指定して、S3 に保存されているバックアップのカスタマーキー暗号化を有効にします。ファイルに 32 バイトの文字列が含まれている必要があります。customerKeyEncryptionFile フィールドは、velero コンテナー内にマウントされたシークレットを参照します。velero cloud-credentials シークレットに、キーと値のペア customer-key: <your_b64_encoded_32byte_string> を追加します。customerKeyEncryptionFile フィールドは kmsKeyId フィールドと一緒に使用できないことに注意してください。デフォルト値は空の文字列 ("") です。これは SSE-C が無効であることを意味します。これは任意のフィールドです。
    14
    署名付き URL を作成するために使用する署名アルゴリズムのバージョン。署名付き URL は、バックアップのダウンロードやログの取得に使用します。有効な値は 14 です。デフォルトのバージョンは 4 です。これは任意のフィールドです。
    15
    認証情報ファイル内の AWS プロファイルの名前。デフォルト値は default です。これは任意のフィールドです。
    16
    オブジェクトストアに接続するときに TLS 証明書を検証しない場合 (たとえば、MinIO を使用した自己署名証明書の場合)、insecureSkipTLSVerify フィールドを true に設定します。true に設定すると、中間者攻撃の影響を受けやすくなります。この設定は実稼働ワークロードには推奨されません。デフォルト値は false です。これは任意のフィールドです。
    17
    認証情報ファイルを共有設定ファイルとして読み込む場合は、enableSharedConfig フィールドを true に設定します。デフォルト値は false です。これは任意のフィールドです。
    18
    AWS S3 オブジェクトにアノテーションを付けるタグを指定します。キーと値のペアでタグを指定します。デフォルト値は空の文字列 ("") です。これは任意のフィールドです。
    19
    S3 にオブジェクトをアップロードするときに使用するチェックサムアルゴリズムを指定します。サポートされている値は、CRC32CRC32CSHA1、および SHA256 です。フィールドを空の文字列 ("") に設定すると、チェックサムチェックがスキップされます。デフォルト値は CRC32 です。これは任意のフィールドです。
5.7.1.3.7. データセキュリティーを強化するための OADP SSE-C 暗号鍵の作成

Amazon Web Services (AWS) S3 は、Amazon S3 内のすべてのバケットに対して、基本レベルの暗号化として、Amazon S3 マネージドキー (SSE-S3) によるサーバー側暗号化を適用します。

OpenShift API for Data Protection (OADP) は、クラスターからストレージにデータを転送するときに、SSL/TLS、HTTPS、および velero-repo-credentials シークレットを使用してデータを暗号化します。AWS 認証情報の紛失または盗難に備えてバックアップデータを保護するには、追加の暗号化レイヤーを適用してください。

velero-plugin-for-aws プラグインで、いくつかの追加の暗号化方法を使用できます。プラグインの設定オプションを確認し、追加の暗号化を実装することを検討してください。

お客様提供の鍵を使用したサーバー側暗号化 (SSE-C) を使用することで、独自の暗号鍵を保存できます。この機能は、AWS 認証情報が漏えいした場合に追加のセキュリティーを提供します。

警告

暗号鍵は必ずセキュアな方法で保管してください。暗号鍵がない場合、暗号化されたデータとバックアップを復元できません。

前提条件

  • OADP が /credentials の Velero Pod に SSE-C 鍵を含むシークレットをマウントできるように、AWS のデフォルトのシークレット名 cloud-credentials を使用し、次のラベルの少なくとも 1 つを空のままにします。

注記

次の手順には、認証情報を指定しない spec:backupLocations ブロックの例が含まれています。この例では、OADP シークレットのマウントがトリガーされます。

  • バックアップの場所に cloud-credentials とは異なる名前の認証情報が必要な場合は、次の例のように、認証情報名を含まないスナップショットの場所を追加する必要があります。この例には認証情報名が含まれていないため、スナップショットの場所では、スナップショットを作成するためのシークレットとして cloud-credentials が使用されています。

認証情報が指定されていない DPA 内のスナップショットの場所を示す例

 snapshotLocations:
  - velero:
      config:
        profile: default
        region: <region>
      provider: aws
# ...
Copy to Clipboard Toggle word wrap

手順

  1. SSE-C 暗号鍵を作成します。

    1. 次のコマンドを実行して乱数を生成し、sse.key という名前のファイルとして保存します。

      $ dd if=/dev/urandom bs=1 count=32 > sse.key
      Copy to Clipboard Toggle word wrap
  2. OpenShift Container Platform シークレットを作成します。

    • OADP を初めてインストールして設定する場合は、次のコマンドを実行して、AWS 認証情報と暗号鍵シークレットを同時に作成します。

      $ oc create secret generic cloud-credentials --namespace openshift-adp --from-file cloud=<path>/openshift_aws_credentials,customer-key=<path>/sse.key
      Copy to Clipboard Toggle word wrap
    • 既存のインストールを更新する場合は、次の例のように、DataProtectionApplication CR マニフェストの cloud-credential secret ブロックの値を編集します。

      apiVersion: v1
      data:
        cloud: W2Rfa2V5X2lkPSJBS0lBVkJRWUIyRkQ0TlFHRFFPQiIKYXdzX3NlY3JldF9hY2Nlc3Nfa2V5P<snip>rUE1mNWVSbTN5K2FpeWhUTUQyQk1WZHBOIgo=
        customer-key: v+<snip>TFIiq6aaXPbj8dhos=
      kind: Secret
      # ...
      Copy to Clipboard Toggle word wrap
  3. 次の例のように、DataProtectionApplication CR マニフェストの backupLocations ブロックにある customerKeyEncryptionFile 属性の値を編集します。

    spec:
      backupLocations:
        - velero:
            config:
              customerKeyEncryptionFile: /credentials/customer-key
              profile: default
    # ...
    Copy to Clipboard Toggle word wrap
    警告

    既存のインストール環境でシークレットの認証情報を適切に再マウントするには、Velero Pod を再起動する必要があります。

    インストールが完了すると、OpenShift Container Platform リソースをバックアップおよび復元できるようになります。AWS S3 ストレージに保存されるデータは、新しい鍵で暗号化されます。追加の暗号鍵がないと、AWS S3 コンソールまたは API からデータをダウンロードすることはできません。

検証

追加の鍵を含めずに暗号化したファイルをダウンロードできないことを確認するために、テストファイルを作成し、アップロードしてからダウンロードしてみます。

  1. 次のコマンドを実行してテストファイルを作成します。

    $ echo "encrypt me please" > test.txt
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行してテストファイルをアップロードします。

    $ aws s3api put-object \
      --bucket <bucket> \
      --key test.txt \
      --body test.txt \
      --sse-customer-key fileb://sse.key \
      --sse-customer-algorithm AES256
    Copy to Clipboard Toggle word wrap
  3. ファイルのダウンロードを試みます。Amazon Web コンソールまたはターミナルで、次のコマンドを実行します。

    $ s3cmd get s3://<bucket>/test.txt test.txt
    Copy to Clipboard Toggle word wrap

    ファイルが追加の鍵で暗号化されているため、ダウンロードは失敗します。

  4. 次のコマンドを実行して、追加の暗号鍵を含むファイルをダウンロードします。

    $ aws s3api get-object \
        --bucket <bucket> \
        --key test.txt \
        --sse-customer-key fileb://sse.key \
        --sse-customer-algorithm AES256 \
        downloaded.txt
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行してファイルの内容を読み取ります。

    $ cat downloaded.txt
    Copy to Clipboard Toggle word wrap

    出力例

    encrypt me please
    Copy to Clipboard Toggle word wrap

SSE-C 暗号鍵を検証するときに、Velero によってバックアップされたファイルの追加の暗号鍵を含むファイルをダウンロードすることもできます。

手順

  • 次のコマンドを実行して、Velero によってバックアップされたファイルの追加の暗号鍵を含むファイルをダウンロードします。

    $ aws s3api get-object \
      --bucket <bucket> \
      --key velero/backups/mysql-persistent-customerkeyencryptionfile4/mysql-persistent-customerkeyencryptionfile4.tar.gz \
      --sse-customer-key fileb://sse.key \
      --sse-customer-algorithm AES256 \
      --debug \
      velero_download.tar.gz
    Copy to Clipboard Toggle word wrap

5.7.1.4. Data Protection Application の設定

Velero リソースの割り当てを設定するか、自己署名 CA 証明書を有効にして、Data Protection Application を設定できます。

5.7.1.4.1. Velero の CPU とメモリーのリソース割り当てを設定

DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、Velero Pod の CPU およびメモリーリソースの割り当てを設定します。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • 次の例のように、DataProtectionApplication CR マニフェストの spec.configuration.velero.podConfig.ResourceAllocations ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec に提供されるノードセレクターを指定します。
    2
    リストされている resourceAllocations は、平均使用量です。
    注記

    Kopia は OADP 1.3 以降のリリースで選択できます。Kopia はファイルシステムのバックアップに使用できます。組み込みの Data Mover を使用する Data Mover の場合は、Kopia が唯一の選択肢になります。

    Kopia は Restic よりも多くのリソースを消費するため、それに応じて CPU とメモリーの要件を調整しなければならない場合があります。

nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される最も単純な形式のノード選択制約です。指定したラベルが、各ノードのラベルと一致する必要があります。

詳細は、ノードエージェントとノードラベルの設定 を参照してください。

5.7.1.4.2. 自己署名 CA 証明書の有効化

certificate signed by unknown authority エラーを防ぐために、DataProtectionApplication カスタムリソース (CR) マニフェストを編集して、オブジェクトストレージの自己署名 CA 証明書を有効にする必要があります。

前提条件

  • OpenShift API for Data Protection (OADP) Operator がインストールされている必要があります。

手順

  • DataProtectionApplication CR マニフェストの spec.backupLocations.velero.objectStorage.caCert パラメーターと spec.backupLocations.velero.config パラメーターを編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    # ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 
    1
    
            config:
              insecureSkipTLSVerify: "false" 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    Base64 でエンコードされた CA 証明書文字列を指定します。
    2
    insecureSkipTLSVerify 設定は、"true" または "false" のいずれかに設定できます。"true" に設定すると、SSL/TLS セキュリティーが無効になります。"false" に設定すると、SSL/TLS セキュリティーが有効になります。
5.7.1.4.2.1. Velero デプロイメント用のエイリアス化した velero コマンドで CA 証明書を使用する

Velero CLI のエイリアスを作成することで、システムにローカルにインストールせずに Velero CLI を使用できます。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. エイリアス化した Velero コマンドを使用するには、次のコマンドを実行します。

    $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、エイリアスが機能していることを確認します。

    $ velero version
    Client:
    	Version: v1.12.1-OADP
    	Git commit: -
    Server:
    	Version: v1.12.1-OADP
    Copy to Clipboard Toggle word wrap

  3. このコマンドで CA 証明書を使用するには、次のコマンドを実行して証明書を Velero デプロイメントに追加できます。

    $ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}')
    
    $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
    Copy to Clipboard Toggle word wrap
    $ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
    Copy to Clipboard Toggle word wrap
  4. バックアップログを取得するために、次のコマンドを実行します。

    $ velero backup logs  <backup_name>  --cacert /tmp/<your_cacert.txt>
    Copy to Clipboard Toggle word wrap

    このログを使用して、バックアップできないリソースの障害と警告を表示できます。

  5. Velero Pod が再起動すると、/tmp/your-cacert.txt ファイルが消去されます。そのため、前の手順のコマンドを再実行して /tmp/your-cacert.txt ファイルを再作成する必要があります。
  6. 次のコマンドを実行すると、/tmp/your-cacert.txt ファイルを保存した場所にファイルがまだ存在するかどうかを確認できます。

    $ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
    /tmp/your-cacert.txt
    Copy to Clipboard Toggle word wrap

OpenShift API for Data Protection (OADP) の今後のリリースでは、この手順が不要になるように証明書を Velero Pod にマウントする予定です。

5.7.1.5. Data Protection Application のインストール

DataProtectionApplication API のインスタンスを作成して、Data Protection Application (DPA) をインストールします。

前提条件

  • OADP Operator をインストールする。
  • オブジェクトストレージをバックアップロケーションとして設定する必要がある。
  • スナップショットを使用して PV をバックアップする場合、クラウドプロバイダーはネイティブスナップショット API または Container Storage Interface (CSI) スナップショットのいずれかをサポートする必要がある。
  • バックアップとスナップショットの場所で同じ認証情報を使用する場合は、デフォルトの名前である cloud-credentials を使用して Secret を作成する必要がある。
  • バックアップとスナップショットの場所で異なる認証情報を使用する場合は、デフォルト名である cloud-credentials を使用して Secret を作成する必要があります。これには、バックアップとスナップショットの場所の認証情報用の個別のプロファイルが含まれます。

    注記

    インストール中にバックアップまたはスナップショットの場所を指定したくない場合は、空の credentials-velero ファイルを使用してデフォルトの Secret を作成できます。デフォルトの Secret がない場合、インストールは失敗します。

手順

  1. Ecosystem Installed Operators をクリックし、OADP Operator を選択します。
  2. Provided APIs で、DataProtectionApplication ボックスの Create instance をクリックします。
  3. YAML View をクリックして、DataProtectionApplication マニフェストのパラメーターを更新します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp 
    1
    
    spec:
      configuration:
        velero:
          defaultPlugins:
            - openshift 
    2
    
            - aws
          resourceTimeout: 10m 
    3
    
        nodeAgent: 
    4
    
          enable: true 
    5
    
          uploaderType: kopia 
    6
    
          podConfig:
            nodeSelector: <node_selector> 
    7
    
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name> 
    8
    
              prefix: <prefix> 
    9
    
            config:
              region: <region>
              profile: "default"
              s3ForcePathStyle: "true" 
    10
    
              s3Url: <s3_url> 
    11
    
            credential:
              key: cloud
              name: cloud-credentials 
    12
    
      snapshotLocations: 
    13
    
        - name: default
          velero:
            provider: aws
            config:
              region: <region> 
    14
    
              profile: "default"
            credential:
              key: cloud
              name: cloud-credentials 
    15
    Copy to Clipboard Toggle word wrap
    1
    OADP のデフォルトの namespace は openshift-adp です。namespace は変数であり、設定可能です。
    2
    openshift プラグインは必須です。
    3
    Velero CRD の可用性、volumeSnapshot の削除、バックアップリポジトリーの可用性など、タイムアウトが発生するまでに複数の Velero リソースを待機する時間を分単位で指定します。デフォルトは 10m です。
    4
    管理要求をサーバーにルーティングする管理エージェント。
    5
    nodeAgent を有効にして File System Backup を実行する場合は、この値を true に設定します。
    6
    アップローダーとして kopia または restic と入力します。インストール後に選択を変更することはできません。組み込み DataMover の場合は、Kopia を使用する必要があります。nodeAgent はデーモンセットをデプロイします。これは、nodeAgent Pod が各ワーキングノード上で実行されることを意味します。File System Backup を設定するには、spec.defaultVolumesToFsBackup: trueBackup CR に追加します。
    7
    Kopia または Restic が使用可能なノードを指定します。デフォルトでは、Kopia または Restic はすべてのノードで実行されます。
    8
    Backup Storage Location としてバケットを指定します。バケットが Velero バックアップ専用のバケットでない場合は、接頭辞を指定する必要があります。
    9
    バケットが複数の目的で使用される場合は、Velero バックアップの接頭辞を指定します (例: velero)。
    10
    S3 オブジェクトにパススタイルの URL を強制するかどうかを指定します (ブール値)。AWS S3 では必要ありません。S3 互換ストレージにのみ必要です。
    11
    バックアップを保存するために使用しているオブジェクトストアの URL を指定します。AWS S3 では必要ありません。S3 互換ストレージにのみ必要です。
    12
    作成した Secret オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名の cloud-credentials が使用されます。カスタム名を指定すると、バックアップの場所にカスタム名が使用されます。
    13
    CSI スナップショットまたは File System Backup (FSB) を使用して PV をバックアップする場合を除き、スナップショットの場所を指定します。
    14
    スナップショットの場所は、PV と同じリージョンにある必要があります。
    15
    作成した Secret オブジェクトの名前を指定します。この値を指定しない場合は、デフォルト名の cloud-credentials が使用されます。カスタム名を指定すると、スナップショットの場所にカスタム名が使用されます。バックアップとスナップショットの場所で異なる認証情報を使用する場合は、credentials-velero ファイルに個別のプロファイルを作成します。
  4. Create をクリックします。

検証

  1. 次のコマンドを実行して OpenShift API for Data Protection (OADP) リソースを表示し、インストールを検証します。

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、DataProtectionApplication (DPA) が調整されていることを確認します。

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    出力例

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. typeReconciled に設定されていることを確認します。
  4. 次のコマンドを実行して、Backup Storage Location を確認し、PHASEAvailable であることを確認します。

    $ oc get backupstoragelocations.velero.io -n openshift-adp
    Copy to Clipboard Toggle word wrap

    出力例

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

5.7.1.5.1. ノードエージェントとノードラベルの設定

Data Protection Application (DPA) は、nodeSelector フィールドを使用して、ノードエージェントを実行できるノードを選択します。nodeSelector フィールドは、推奨される形式のノード選択制約です。

手順

  1. カスタムラベルを追加して、選択した任意のノードでノードエージェントを実行します。

    $ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
    Copy to Clipboard Toggle word wrap
    注記

    指定したラベルが、各ノードのラベルと一致する必要があります。

  2. ノードのラベル付けに使用したのと同じカスタムラベルを DPA.spec.configuration.nodeAgent.podConfig.nodeSelector フィールドで使用します。

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/nodeAgent: ""
    Copy to Clipboard Toggle word wrap

    次の例は nodeSelector のアンチパターンです。この例は、node-role.kubernetes.io/infra: ""node-role.kubernetes.io/worker: "" の両方のラベルがノードに存在しない限り機能しません。

        configuration:
          nodeAgent:
            enable: true
            podConfig:
              nodeSelector:
                node-role.kubernetes.io/infra: ""
                node-role.kubernetes.io/worker: ""
    Copy to Clipboard Toggle word wrap

5.7.1.6. MD5 チェックサムアルゴリズムを使用して Backup Storage Location を設定する

Data Protection Application (DPA) の Backup Storage Location (BSL) を設定して、Amazon Simple Storage Service (Amazon S3) と S3 互換ストレージプロバイダーの両方で MD5 チェックサムアルゴリズムを使用できます。チェックサムアルゴリズムは、Amazon S3 へのオブジェクトのアップロードとダウンロードのチェックサムを計算します。DPA の spec.backupLocations.velero.config.checksumAlgorithm セクションの checksumAlgorithm フィールドを設定する際に、次のいずれかのオプションを使用できます。

  • CRC32
  • CRC32C
  • SHA1
  • SHA256
注記

checksumAlgorithm フィールドを空の値に設定して、MD5 チェックサム確認をスキップすることもできます。

checksumAlgorithm フィールドに値を設定しなかった場合、デフォルト値として CRC32 が設定されます。

前提条件

  • OADP Operator がインストールされている。
  • バックアップの場所として Amazon S3 または S3 互換のオブジェクトストレージが設定されている。

手順

  • 次の例に示すように、DPA で BSL を設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
      - name: default
        velero:
          config:
            checksumAlgorithm: "" 
    1
    
            insecureSkipTLSVerify: "true"
            profile: "default"
            region: <bucket_region>
            s3ForcePathStyle: "true"
            s3Url: <bucket_url>
          credential:
            key: cloud
            name: cloud-credentials
          default: true
          objectStorage:
            bucket: <bucket_name>
            prefix: velero
          provider: aws
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - aws
          - csi
    Copy to Clipboard Toggle word wrap

    1
    checksumAlgorithm を指定します。この例では、checksumAlgorithm フィールドは空の値に設定されています。CRC32CRC32CSHA1SHA256 から選択できます。
重要

Noobaa をオブジェクトストレージプロバイダーとして使用しており、DPA で spec.backupLocations.velero.config.checksumAlgorithm フィールドを設定していない場合、checksumAlgorithm の空の値が BSL 設定に追加されます。

空の値は、DPA を使用して作成された BSL に対してのみ追加されます。他の方法で BSL を作成した場合、この値は追加されません。

5.7.1.7. クライアントバースト設定と QPS 設定を使用した DPA の設定

バースト設定は、制限が適用されるまで velero サーバーに送信できる要求の数を決定するものです。バースト制限に達した後は、1 秒あたりのクエリー数 (QPS) 設定によって、1 秒あたりに送信できる追加の要求の数が決定されます。

バースト値と QPS 値を使用して Data Protection Application (DPA) を設定することにより、velero サーバーのバースト値と QPS 値を設定できます。バースト値と QPS 値は、DPA の dpa.configuration.velero.client-burst フィールドと dpa.configuration.velero.client-qps フィールドを使用して設定できます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 次の例に示すように、DPA の client-burst フィールドと client-qps フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 値を指定します。この例では、client-burst フィールドは 500 に設定されています。
    2
    client-qps 値を指定します。この例では、client-qps フィールドは 300 に設定されています。

5.7.1.8. ノードエージェントのロードアフィニティーの設定

DataProtectionApplication (DPA) カスタムリソース (CR) の spec.podConfig.nodeSelector オブジェクトを使用して、特定のノードにノードエージェント Pod をスケジュールできます。

次の例を参照してください。この例を使用すると、ラベル label.io/role: cpu-1 および other-label.io/other-role: cpu-2 を持つノードにノードエージェント Pod をスケジュールできます。

...
spec:
  configuration:
    nodeAgent:
      enable: true
      uploaderType: kopia
      podConfig:
        nodeSelector:
          label.io/role: cpu-1
          other-label.io/other-role: cpu-2
        ...
Copy to Clipboard Toggle word wrap

DPA 仕様の nodeagent.loadAffinity オブジェクトを使用して、ノードエージェント Pod のスケジューリングにさらに制限を追加できます。

前提条件

  • cluster-admin 権限を持つユーザーとしてログインしている。
  • OADP Operator がインストールされている。
  • DPA CR が設定されている。

手順

  • 次の例に示すように、DPA 仕様の nodegent.loadAffinity オブジェクトを設定します。

    この例では、ラベル label.io/role: cpu-1 とラベル label.io/hostnamenode1 または node2 のいずれかに一致するノードにのみ、ノードエージェント Pod がスケジュールされるようにします。

    ...
    spec:
      configuration:
        nodeAgent:
          enable: true
          loadAffinity: 
    1
    
            - nodeSelector:
                matchLabels:
                  label.io/role: cpu-1
                matchExpressions: 
    2
    
                  - key: label.io/hostname
                    operator: In
                    values:
                      - node1
                      - node2
                      ...
    Copy to Clipboard Toggle word wrap
    1
    matchLabels および matchExpressions オブジェクトを追加して、loadAffinity オブジェクトを設定します。
    2
    ノードエージェント Pod のスケジューリングに制限を追加するには、matchExpressions オブジェクトを設定します。

5.7.1.9. ノードエージェントのロードアフィニティーのガイドライン

DataProtectionApplication (DPA) カスタムリソース (CR) でノードエージェント loadAffinity オブジェクトを設定するには、次のガイドラインを使用してください。

  • 単純なノードマッチングの場合は、spec.nodeagent.podConfig.nodeSelector オブジェクトを使用します。
  • より複雑な状況の場合は、podConfig.nodeSelector オブジェクトを使用せずに loadAffinity.nodeSelector オブジェクトを使用します。
  • podConfig.nodeSelector オブジェクトと loadAffinity.nodeSelector オブジェクトの両方を使用できます。ただし、loadAffinity オブジェクトには podConfig オブジェクトと同等かそれ以上の制限が必要です。この場合、podConfig.nodeSelector のラベルは、loadAffinity.nodeSelector オブジェクトで使用されるラベルのサブセットである必要があります。
  • DPA で podConfig.nodeSelector オブジェクトと loadAffinity.nodeSelector オブジェクトの両方を設定した場合、matchExpressions フィールドと matchLabels フィールドは使用できません。
  • DPA で podConfig.nodeSelector オブジェクトと loadAffinity.nodeSelector オブジェクトの両方を設定するには、次の例を参照してください。

    ...
    spec:
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
          loadAffinity:
            - nodeSelector:
                matchLabels:
                  label.io/location: 'US'
                  label.io/gpu: 'no'
          podConfig:
            nodeSelector:
              label.io/gpu: 'no'
    Copy to Clipboard Toggle word wrap

5.7.1.10. ノードエージェントの同時実行の設定

クラスター内の各ノードで同時に実行できるノードエージェント操作の最大数を制御できます。

Data Protection Application (DPA) の次のフィールドのいずれかを使用して設定できます。

  • globalConfig: すべてのノードにおけるノードエージェントのデフォルトの同時実行制限を定義します。
  • perNodeConfig: nodeSelector ラベルに基づいて、特定のノードに対して異なる同時実行制限を指定します。これにより、特定のノードが異なるリソース容量やロールを持つ柔軟な環境が実現されます。

前提条件

  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. 特定のノードに対して同時実行を使用する場合は、それらのノードにラベルを追加します。

    $ oc label node/<node_name> label.io/instance-type='large'
    Copy to Clipboard Toggle word wrap
  2. DPA インスタンスの同時実行フィールドを設定します。

      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
          loadConcurrency:
            globalConfig: 1 
    1
    
            perNodeConfig:
            - nodeSelector:
                  matchLabels:
                     label.io/instance-type: large 
    2
    
              number: 3 
    3
    Copy to Clipboard Toggle word wrap
    1
    グローバル同時実行数。デフォルト値は 1 です。これは同時実行がなく、1 つの負荷のみが許可されることを意味します。globalConfig 値に制限はありません。
    2
    ノードごとの同時実行性のラベル。
    3
    ノードごとの同時実行数。たとえば、インスタンスのタイプとサイズに基づき、ノードごとに多数の同時実行数を指定できます。ノードごとの同時実行数の範囲は、グローバル同時実行数と同じです。設定ファイルにノードごとの同時実行数とグローバル同時実行数が含まれている場合、ノードごとの同時実行数が優先されます。

5.7.1.11. ノードエージェントを非 root および非特権ユーザーとして設定する

ノードエージェントのセキュリティーを強化するには、DataProtectionApplication (DPA) カスタムリソース (CR) の spec.configuration.velero.disableFsBackup 設定を使用して、OADP Operator ノードエージェントデーモンセットを非 root および非特権ユーザーとして実行するように設定できます。

spec.configuration.velero.disableFsBackup 設定を true に設定すると、ノードエージェントのセキュリティーコンテキストによってルートファイルシステムが読み取り専用に設定され、privileged フラグが false に設定されます。

注記

spec.configuration.velero.disableFsBackuptrue に設定すると、特権コンテナーの必要性がなくなり、読み取り専用のルートファイルシステムが適用されるため、ノードエージェントのセキュリティーが強化されます。

ただし、Kopia によるファイルシステムバックアップ (FSB) も無効になります。ワークロードがネイティブスナップショットをサポートしていないボリュームのバックアップに FSB に依存している場合は、disableFsBackup 設定がユースケースに適合するかどうかを評価する必要があります。

前提条件

  • OADP Operator がインストールされている。

手順

  • 次の例に示すように、DPA の disableFsBackup フィールドを設定します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: ts-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
      - velero:
          credential:
            key: cloud
            name: cloud-credentials
          default: true
          objectStorage:
            bucket: <bucket_name>
            prefix: velero
          provider: gcp
      configuration:
        nodeAgent: 
    1
    
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
          - csi
          - gcp
          - openshift
          disableFsBackup: true 
    2
    Copy to Clipboard Toggle word wrap
    1
    DPA でノードエージェントを有効にします。
    2
    disableFsBackup フィールドを true に設定します。

検証

  1. 次のコマンドを実行して、ノードエージェントのセキュリティーコンテキストが非 root として実行するように設定され、root ファイルシステムが readOnly あることを確認します。

    $ oc get daemonset node-agent -o yaml
    Copy to Clipboard Toggle word wrap

    出力例は次のとおりです。

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      ...
      name: node-agent
      namespace: openshift-adp
      ...
    spec:
      ...
      template:
        metadata:
          ...
        spec:
          containers:
          ...
            securityContext:
              allowPrivilegeEscalation: false 
    1
    
              capabilities:
                drop:
                - ALL
              privileged: false 
    2
    
              readOnlyRootFilesystem: true 
    3
    
            ...
          nodeSelector:
            kubernetes.io/os: linux
          os:
            name: linux
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext:
            runAsNonRoot: true 
    4
    
            seccompProfile:
              type: RuntimeDefault
          serviceAccount: velero
          serviceAccountName: velero
          ....
    Copy to Clipboard Toggle word wrap
    1
    allowPrivilegeEscalation フィールドは false です。
    2
    privileged フィールドは false です。
    3
    root ファイルシステムは読み取り専用です。
    4
    ノードエージェントは root 以外のユーザーとして実行されます。

5.7.1.12. リポジトリーメンテナンスの設定

OADP リポジトリーのメンテナンスはバックグラウンドジョブであり、ノードエージェント Pod とは別に設定できます。そのため、ノードエージェントが実行されているノードでも実行されていないノードでも、リポジトリーメンテナンス Pod をスケジュールできます。

DataProtectionApplication (DPA) カスタムリソース (CR) 内のリポジトリーメンテナンスジョブのアフィニティー設定を使用できるのは、バックアップリポジトリーとして Kopia を使用する場合だけです。

すべてのリポジトリーに影響するグローバルレベルでロードアフィニティーを設定できます。または、リポジトリーごとにロードアフィニティーを設定することもできます。グローバル設定とリポジトリーごとの設定を組み合わせて使用することもできます。

前提条件

  • cluster-admin 権限を持つユーザーとしてログインしている。
  • OADP Operator がインストールされている。
  • DPA CR が設定されている。

手順

  • 次の一方または両方の方法を使用して、DPA 仕様の loadAffinity オブジェクトを設定します。

    • グローバル設定: 次の例に示すように、すべてのリポジトリーのロードアフィニティーを設定します。

      ...
      spec:
        configuration:
          repositoryMaintenance: 
      1
      
            global: 
      2
      
              podResources:
                cpuRequest: "100m"
                cpuLimit: "200m"
                memoryRequest: "100Mi"
                memoryLimit: "200Mi"
              loadAffinity:
                - nodeSelector:
                    matchLabels:
                      label.io/gpu: 'no'
                    matchExpressions:
                      - key: label.io/location
                        operator: In
                        values:
                          - US
                          - EU
      Copy to Clipboard Toggle word wrap
      1
      例に示すように、repositoryMaintenance オブジェクトを設定します。
      2
      global オブジェクトを使用して、すべてのリポジトリーのロードアフィニティーを設定します。
    • リポジトリーごとの設定: 次の例に示すように、リポジトリーごとにロードアフィニティーを設定します。

      ...
      spec:
        configuration:
          repositoryMaintenance:
            myrepositoryname: 
      1
      
              loadAffinity:
                - nodeSelector:
                    matchLabels:
                      label.io/cpu: 'yes'
      Copy to Clipboard Toggle word wrap
      1
      各リポジトリーの repositoryMaintenance オブジェクトを設定します。

5.7.1.13. Velero ロードアフィニティーの設定

OADP をデプロイするごとに、1 つの Velero Pod が作成されます。その主な目的は、Velero のワークロードをスケジュールすることです。Velero Pod をスケジュールするには、DataProtectionApplication (DPA) カスタムリソース (CR) 仕様の velero.podConfig.nodeSelector および velero.loadAffinity オブジェクトを使用できます。

Velero Pod を特定のノードに割り当てるには、podConfig.nodeSelector オブジェクトを使用します。velero.loadAffinity オブジェクトを設定して、Pod レベルのアフィニティーとアンチアフィニティーを指定することもできます。

OpenShift のスケジューラーがルールを適用し、Velero Pod のデプロイメントのスケジューリングを実行します。

前提条件

  • cluster-admin 権限を持つユーザーとしてログインしている。
  • OADP Operator がインストールされている。
  • DPA CR が設定されている。

手順

  • 次の例に示すように、DPA 仕様で velero.podConfig.nodeSelector および velero.loadAffinity オブジェクトを設定します。

    • velero.podConfig.nodeSelector オブジェクトの設定:

      ...
      spec:
        configuration:
          velero:
            podConfig:
              nodeSelector:
                some-label.io/custom-node-role: backup-core
      Copy to Clipboard Toggle word wrap
    • velero.loadAffinity オブジェクトの設定:

      ...
      spec:
        configuration:
          velero:
            loadAffinity:
              - nodeSelector:
                  matchLabels:
                    label.io/gpu: 'no'
                  matchExpressions:
                    - key: label.io/location
                      operator: In
                      values:
                        - US
                        - EU
      Copy to Clipboard Toggle word wrap

5.7.1.14. DPA の imagePullPolicy 設定のオーバーライド

OADP 1.4.0 以前では、Operator はすべてのイメージで Velero およびノードエージェント Pod の imagePullPolicy フィールドを Always に設定します。

OADP 1.4.1 以降では、Operator はまず、各イメージに sha256 または sha512 ダイジェストがあるかを確認し、それに応じて imagePullPolicy フィールドを設定します。

  • イメージにダイジェストがある場合、Operator は imagePullPolicyIfNotPresent に設定します。
  • イメージにダイジェストがない場合、Operator は imagePullPolicyAlways に設定します。

Data Protection Application (DPA) の spec.imagePullPolicy フィールドを使用して、imagePullPolicy フィールドをオーバーライドすることもできます。

前提条件

  • OADP Operator がインストールされている。

手順

  • 以下の例のように、DPA の spec.imagePullPolicy フィールドを設定します。

    Data Protection Application の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: kopia
        velero:
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
            - csi
      imagePullPolicy: Never 
    1
    Copy to Clipboard Toggle word wrap

    1
    imagePullPolicy の値を指定します。この例では、imagePullPolicy フィールドが Never に設定されています。

5.7.1.15. 複数の BSL を使用した DPA の設定

複数の BackupStorageLocation (BSL) CR を使用して DataProtectionApplication (DPA) カスタムリソース (CR) を設定し、クラウドプロバイダーによって提供される認証情報を指定できます。

たとえば、次の 2 つの BSL を設定したとします。

  • DPA に 1 つの BSL を設定し、それをデフォルトの BSL として設定した。
  • BackupStorageLocation CR を使用して、別の BSL を別途作成した。

DPA を通じて作成された BSL をすでにデフォルトとして設定しているため、別途作成した BSL を再度デフォルトとして設定することはできません。つまり、任意の時点において、デフォルトの BSL として設定できる BSL は 1 つだけです。

前提条件

  • OADP Operator をインストールする。
  • クラウドプロバイダーによって提供される認証情報を使用してシークレットを作成する。

手順

  1. 複数の BackupStorageLocation CR を使用して DataProtectionApplication CR を設定します。以下の例を参照してください。

    DPA の例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    #...
    backupLocations:
      - name: aws 
    1
    
        velero:
          provider: aws
          default: true 
    2
    
          objectStorage:
            bucket: <bucket_name> 
    3
    
            prefix: <prefix> 
    4
    
          config:
            region: <region_name> 
    5
    
            profile: "default"
          credential:
            key: cloud
            name: cloud-credentials 
    6
    
      - name: odf 
    7
    
        velero:
          provider: aws
          default: false
          objectStorage:
            bucket: <bucket_name>
            prefix: <prefix>
          config:
            profile: "default"
            region: <region_name>
            s3Url: <url> 
    8
    
            insecureSkipTLSVerify: "true"
            s3ForcePathStyle: "true"
          credential:
            key: cloud
            name: <custom_secret_name_odf> 
    9
    
    #...
    Copy to Clipboard Toggle word wrap

    1
    最初の BSL の名前を指定します。
    2
    このパラメーターは、この BSL がデフォルトの BSL であることを示します。Backup CR に BSL が設定されていない場合は、デフォルトの BSL が使用されます。デフォルトとして設定できる BSL は 1 つだけです。
    3
    バケット名を指定します。
    4
    Velero バックアップの接頭辞を指定します (例: velero)。
    5
    バケットの AWS リージョンを指定します。
    6
    作成したデフォルトの Secret オブジェクトの名前を指定します。
    7
    2 番目の BSL の名前を指定します。
    8
    S3 エンドポイントの URL を指定します。
    9
    Secret の正しい名前を指定します。たとえば、custom_secret_name_odf です。Secret 名を指定しない場合は、デフォルトの名前が使用されます。
  2. バックアップ CR で使用する BSL を指定します。以下の例を参照してください。

    バックアップ CR の例

    apiVersion: velero.io/v1
    kind: Backup
    # ...
    spec:
      includedNamespaces:
      - <namespace> 
    1
    
      storageLocation: <backup_storage_location> 
    2
    
      defaultVolumesToFsBackup: true
    Copy to Clipboard Toggle word wrap

    1
    バックアップする namespace を指定します。
    2
    保存場所を指定します。
5.7.1.15.1. DataProtectionApplication CR で CSI を有効にする

CSI スナップショットを使用して永続ボリュームをバックアップするには、DataProtectionApplication カスタムリソース (CR) で Container Storage Interface (CSI) を有効にします。

前提条件

  • クラウドプロバイダーは、CSI スナップショットをサポートする必要があります。

手順

  • 次の例のように、DataProtectionApplication CR を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 
    1
    Copy to Clipboard Toggle word wrap
    1
    csi デフォルトプラグインを追加します。
5.7.1.15.2. DataProtectionApplication でノードエージェントを無効にする

バックアップに ResticKopia、または DataMover を使用していない場合は、DataProtectionApplication カスタムリソース (CR) の nodeAgent フィールドを無効にすることができます。nodeAgent を無効にする前に、OADP Operator がアイドル状態であり、バックアップを実行していないことを確認してください。

手順

  1. nodeAgent を無効にするには、enable フラグを false に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを無効にします。
  2. nodeAgent を有効にするには、enable フラグを true に設定します。以下の例を参照してください。

    DataProtectionApplication CR の例

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ノードエージェントを有効にします。

ジョブをセットアップして、DataProtectionApplication CR の nodeAgent フィールドを有効または無効にすることができます。詳細は、「ジョブの使用による Pod でのタスクの実行」を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat