5.8. IBM Cloud を使用した OADP の設定


5.8.1. IBM Cloud を使用した OpenShift API for Data Protection の設定

クラスター上のアプリケーションをバックアップおよび復元するには、IBM Cloud クラスターに OpenShift API for Data Protection (OADP) Operator をインストールします。バックアップを保存するには、IBM Cloud Object Storage (COS) を設定します。

5.8.1.1. COS インスタンスの設定

OADP バックアップデータを保存するために、IBM Cloud Object Storage (COS) インスタンスを作成します。COS インスタンスを作成したら、HMAC サービス認証情報を設定します。

前提条件

  • IBM Cloud Platform アカウントをもっている。
  • IBM Cloud CLI をインストールしている。
  • IBM Cloud にログインしている。

手順

  1. 次のコマンドを実行して、IBM Cloud Object Storage (COS) プラグインをインストールします。

    $ ibmcloud plugin install cos -f
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行してバケット名を設定します。

    $ BUCKET=<bucket_name>
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行してバケットリージョンを設定します。

    $ REGION=<bucket_region> 
    1
    Copy to Clipboard Toggle word wrap
    1
    バケットのリージョンを指定します (例: eu-gb)。
  4. 次のコマンドを実行してリソースグループを作成します。

    $ ibmcloud resource group-create <resource_group_name>
    Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、ターゲットリソースグループを設定します。

    $ ibmcloud target -g <resource_group_name>
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、ターゲットリソースグループが正しく設定されていることを確認します。

    $ ibmcloud target
    Copy to Clipboard Toggle word wrap

    出力例

    API endpoint:     https://cloud.ibm.com
    Region:
    User:             test-user
    Account:          Test Account (fb6......e95) <-> 2...122
    Resource group:   Default
    Copy to Clipboard Toggle word wrap

    出力例では、リソースグループは Default に設定されています。

  7. 次のコマンドを実行してリソースグループ名を設定します。

    $ RESOURCE_GROUP=<resource_group> 
    1
    Copy to Clipboard Toggle word wrap
    1
    リソースグループ名を指定します (例: "default")。
  8. 次のコマンドを実行して、IBM Cloud service-instance リソースを作成します。

    $ ibmcloud resource service-instance-create \
    <service_instance_name> \
    1
    
    <service_name> \
    2
    
    <service_plan> \
    3
    
    <region_name> 
    4
    Copy to Clipboard Toggle word wrap
    1
    service-instance リソースの名前を指定します。
    2
    サービス名を指定します。または、サービス ID を指定することもできます。
    3
    IBM Cloud アカウントのサービスプランを指定します。
    4
    リージョン名を指定します。

    コマンドの例

    $ ibmcloud resource service-instance-create test-service-instance cloud-object-storage \ 
    1
    
    standard \
    global \
    -d premium-global-deployment 
    2
    Copy to Clipboard Toggle word wrap

    1
    サービス名は cloud-object-storage です。
    2
    -d フラグはデプロイメント名を指定します。
  9. 次のコマンドを実行して、サービスインスタンス ID を抽出します。

    $ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
    Copy to Clipboard Toggle word wrap
  10. 次のコマンドを実行して COS バケットを作成します。

    $ ibmcloud cos bucket-create \//
    --bucket $BUCKET \//
    --ibm-service-instance-id $SERVICE_INSTANCE_ID \//
    --region $REGION
    Copy to Clipboard Toggle word wrap

    $BUCKET$SERVICE_INSTANCE_ID$REGION などの変数は、以前に設定した値に置き換えられます。

  11. 次のコマンドを実行して HMAC 認証情報を作成します。

    $ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}
    Copy to Clipboard Toggle word wrap
  12. HMAC 認証情報からアクセスキー ID とシークレットアクセスキーを抽出し、credentials-velero ファイルに保存します。credentials-velero ファイルを使用して、Backup Storage Location の secret を作成できます。以下のコマンドを実行します。

    $ cat > credentials-velero << __EOF__
    [default]
    aws_access_key_id=$(ibmcloud resource service-key test-key -o json  | jq -r '.[0].credentials.cos_hmac_keys.access_key_id')
    aws_secret_access_key=$(ibmcloud resource service-key test-key -o json  | jq -r '.[0].credentials.cos_hmac_keys.secret_access_key')
    __EOF__
    Copy to Clipboard Toggle word wrap

5.8.1.2. デフォルト Secret の作成

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

注記

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

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

前提条件

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

手順

  1. Backup Storage Location の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。
  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.8.1.3. 異なる認証情報のシークレットの作成

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

  • カスタム名を持つバックアップロケーションの Secret。カスタム名は、DataProtectionApplication カスタムリソース (CR) の spec.backupLocations ブロックで指定されます。
  • スナップショットの場所 Secret (デフォルト名は cloud-credentials)。この Secret は、DataProtectionApplication で指定されていません。

手順

  1. スナップショットの場所の credentials-velero ファイルをクラウドプロバイダーに適した形式で作成します。
  2. デフォルト名でスナップショットの場所の Secret を作成します。

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  3. オブジェクトストレージに適した形式で、バックアップロケーションの credentials-velero ファイルを作成します。
  4. カスタム名を使用してバックアップロケーションの Secret を作成します。

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  5. 次の例のように、カスタム名の SecretDataProtectionApplication に追加します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            provider: <provider>
            default: true
            credential:
              key: cloud
              name: <custom_secret> 
    1
    
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
    Copy to Clipboard Toggle word wrap
    1
    カスタム名を持つバックアップロケーションの Secret

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

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

前提条件

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

    注記

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

手順

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

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      namespace: openshift-adp
      name: <dpa_name>
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - aws
          - csi
      backupLocations:
        - velero:
            provider: aws 
    1
    
            default: true
            objectStorage:
              bucket: <bucket_name> 
    2
    
              prefix: velero
            config:
              insecureSkipTLSVerify: 'true'
              profile: default
              region: <region_name> 
    3
    
              s3ForcePathStyle: 'true'
              s3Url: <s3_url> 
    4
    
            credential:
              key: cloud
              name: cloud-credentials 
    5
    Copy to Clipboard Toggle word wrap
    1
    Backup Storage Location として IBM Cloud を使用する場合、プロバイダーは aws になります。
    2
    IBM Cloud Object Storage (COS) バケット名を指定します。
    3
    COS リージョン名を指定します (例: eu-gb)。
    4
    COS バケットの S3 URL を指定します。たとえば、http://s3.eu-gb.cloud-object-storage.appdomain.cloud です。ここで、eu-gb はリージョン名です。バケットのリージョンに応じてリージョン名を置き換えます。
    5
    HMAC 認証情報からのアクセスキーとシークレットアクセスキーを使用して作成したシークレットの名前を定義します。
  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.8.1.5. 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 とメモリーの要件を調整しなければならない場合があります。

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

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.8.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.8.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 オブジェクトを設定します。

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

    ...
    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
    matchExpressions オブジェクトを設定して、ノードエージェント Pod のスケジューリングに制限を追加します。

5.8.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.8.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.8.1.11. リポジトリーのメンテナンスの設定

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

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

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

前提条件

  • 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.8.1.12. Velero 負荷アフィニティーの設定

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

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

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

前提条件

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

手順

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

    • 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.8.1.13. 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.8.1.14. 複数の 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.8.1.15. 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