5.26. OADP のトラブルシューティング


5.26.1. トラブルシューティング

次の方法を使用して、OADP の問題をトラブルシューティングできます。

5.26.2. Velero CLI ツール

velero CLI ツールは次の方法で入手できます。

  • velero CLI ツールをダウンロードする
  • クラスター内の Velero デプロイメント内の velero バイナリーにアクセスする

5.26.2.1. Velero CLI ツールのダウンロード

Velero のドキュメントページの手順に従って、Velero CLI ツールをダウンロードしてインストールできます。このページには、次のダウンロード方法の手順が記載されています。

  • Homebrew を使用した macOS
  • GitHub
  • Chocolatey を使用した Windows

前提条件

  • DNS とコンテナーネットワークが有効になっている、v1.16 以降の Kubernetes クラスターにアクセスできる。
  • kubectl をローカルにインストールしている。

手順

  1. ブラウザーを開き、Velero Web サイト上の "Install the CLI" に移動します。
  2. macOS、GitHub、または Windows の適切な手順に従います。
  3. 使用している OADP および OpenShift Container Platform のバージョンに適切な Velero バージョンをダウンロードします。
5.26.2.1.1. OADP、Velero、および OpenShift Container Platform の各バージョンの関係
Expand
OADP のバージョンVelero のバージョンOpenShift Container Platform バージョン

1.3.0

{velero-1.12}

4.12-4.15

1.3.1

{velero-1.12}

4.12-4.15

1.3.2

{velero-1.12}

4.12-4.15

1.3.3

{velero-1.12}

4.12-4.15

1.3.4

{velero-1.12}

4.12-4.15

1.3.5

{velero-1.12}

4.12-4.15

1.4.0

{velero-1.14}

4.14-4.18

1.4.1

{velero-1.14}

4.14-4.18

1.4.2

{velero-1.14}

4.14-4.18

1.4.3

{velero-1.14}

4.14-4.18

1.5.0

{velero-1.16}

4.19

5.26.2.2. クラスター内の Velero デプロイメントで Velero バイナリーにアクセスする

shell コマンドを使用して、クラスター内の Velero デプロイメントの Velero バイナリーにアクセスできます。

前提条件

  • DataProtectionApplication カスタムリソースのステータスが Reconcile complete である。

手順

  • 次のコマンドを使用して、必要なエイリアスを設定します。

    $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
    Copy to Clipboard Toggle word wrap

5.26.2.3. OpenShift CLI ツールを使用した Velero リソースのデバッグ

OpenShift CLI ツールを使用して Velero カスタムリソース (CR) と Velero Pod ログを確認することで、失敗したバックアップまたは復元をデバッグできます。

手順

  • 次の oc describe コマンドを使用して、Backup または Restore CR に関連する警告とエラーの概要を取得します。

    $ oc describe <velero_cr> <cr_name>
    Copy to Clipboard Toggle word wrap
  • 次の oc logs コマンドを使用して、Velero Pod のログを取得します。

    $ oc logs pod/<velero>
    Copy to Clipboard Toggle word wrap
  • 次の例に示すように、DataProtectionApplication リソースで Velero のログレベルを指定します。

    注記

    このオプションは、OADP 1.0.3 以降で使用できます。

    Velero ログレベルファイルの例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: velero-sample
    spec:
      configuration:
        velero:
          logLevel: warning
    Copy to Clipboard Toggle word wrap

    次の logLevel 値を使用できます。

  • trace
  • debug
  • info
  • warning
  • error
  • fatal
  • panic

    ほとんどのログには info logLevel 値を使用します。

5.26.2.4. Velero CLI ツールを使用した Velero リソースのデバッグ

Velero CLI ツールを使用して、Backup および Restore カスタムリソース (CR) をデバッグし、ログを取得できます。Velero CLI ツールは、OpenShift CLI ツールよりも詳細な情報を提供します。

手順

  • oc exec コマンドを使用して、Velero CLI コマンドを実行します。

    $ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
      <backup_restore_cr> <command> <cr_name>
    Copy to Clipboard Toggle word wrap

    oc exec コマンドの例

    $ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
      backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
    Copy to Clipboard Toggle word wrap

  • 次の velero --help オプションを使用して、すべての Velero CLI コマンドをリスト表示します。

    $ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
      --help
    Copy to Clipboard Toggle word wrap
  • 次の velero logs コマンドを使用して、Backup または Restore CR のログを取得します。

    $ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
      <backup_restore_cr> logs <cr_name>
    Copy to Clipboard Toggle word wrap

    velero logs コマンドの例

    $ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
      restore logs ccc7c2d0-6017-11eb-afab-85d0007f5a19-x4lbf
    Copy to Clipboard Toggle word wrap

  • 次の velero describe コマンドを使用して、Backup または Restore CR に関連する警告とエラーの概要を取得します。

    $ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
      <backup_restore_cr> describe <cr_name>
    Copy to Clipboard Toggle word wrap

    velero describe コマンドの例

    $ oc -n openshift-adp exec deployment/velero -c velero -- ./velero \
      backup describe 0e44ae00-5dc3-11eb-9ca8-df7e5254778b-2d8ql
    Copy to Clipboard Toggle word wrap

    次の種類の復元エラーと警告が、velero describe リクエストの出力に表示されます。

  • Velero: Velero 自体の操作に関連するメッセージのリスト (クラウドへの接続、バックアップファイルの読み取りなどに関連するメッセージなど)
  • Cluster: クラスタースコープのリソースのバックアップまたは復元に関連するメッセージのリスト
  • Namespaces: namespace に保存されているリソースのバックアップまたは復元に関連するメッセージのリスト

    これらのカテゴリーのいずれかで 1 つ以上のエラーが発生すると、Restore 操作のステータスが PartiallyFailed になり、Completed ではなくなります。警告によって完了ステータスが変化することはありません。

    これらの復元エラーは、次の点を考慮してください。

  • リソース固有のエラー、つまり Cluster および Namespaces エラーの場合、restore describe --details 出力には、Velero によって復元されたすべてのリソースを含むリソースリストが含まれています。このようなエラーが発生したリソースについて、そのリソースが実際にクラスター内にあるかどうかを確認してください。
  • describe コマンドの出力に Velero エラーがあっても、リソース固有のエラーがない場合は、ワークロードの復元で実際に問題が発生することなく復元が完了した可能性があります。その場合は、復元後のアプリケーションを十分に検証してください。

    たとえば、出力に PodVolumeRestore またはノードエージェント関連のエラーが含まれている場合は、PodVolumeRestoresDataDownloads のステータスを確認します。これらのいずれも失敗しておらず、まだ実行中でもない場合は、ボリュームデータは完全に復元されている可能性があります。

5.26.3. メモリーまたは CPU の不足により Pod がクラッシュまたは再起動する

メモリーまたは CPU の不足により Velero または Restic Pod がクラッシュした場合、これらのリソースのいずれかに対して特定のリソースリクエストを設定できます。リソース要求フィールドの値は、Kubernetes リソース要件と同じ形式に従う必要があります。

configuration.velero.podConfig.resourceAllocations または configuration.restic.podConfig.resourceAllocations を指定しない場合は、Velero または Restic Pod の次のデフォルトの resources 仕様の設定を参照してください。

requests:
  cpu: 500m
  memory: 128Mi
Copy to Clipboard Toggle word wrap

5.26.3.1. Velero Pod のリソースリクエストの設定

oadp_v1alpha1_dpa.yaml ファイルの configuration.velero.podConfig.resourceAllocations 仕様フィールドを使用して、Velero Pod に対する特定のリソース要求を設定できます。

手順

  • YAML ファイルで cpu および memory リソース要求を設定します。

    Velero ファイルの例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    configuration:
      velero:
        podConfig:
          resourceAllocations: 
    1
    
            requests:
              cpu: 200m
              memory: 256Mi
    Copy to Clipboard Toggle word wrap

    1
    リストされている resourceAllocations は、平均使用量です。

5.26.3.2. Restic Pod のリソースリクエストの設定

configuration.restic.podConfig.resourceAllocations 仕様フィールドを使用して、Restic Pod の特定のリソース要求を設定できます。

注記

OADP 1.5.0 では、configuration.restic.podConfig.resourceAllocations 仕様フィールドが Data Protection Application (DPA) から削除されます。uploaderType フィールドが Restic ではなく Kopia に設定された nodeAgent セクションを使用します。

手順

  • YAML ファイルで cpu および memory リソース要求を設定します。

    Restic ファイルの例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    configuration:
      restic:
        podConfig:
          resourceAllocations: 
    1
    
            requests:
              cpu: 1000m
              memory: 16Gi
    Copy to Clipboard Toggle word wrap

    1
    リストされている resourceAllocations は、平均使用量です。

5.26.3.3. nodeAgent Pod のリソース要求の設定

configuration.nodeAgent.podConfig.resourceAllocations 仕様フィールドを使用して、nodeAgent Pod の特定のリソース要求を設定できます。

注記

OADP 1.5.0 では、configuration.restic.podConfig.resourceAllocations 仕様フィールドが Data Protection Application (DPA) から削除されます。uploaderType フィールドが Restic ではなく Kopia に設定された nodeAgent セクションを使用します。

手順

  1. YAML ファイルで cpu および memory リソース要求を設定します。

    nodeAgent.yaml ファイルの例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: ts-dpa
    spec:
      backupLocations:
      - velero:
          default: true
          objectStorage:
            bucket: oadp.....njph
            prefix: velero
          credential:
            key: cloud
            name: cloud-credentials-gcp
          provider: gcp
      configuration:
        velero:
          defaultPlugins:
          - gcp
          - openshift
          - csi
        nodeAgent:
          enable: true
          uploaderType: kopia
          podConfig:
            resourceAllocations: 
    1
    
              requests:
                cpu: 1000m
                memory: 16Gi 
    2
    Copy to Clipboard Toggle word wrap

    1
    ここに示されているリソース割り当ての例は、平均的な使用状況を想定したものです。
    2
    インフラストラクチャーや使用状況に応じて、このパラメーターを変更できます。
  2. 次のコマンドを実行して DPA CR を作成します。

    $ oc create -f nodeAgent.yaml
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを使用して、nodeAgent Pod が実行されていることを確認します。

    $ oc get pods
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                                        READY   STATUS      RESTARTS   AGE
    node-agent-hbj9l                                            1/1     Running     0          97s
    node-agent-wmwgz                                            1/1     Running     0          95s
    node-agent-zvc7k                                            1/1     Running     0          98s
    openshift-adp-controller-manager-7f9db86d96-4lhgq           1/1     Running     0          137m
    velero-7b6c7fb8d7-ppc8m                                     1/1     Running     0          4m2s
    Copy to Clipboard Toggle word wrap

  2. nodeAgent Pod のいずれかを記述して、リソース要求を確認します。

    $ oc describe pod node-agent-hbj9l | grep -C 5 Requests
    Copy to Clipboard Toggle word wrap

    出力例

          --log-format=text
        State:          Running
          Started:      Mon, 09 Jun 2025 16:22:15 +0530
        Ready:          True
        Restart Count:  0
        Requests:
          cpu:     1
          memory:  1Gi
        Environment:
          NODE_NAME:            (v1:spec.nodeName)
          VELERO_NAMESPACE:    openshift-adp (v1:metadata.namespace)
    Copy to Clipboard Toggle word wrap

5.26.4. アドミッション Webhook を使用する Velero バックアップの復元に関する回避策

Velero では、復元中にアドミッション Webhook の問題を解決する機能が限られています。アドミッション Webhook を使用するワークロードがある場合は、追加の Velero プラグインを使用するか、ワークロードの復元方法を変更する必要がある場合があります。

通常、アドミッション Webhook を使用するワークロードでは、最初に特定の種類のリソースを作成する必要があります。これはワークロードに子リソースがある場合に特に当てはまります。アドミッション Webhook は通常、子リソースをブロックするためです。

たとえば、service.serving.knative.dev などの最上位オブジェクトを作成または復元すると、通常、子リソースが自動的に作成されます。最初にこれを行う場合、Velero を使用してこれらのリソースを作成および復元する必要はありません。これにより、Velero が使用する可能性のあるアドミッション Webhook によって子リソースがブロックされるという問題が回避されます。

注記

Velero プラグインは個別のプロセスとして起動されます。Velero の操作は、成功したかどうかに関係なく完了すると終了します。デバッグログの received EOF, stopping recv loop メッセージは、プラグイン操作が完了したことを示します。エラーが発生したわけではありません。

5.26.4.1. Knative リソースの復元

Velero を使用してアドミッション Webhook を使用する Knative リソースをバックアップすると、問題が発生する可能性があります。

この問題は、アドミッション Webhook を使用する Knative リソースをバックアップおよび復元するときに、常に最上位レベルの Service リソースを復元することで回避できます。

手順

  • 次のコマンドを使用して、最上位レベルの service.serving.knavtive.dev Service リソースを復元します。

    $ velero restore <restore_name> \
      --from-backup=<backup_name> --include-resources \
      service.serving.knavtive.dev
    Copy to Clipboard Toggle word wrap

5.26.4.2. IBM AppConnect リソースの復元

Velero を使用してアドミッション Webhook を持つ IBM® AppConnect リソースを復元するときに問題が発生した場合は、この手順のチェックを実行できます。

手順

  1. 次のコマンドを入力/実行して、クラスター内に kind: MutatingWebhookConfiguration の Mutating アドミッションプラグインがあるかどうかを確認します。

    $ oc get mutatingwebhookconfigurations
    Copy to Clipboard Toggle word wrap
  2. kind: MutatingWebhookConfiguration の YAML ファイルを調べて、問題が発生しているオブジェクトの作成をブロックするルールがないことを確認します。詳細は、Kubernetes の公式ドキュメント を参照してください。
  3. バックアップ時に使用される type: Configuration.appconnect.ibm.com/v1beta1spec.version が、インストールされている Operator のサポート対象であることを確認してください。

5.26.4.3. Velero プラグインのパニックエラーの回避

シークレットが欠落していると、イメージストリームのバックアップ中に Velero プラグインでパニックエラーが発生する可能性があります。

バックアップと Backup Storage Location (BSL) が Data Protection Application (DPA) のスコープ外で管理されている場合、OADP コントローラーによって関連する oadp-<bsl_name>-<bsl_provider>-registry-secret パラメーターが作成されません。

バックアップ操作中に、OpenShift Velero プラグインが imagestream バックアップでパニックになり、次のパニックエラーが発生します。

024-02-27T10:46:50.028951744Z time="2024-02-27T10:46:50Z" level=error msg="Error backing up item"
backup=openshift-adp/<backup name> error="error executing custom action (groupResource=imagestreams.image.openshift.io,
namespace=<BSL Name>, name=postgres): rpc error: code = Aborted desc = plugin panicked:
runtime error: index out of range with length 1, stack trace: goroutine 94…
Copy to Clipboard Toggle word wrap

Velero プラグインのパニックエラーを回避するには、次の回避策を使用します。

手順

  1. 次のコマンドを使用して、カスタムの BSL に適切なラベルを付けます。

    $ oc label backupstoragelocations.velero.io <bsl_name> app.kubernetes.io/component=bsl
    Copy to Clipboard Toggle word wrap
  2. BSL にラベルを付けた後、DPA がリコンサイルされるまで待ちます。

    注記

    DPA 自体に軽微な変更を加えることで、強制的に調整を行うことができます。

検証

  • DPA がリコンサイルされたら、次のコマンドを入力して、パラメーターが作成され、正しいレジストリーデータがそこに入力されていることを確認します。

    $ oc -n openshift-adp get secret/oadp-<bsl_name>-<bsl_provider>-registry-secret -o json | jq -r '.data'
    Copy to Clipboard Toggle word wrap

5.26.4.4. OpenShift ADP コントローラーのセグメンテーション違反の回避策

cloudstoragerestic の両方を有効にして Data Protection Application (DPA) を設定すると、openshift-adp-controller-manager Pod がクラッシュし、クラッシュループセグメンテーション違反で Pod が失敗するまで無期限に再起動します。

DPA を設定するときに、velero または cloudstorage のうちどちらか一方を定義してください。そうしないと、openshift-adp-controller-manager Pod が、次の設定によりクラッシュループセグメンテーション違反で失敗します。

  • velerocloudstorage を両方とも定義すると、openshift-adp-controller-manager は失敗します。
  • velerocloudstorage を両方とも定義しないと、openshift-adp-controller-manager は失敗します。

この問題の詳細は、OADP-1054 を参照してください。

5.26.5. OADP インストールの問題

Data Protection Application (DPA) をインストールするときに、無効なディレクトリーや誤った認証情報の使用すると、問題が発生することがあります。

5.26.5.1. バックアップストレージ内の無効なディレクトリーの解決

オブジェクトストレージには、Velero ディレクトリーではないトップレベルのディレクトリーが含まれています。Velero Pod のログに次のエラーメッセージが表示されます。

Backup storage contains invalid top-level directories.
Copy to Clipboard Toggle word wrap

手順

  • オブジェクトストレージが Velero 専用でない場合は、DataProtectionApplication マニフェストで spec.backupLocations.velero.objectStorage.prefix パラメーターを設定して、バケットの接頭辞を指定する必要があります。

5.26.5.2. 誤った AWS 認証情報の解決

Secret オブジェクトの作成に使用される credentials-velero ファイルの形式が正しくない場合、次の例を含む複数のエラーが発生する可能性があります。

  • oadp-aws-registry Pod のログに次のエラーメッセージが表示されます。

    `InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.`
    Copy to Clipboard Toggle word wrap
  • Velero Pod のログに次のエラーメッセージが表示されます。

    NoCredentialProviders: no valid providers in chain.
    Copy to Clipboard Toggle word wrap

手順

  • 次の例に示すように、credentials-velero ファイルの形式が正しいことを確認します。

    サンプル credentials-velero ファイル

    [default] 
    1
    
    aws_access_key_id=AKIAIOSFODNN7EXAMPLE 
    2
    
    aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    Copy to Clipboard Toggle word wrap

    1
    AWS デフォルトプロファイル。
    2
    値を引用符 ("') で囲まないでください。

5.26.6. OADP Operator の問題

OpenShift API for Data Protection (OADP) Operator では、解決できない問題が原因で問題が発生する可能性があります。

5.26.6.1. OADP Operator のサイレント障害の解決

OADP Operator の S3 バケットが空である可能性があるのに、oc get po -n <oadp_operator_namespace> コマンドを実行すると、Operator のステータスとして Running が表示されます。

このような場合、Operator が実行中であると誤って報告されるため、サイレント障害 が発生したとみなされます。この問題は、クラウド認証情報で提供される権限が不十分な場合に発生します。

この問題を解決するには、Backup Storage Location (BSL) のリストを取得し、各 BSL のマニフェストで認証情報の問題を確認します。

手順

  1. OpenShift または Velero コマンドラインインターフェイス (CLI) を使用して、BSL のリストを取得します。

    1. OpenShift CLI (oc) を使用して BSL のリストを取得します。

      $ oc get backupstoragelocations.velero.io -A
      Copy to Clipboard Toggle word wrap
    2. velero CLI を使用して BSL のリストを取得します。

      $ velero backup-location get -n <oadp_operator_namespace>
      Copy to Clipboard Toggle word wrap
  2. 前のステップの BSL のリストを使用して、次のコマンドを実行し、各 BSL のマニフェストにエラーがないか調べます。

    $ oc get backupstoragelocations.velero.io -n <namespace> -o yaml
    Copy to Clipboard Toggle word wrap

    結果の例:

    apiVersion: v1
    items:
    - apiVersion: velero.io/v1
      kind: BackupStorageLocation
      metadata:
        creationTimestamp: "2023-11-03T19:49:04Z"
        generation: 9703
        name: example-dpa-1
        namespace: openshift-adp-operator
        ownerReferences:
        - apiVersion: oadp.openshift.io/v1alpha1
          blockOwnerDeletion: true
          controller: true
          kind: DataProtectionApplication
          name: example-dpa
          uid: 0beeeaff-0287-4f32-bcb1-2e3c921b6e82
        resourceVersion: "24273698"
        uid: ba37cd15-cf17-4f7d-bf03-8af8655cea83
      spec:
        config:
          enableSharedConfig: "true"
          region: us-west-2
        credential:
          key: credentials
          name: cloud-credentials
        default: true
        objectStorage:
          bucket: example-oadp-operator
          prefix: example
        provider: aws
      status:
        lastValidationTime: "2023-11-10T22:06:46Z"
        message: "BackupStorageLocation \"example-dpa-1\" is unavailable: rpc
          error: code = Unknown desc = WebIdentityErr: failed to retrieve credentials\ncaused
          by: AccessDenied: Not authorized to perform sts:AssumeRoleWithWebIdentity\n\tstatus
          code: 403, request id: d3f2e099-70a0-467b-997e-ff62345e3b54"
        phase: Unavailable
    kind: List
    metadata:
      resourceVersion: ""
    Copy to Clipboard Toggle word wrap

5.26.7. OADP タイムアウト

タイムアウトを延長すると、複雑なプロセスやリソースを大量に消費するプロセスが途中で終了することなく正常に完了できます。この設定により、エラー、再試行、または失敗を減らすことができます。

過度に長いタイムアウトを設定しないように、論理的な方法でタイムアウト延長のバランスをとってください。過度に長いと、プロセス内の根本的な問題が隠れる可能性があります。プロセスのニーズとシステム全体のパフォーマンスに応じて適切なタイムアウト値を検討および監視してください。

次の各 OADP タイムアウトで、関連するパラメーターを実装すべき状況と手順を説明します。

5.26.7.1. Restic タイムアウトの実装

spec.configuration.nodeAgent.timeout パラメーターは、Restic タイムアウトを定義します。デフォルト値は 1h です。

次に該当する場合は、nodeAgent セクションで Restic timeout パラメーターを使用してください。

  • PV データの使用量の合計が 500GB を超える Restic バックアップの場合。
  • バックアップが次のエラーでタイムアウトになる場合:

    level=error msg="Error backing up item" backup=velero/monitoring error="timed out waiting for all PodVolumeBackups to complete"
    Copy to Clipboard Toggle word wrap

手順

  • DataProtectionApplication カスタムリソース (CR) マニフェストの spec.configuration.nodeAgent.timeout ブロックの値を編集します。次に例を示します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
     name: <dpa_name>
    spec:
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
          timeout: 1h
    # ...
    Copy to Clipboard Toggle word wrap

5.26.7.2. Velero リソースタイムアウトの実装

resourceTimeout は Velero カスタムリソース定義 (CRD) の可用性、volumeSnapshot の削除、リポジトリーの可用性など、タイムアウトが発生する前に複数の Velero リソースを待機する時間を定義します。デフォルトは 10m です。

resourceTimeout は次の場合に使用してください。

  • PV データの合計使用量が 1 TB を超えるバックアップの場合。このパラメーターは、バックアップを完了としてマークする前に、Velero が Container Storage Interface (CSI) スナップショットをクリーンアップまたは削除しようとするときのタイムアウト値として使用されます。

    • このクリーンアップのサブタスクが VSC のパッチ適用を試行します。このタイムアウトはそのタスクに使用できます。
  • Restic または Kopia のファイルシステムベースのバックアップのバックアップリポジトリーを作成または準備できるようにするため。
  • カスタムリソース (CR) またはバックアップからリソースを復元する前に、クラスター内で Velero CRD が利用可能かどうかを確認します。

手順

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

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
     name: <dpa_name>
    spec:
      configuration:
        velero:
          resourceTimeout: 10m
    # ...
    Copy to Clipboard Toggle word wrap
5.26.7.2.1. Velero のデフォルトアイテム操作タイムアウトの実装

defaultItemOperationTimeout 設定は、非同期の BackupItemActionsRestoreItemActions が完了するのを、タイムアウトするまでにどのくらいの時間待機するかを定義します。デフォルト値は 1h です。

以下のシナリオでは、defaultItemOperationTimeout を使用します。

  • Data Mover 1.2.x のみ。
  • 特定のバックアップまたは復元が非同期アクションの完了を待機する時間を指定します。OADP 機能のコンテキストでは、この値は、Container Storage Interface (CSI) Data Mover 機能に関連する非同期アクションに使用されます。
  • defaultItemOperationTimeout が、defaultItemOperationTimeout を使用して Data Protection Application (DPA) に定義されている場合、バックアップおよび復元操作の両方に適用されます。itemOperationTimeout では、以下の "Item operation timeout - restore" セクションおよび "Item operation timeout - backup" セクションで説明されているように、バックアップのみを定義するか、これらの CR の復元のみを定義できます。

手順

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

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
     name: <dpa_name>
    spec:
      configuration:
        velero:
          defaultItemOperationTimeout: 1h
    # ...
    Copy to Clipboard Toggle word wrap

5.26.7.3. Data Mover タイムアウトの実装

timeout は、VolumeSnapshotBackup および VolumeSnapshotRestore を完了するためにユーザーが指定したタイムアウトです。デフォルト値は 10m です。

次のシナリオでは、Data Mover timeout を使用します。

  • VolumeSnapshotBackups (VSB) および VolumeSnapshotRestores (VSR) を作成する場合は、10 分後にタイムアウトします。
  • 合計 PV データ使用量が 500GB を超える大規模環境向け。1h のタイムアウトを設定します。
  • VolumeSnapshotMover (VSM) プラグインを使用します。
  • OADP 1.1.x のみ。

手順

  • 次の例に示すように、DataProtectionApplication CR マニフェストの spec.features.dataMover.timeout ブロックの値を編集します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
     name: <dpa_name>
    spec:
      features:
        dataMover:
          timeout: 10m
    # ...
    Copy to Clipboard Toggle word wrap

5.26.7.4. CSI スナップショットタイムアウトの実装

CSISnapshotTimeout は、タイムアウトとしてエラーを返す前に、CSI VolumeSnapshot ステータスが ReadyToUse になるまで待機する作成時の時間を指定します。デフォルト値は 10m です。

以下のシナリオでは、CSISnapshotTimeout を使用します。

  • CSI プラグイン。
  • スナップショットの作成に 10 分以上かかる可能性がある非常に大規模なストレージボリュームの場合。ログにタイムアウトが見つかった場合は、このタイムアウトを調整します。
注記

通常、CSISnapshotTimeout のデフォルト値は、デフォルト設定で大規模なストレージボリュームに対応できるため、調整する必要はありません。

手順

  • 次の例に示すように、Backup CR マニフェストの spec.csiSnapshotTimeout ブロックの値を編集します。

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
     name: <backup_name>
    spec:
     csiSnapshotTimeout: 10m
    # ...
    Copy to Clipboard Toggle word wrap

5.26.7.5. アイテム操作タイムアウトの実装 - 復元

ItemOperationTimeout 設定は、RestoreItemAction 操作を待機する時間を指定します。デフォルト値は 1h です。

以下のシナリオでは、復元 ItemOperationTimeout を使用します。

  • Data Mover 1.2.x のみ。
  • Data Mover の場合は、BackupStorageLocation にアップロードおよびダウンロードします。タイムアウトに達しても復元アクションが完了しない場合、失敗としてマークされます。ストレージボリュームのサイズが大きいため、タイムアウトの問題が原因で Data Mover の操作が失敗する場合は、このタイムアウト設定を増やす必要がある場合があります。

手順

  • 次の例に示すように、Restore CR マニフェストの Restore.spec.itemOperationTimeout ブロックの値を編集します。

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
     name: <restore_name>
    spec:
     itemOperationTimeout: 1h
    # ...
    Copy to Clipboard Toggle word wrap

5.26.7.6. アイテム操作タイムアウトの実装 - バックアップ

ItemOperationTimeout 設定は、非同期の BackupItemAction 操作を待機する時間を指定します。デフォルト値は 1h です。

次のシナリオでは、バックアップ ItemOperationTimeout を使用します。

  • Data Mover 1.2.x のみ。
  • Data Mover の場合は、BackupStorageLocation にアップロードおよびダウンロードします。タイムアウトに達してもバックアップアクションが完了しない場合は、失敗としてマークされます。ストレージボリュームのサイズが大きいため、タイムアウトの問題が原因で Data Mover の操作が失敗する場合は、このタイムアウト設定を増やす必要がある場合があります。

手順

  • 次の例に示すように、Backup CR マニフェストの Backup.spec.itemOperationTimeout ブロックの値を編集します。

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
     name: <backup_name>
    spec:
     itemOperationTimeout: 1h
    # ...
    Copy to Clipboard Toggle word wrap

5.26.8. バックアップおよび復元 CR の問題

Backup および Restore カスタムリソース (CR) では、次のような一般的な問題が発生することがあります。

  • Backup CR がボリュームを取得できない
  • Backup CR のステータスが進行中のままになる
  • Backup CR のステータスが、PartiallyFailed フェーズ/状態などのままになる

5.26.8.1. Backup CR がボリュームを取得できない問題のトラブルシューティング

永続ボリューム (PV) とスナップショットの場所が異なるリージョンにある場合、Backup カスタムリソース (CR) が次のエラーメッセージを表示します。

サンプルエラー

InvalidVolume.NotFound: The volume ‘vol-xxxx’ does not exist.
Copy to Clipboard Toggle word wrap

手順

  1. DataProtectionApplication マニフェストの spec.snapshotLocations.velero.config.region キーの値を編集して、スナップショットの場所が PV と同じリージョンにあるようにします。
  2. 新しい Backup CR を作成します。

5.26.8.2. Backup CR のステータスが進行中のままになる問題のトラブルシューティング

バックアップが中断された場合に再開できず、Backup カスタムリソース (CR) のステータスが InProgress フェーズのままになり、完了しません。

手順

  1. 次のコマンドを実行して、Backup CR の詳細を取得します。

    $ oc -n {namespace} exec deployment/velero -c velero -- ./velero \
      backup describe <backup>
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、Backup CR を削除します。

    $ oc delete backups.velero.io <backup> -n openshift-adp
    Copy to Clipboard Toggle word wrap

    進行中の Backup CR によるオブジェクトストレージへのファイルアップロードは完了していないため、バックアップの場所をクリーンアップする必要はありません。

  3. 新しい Backup CR を作成します。
  4. 次のコマンドを実行して、Velero バックアップの詳細を表示します。

    $ velero backup describe <backup_name> --details
    Copy to Clipboard Toggle word wrap

5.26.8.3. Backup CR のステータスが部分的に失敗のままになる問題のトラブルシューティング

Restic が使用されていない Backup CR のステータスが PartiallyFailed フェーズのままで、完了しません。関連する PVC のスナップショットは作成されません。

CSI スナップショットクラスに基づいて作成されたバックアップにラベルがない場合、CSI スナップショットプラグインがスナップショットの作成に失敗します。その結果、Velero Pod が次のメッセージに類似したエラーをログに記録します。

time="2023-02-17T16:33:13Z" level=error msg="Error backing up item" backup=openshift-adp/user1-backup-check5 error="error executing custom action (groupResource=persistentvolumeclaims, namespace=busy1, name=pvc1-user1): rpc error: code = Unknown desc = failed to get volumesnapshotclass for storageclass ocs-storagecluster-ceph-rbd: failed to get volumesnapshotclass for provisioner openshift-storage.rbd.csi.ceph.com, ensure that the desired volumesnapshot class has the velero.io/csi-volumesnapshot-class label" logSource="/remote-source/velero/app/pkg/backup/backup.go:417" name=busybox-79799557b5-vprq
Copy to Clipboard Toggle word wrap

手順

  1. 次のコマンドを実行して Backup CR を削除します。

    $ oc delete backups.velero.io <backup> -n openshift-adp
    Copy to Clipboard Toggle word wrap
  2. 必要に応じて、BackupStorageLocation リソースに保存されているデータをクリーンアップして、領域を解放します。
  3. 次のコマンドを実行して、velero.io/csi-volumesnapshot-class=true ラベルを VolumeSnapshotClass オブジェクトに適用します。

    $ oc label volumesnapshotclass/<snapclass_name> velero.io/csi-volumesnapshot-class=true
    Copy to Clipboard Toggle word wrap
  4. 新しい Backup CR を作成します。

5.26.9. Restic の問題

Restic を使用してアプリケーションをバックアップすると、次の問題が発生することがあります。

  • root_squash リソース/パラメーターが有効な NFS データボリュームの Restic 権限エラー
  • バケットを空にした後に Restic Backup CR を再作成できない
  • OpenShift Container Platform 4.14 で、Pod Security Admission (PSA) ポリシーの変更により、Restic の復元が部分的に失敗する

5.26.9.1. NFS データボリュームの Restic 権限エラーのトラブルシューティング

NFS データボリュームで root_squash パラメーターが有効になっていて、Restic マップが nfsnobody 値に設定されており、バックアップを作成する権限がない場合は、Restic の Pod ログに次のエラーメッセージが表示されます。

サンプルエラー

controller=pod-volume-backup error="fork/exec/usr/bin/restic: permission denied".
Copy to Clipboard Toggle word wrap

この問題は、Restic 用の補助グループを作成し、グループの ID を DataProtectionApplication マニフェストに追加することで解決できます。

手順

  1. NFS データボリューム上に Restic の補足グループを作成します。
  2. NFS ディレクトリーに setgid ビットを設定して、グループの所有権が継承されるようにします。
  3. spec.configuration.nodeAgent.supplementalGroups パラメーターとグループ ID を DataProtectionApplication マニフェストに追加します。次に例を示します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    # ...
    spec:
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
          supplementalGroups:
          - <group_id> 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    補助グループ ID を指定します。
  4. Restic Pod が再起動し、変更が適用されるまで待機します。

Restic ディレクトリーがオブジェクトストレージから削除された場合、Velero が ResticRepository マニフェストから Restic リポジトリーを再作成または更新しません。詳細は、Velero issue 4421 を参照してください。

ある namespace に Restic Backup CR を作成し、オブジェクトストレージバケットを空にしてから、同じ namespace に Backup CR を再作成すると、再作成した Backup CR が失敗します。この場合、velero Pod のログに次のエラーメッセージが表示されます。

サンプルエラー

stderr=Fatal: unable to open config file: Stat: The specified key does not exist.\nIs there a repository at the following location?
Copy to Clipboard Toggle word wrap

手順

  • 次のコマンドを実行して、関連する Restic リポジトリーを namespace から削除します。

    $ oc delete resticrepository openshift-adp <name_of_the_restic_repository>
    Copy to Clipboard Toggle word wrap

    次のエラーログでは、mysql-persistent が問題のある Restic リポジトリーです。わかりやすくするために、リポジトリーの名前は斜体で表示されます。

     time="2021-12-29T18:29:14Z" level=info msg="1 errors
     encountered backup up item" backup=velero/backup65
     logSource="pkg/backup/backup.go:431" name=mysql-7d99fc949-qbkds
     time="2021-12-29T18:29:14Z" level=error msg="Error backing up item"
     backup=velero/backup65 error="pod volume backup failed: error running
     restic backup, stderr=Fatal: unable to open config file: Stat: The
     specified key does not exist.\nIs there a repository at the following
     location?\ns3:http://minio-minio.apps.mayap-oadp-
     veleo-1234.qe.devcluster.openshift.com/mayapvelerooadp2/velero1/
     restic/mysql-persistent\n: exit status 1" error.file="/remote-source/
     src/github.com/vmware-tanzu/velero/pkg/restic/backupper.go:184"
     error.function="github.com/vmware-tanzu/velero/
     pkg/restic.(*backupper).BackupPodVolumes"
     logSource="pkg/backup/backup.go:435" name=mysql-7d99fc949-qbkds
    Copy to Clipboard Toggle word wrap

OpenShift Container Platform 4.14 は、Restic 復元プロセス中に Pod の準備を妨げる可能性のある Pod Security Admission (PSA) ポリシーを適用します。

Pod の作成時に SecurityContextConstraints (SCC) リソースが見つからず、Pod 上の PSA ポリシーが必要な標準を満たすように設定されていないと、Pod の許可は拒否されます。

この問題は、Velero のリソース復元順序が原因で発生します。

サンプルエラー

\"level=error\" in line#2273: time=\"2023-06-12T06:50:04Z\"
level=error msg=\"error restoring mysql-869f9f44f6-tp5lv: pods\\\
"mysql-869f9f44f6-tp5lv\\\" is forbidden: violates PodSecurity\\\
"restricted:v1.24\\\": privil eged (container \\\"mysql\\\
" must not set securityContext.privileged=true),
allowPrivilegeEscalation != false (containers \\\
"restic-wait\\\", \\\"mysql\\\" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (containers \\\
"restic-wait\\\", \\\"mysql\\\" must set securityContext.capabilities.drop=[\\\"ALL\\\"]), seccompProfile (pod or containers \\\
"restic-wait\\\", \\\"mysql\\\" must set securityContext.seccompProfile.type to \\\
"RuntimeDefault\\\" or \\\"Localhost\\\")\" logSource=\"/remote-source/velero/app/pkg/restore/restore.go:1388\" restore=openshift-adp/todolist-backup-0780518c-08ed-11ee-805c-0a580a80e92c\n
velero container contains \"level=error\" in line#2447: time=\"2023-06-12T06:50:05Z\"
level=error msg=\"Namespace todolist-mariadb,
resource restore error: error restoring pods/todolist-mariadb/mysql-869f9f44f6-tp5lv: pods \\\
"mysql-869f9f44f6-tp5lv\\\" is forbidden: violates PodSecurity \\\"restricted:v1.24\\\": privileged (container \\\
"mysql\\\" must not set securityContext.privileged=true),
allowPrivilegeEscalation != false (containers \\\
"restic-wait\\\",\\\"mysql\\\" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (containers \\\
"restic-wait\\\", \\\"mysql\\\" must set securityContext.capabilities.drop=[\\\"ALL\\\"]), seccompProfile (pod or containers \\\
"restic-wait\\\", \\\"mysql\\\" must set securityContext.seccompProfile.type to \\\
"RuntimeDefault\\\" or \\\"Localhost\\\")\"
logSource=\"/remote-source/velero/app/pkg/controller/restore_controller.go:510\"
restore=openshift-adp/todolist-backup-0780518c-08ed-11ee-805c-0a580a80e92c\n]",
Copy to Clipboard Toggle word wrap

手順

  1. DPA カスタムリソース (CR) で、Velero サーバーの restore-resource-priorities フィールドを確認または設定して、securitycontextconstraints がリソースのリストの pods の前に順番にリストされていることを確認します。

    $ oc get dpa -o yaml
    Copy to Clipboard Toggle word wrap

    DPA CR の例

    # ...
    configuration:
      restic:
        enable: true
      velero:
        args:
          restore-resource-priorities: 'securitycontextconstraints,customresourcedefinitions,namespaces,storageclasses,volumesnapshotclass.snapshot.storage.k8s.io,volumesnapshotcontents.snapshot.storage.k8s.io,volumesnapshots.snapshot.storage.k8s.io,datauploads.velero.io,persistentvolumes,persistentvolumeclaims,serviceaccounts,secrets,configmaps,limitranges,pods,replicasets.apps,clusterclasses.cluster.x-k8s.io,endpoints,services,-,clusterbootstraps.run.tanzu.vmware.com,clusters.cluster.x-k8s.io,clusterresourcesets.addons.cluster.x-k8s.io' 
    1
    
        defaultPlugins:
        - gcp
        - openshift
    Copy to Clipboard Toggle word wrap

    1
    既存のリストアリソース優先順位リストがある場合は、その既存のリストを完全なリストと組み合わせてください。
  2. デプロイメントの警告が発生しないように、Fixing PodSecurity Admission warnings for deployments で説明されているように、アプリケーション Pod のセキュリティー標準が調整されていることを確認します。アプリケーションがセキュリティー標準に準拠していない場合は、SCC に関係なくエラーが発生する可能性があります。 
注記

この解決策は一時的なものであり、これに対処するために継続的な議論が進行中です。 

5.26.10. OADP データ保護テスト

DataProtectionTest (DPT) は、OADP 設定を検証するためのフレームワークを提供するカスタムリソース (CR) です。DPT CR は次のパラメーターの情報をチェックし、報告します。

  • オブジェクトストレージへのバックアップのアップロードパフォーマンス。
  • 永続ボリューム要求に対する CSI スナップショットの準備状況。
  • 暗号化やバージョン管理などのストレージバケットの設定。

DPT CR のこの情報を使用することで、データ保護環境が適切に設定され、指定された設定に従って動作していることを確認できます。

5.26.10.1. OADP DataProtectionTest CR 仕様フィールド

DataProtectionTest (DPT) カスタムリソース (CR) で次の仕様フィールドを設定できます。

Expand
表5.21 DPT CR 仕様フィールド
フィールド説明

backupLocationName

string

DataProtectionApplication (DPA) CR で設定された BackupStorageLocation CR の名前。

backupLocationSpec

object

BackupStorageLocation CR のインライン仕様。

uploadSpeedTestConfig

object

オブジェクトストレージへのアップロード速度テストを実行するための設定。

csiVolumeSnapshotTestConfigs

list

スナップショットを取得し、スナップショットの準備状態を確認するための永続ボリューム要求のリスト。

forceRun

boolean

ステータスが Complete または Failed の場合でも、DPT CR を再実行します。

skipTLSVerify

boolean

true に設定すると、TLS 証明書の検証がバイパスされます。

5.26.10.2. OADP DataProtectionTest CR ステータスフィールド

次のステータスフィールドを使用して、DataProtectionTest (DPT) カスタムリソース (CR) のステータスを確認できます。

Expand
表5.22 DPT CR ステータスフィールド
フィールド説明

phase

string

DPT CR の現在のフェーズ。値は InProgressComplete、または Failed を使用できます。

lastTested

タイムスタンプ

DPT CR が最後に実行されたときのタイムスタンプ。

uploadTest

object

アップロード速度テストの結果。

bucketMetadata

object

ストレージバケットの暗号化とバージョン管理に関する情報。

snapshotTests

list

各永続ボリューム要求のスナップショットテストの結果。

snapshotSummary

string

スナップショットの合格/不合格をまとめた結果たとえば、2/2 passed などです。

s3Vendor

string

AWS S3 互換のストレージバケットベンダー。たとえば、AWS、MinIO、Ceph などです。

errorMessage

string

DPT CR が失敗した場合のエラーメッセージ。

5.26.10.3. DataProtectionTest カスタムリソースの使用

DataProtectionTest (DPT) カスタムリソース (CR) を設定し、DPT CR を実行して、Container Storage Initiative (CSI) スナップショットの準備状況とストレージバケットへのデータアップロードパフォーマンスを確認できます。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。
  • OADP Operator がインストールされている。
  • DataProtectionApplication (DPA) CR が作成されている。
  • バックアップを保存するバックアップ保存場所 (BSL) を設定した。
  • 別の namespace で実行されている永続ボリューム要求 (PVC) を持つアプリケーションがある。

手順

  1. 例に示すように、DPT CR のマニフェストファイルを作成します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionTest
    metadata:
      name: dpt-sample
      namespace: openshift-adp
    spec:
      backupLocationName: <bsl_name> 
    1
    
      csiVolumeSnapshotTestConfigs: 
    2
    
      - snapshotClassName: csi-gce-pd-vsc
        timeout: 90s
        volumeSnapshotSource:
          persistentVolumeClaimName: <pvc1_name> 
    3
    
          persistentVolumeClaimNamespace: <pvc_namespace> 
    4
    
      - snapshotClassName: csi-gce-pd-vsc
        timeout: 120s
        volumeSnapshotSource:
          persistentVolumeClaimName: <pvc2_name> 
    5
    
          persistentVolumeClaimNamespace: <pvc_namespace>
      forceRun: false 
    6
    
      uploadSpeedTestConfig: 
    7
    
        fileSize: 200MB
        timeout: 120s
    Copy to Clipboard Toggle word wrap
    1
    BSL の名前を指定します。
    2
    csiVolumeSnapshotTestConfigs のリストを指定します。この例では、2 つの PVC がテストされています。
    3
    最初の PVC の名前を指定します。
    4
    PVC の namespace を指定します。
    5
    2 番目の PVC の名前を指定します。
    6
    OADP コントローラーがテストの再実行をスキップするようにする場合は forceRun フラグを false に設定します。
    7
    fileSizetimeout のフィールドを設定して、uploadSpeedTestConfig オブジェクトを設定します。
  2. 次のコマンドを実行して DPT CR を作成します。

    $ oc create -f <dpt_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    DPT マニフェストのファイル名を指定します。

検証

  1. 次のコマンドを実行して、DPT CR のフェーズが Complete であることを確認します。

    $ oc get dpt dpt-sample
    Copy to Clipboard Toggle word wrap

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

    NAME         PHASE      LASTTESTED   UPLOADSPEED(MBPS)   ENCRYPTION   VERSIONING   SNAPSHOTS    AGE
    dpt-sample   Complete   17m          546                 AES256       Enabled      2/2 passed   17m
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、CSI スナップショットが準備され、データアップロードテストが成功したことを確認します。

    $ oc get dpt dpt-sample -o yaml
    Copy to Clipboard Toggle word wrap

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

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionTest
    ....
    status:
      bucketMetadata: 
    1
    
        encryptionAlgorithm: AES256
        versioningStatus: Enabled
      lastTested: "202...:47:51Z"
      phase: Complete
      s3Vendor: AWS 
    2
    
      snapshotSummary: 2/2 passed 
    3
    
      snapshotTests:
      - persistentVolumeClaimName: mysql-data
        persistentVolumeClaimNamespace: ocp-mysql
        readyDuration: 24s
        status: Ready
      - persistentVolumeClaimName: mysql-data1
        persistentVolumeClaimNamespace: ocp-mysql
        readyDuration: 40s
        status: Ready
      uploadTest: 
    4
    
        duration: 3.071s
        speedMbps: 546
        success: true
    Copy to Clipboard Toggle word wrap
    1
    バケットのメタデータ情報。
    2
    S3 バケットベンダー。
    3
    CSI スナップショットテストの概要。
    4
    アップロードテストの詳細。

5.26.10.4. バックアップ保存場所の仕様を設定してデータ保護テストを実行する

BSL 名の代わりにバックアップストレージ場所 (BSL) の仕様を指定して、DataProtectionTest (DPT) カスタムリソース (CR) を設定できます。次に、DPT CR を実行して、Container Storage Initiative (CSI) スナップショットの準備状況と、ストレージバケットへのデータアップロードパフォーマンスを確認します。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。
  • OADP Operator がインストールされている。
  • DataProtectionApplication (DPA) CR が作成されている。
  • バックアップを保存するためのバケットが設定されている。
  • バケットストレージにアクセスするための Secret オブジェクトが作成されている。
  • 別の namespace で実行されている永続ボリューム要求 (PVC) を持つアプリケーションがある。

手順

  1. 例に示すように、DPT CR のマニフェストファイルを作成します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionTest
    metadata:
      name: dpt-sample
      namespace: openshift-adp
    spec:
      backupLocationSpec: 
    1
    
        provider: aws
        default: true
        objectStorage:
          bucket: sample-bucket 
    2
    
          prefix: velero
        config:
          region: us-east-1 
    3
    
          profile: "default"
          insecureSkipTLSVerify: "true"
          s3Url: "https://s3.amazonaws.com/sample-bucket"
        credential: 
    4
    
          name: cloud-credentials
          key: cloud
      uploadSpeedTestConfig: 
    5
    
        fileSize: 50MB
        timeout: 120s
      csiVolumeSnapshotTestConfigs: 
    6
    
        - volumeSnapshotSource:
            persistentVolumeClaimName: mongo
            persistentVolumeClaimNamespace: mongo-persistent
          snapshotClassName: csi-snapclass
          timeout: 2m
      forceRun: true
      skipTLSVerify: true 
    7
    Copy to Clipboard Toggle word wrap
    1
    クラウドプロバイダーなどの詳細を指定して、BSL 仕様を設定します。
    2
    バケット名を指定します。この例では、バケット名は sample-bucket です。
    3
    クラウドプロバイダーのリージョンを指定します。
    4
    ストレージバケットのクラウド認証情報を指定します。
    5
    (オプション) fileSizetimeout フィールドを指定して、uploadSpeedTestConfig オブジェクトを設定します。
    6
    csiVolumeSnapshotTestConfigs オブジェクトを設定します。
    7
    DPT CR 実行中に TLS 証明書の検証をスキップするには、true に設定します。
  2. 次のコマンドを実行して DPT CR を作成します。

    $ oc create -f <dpt_file_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    DPT マニフェストのファイル名を指定します。

検証

  1. 次のコマンドを実行して、DPT CR のフェーズが Complete であることを確認します。

    $ oc get dpt dpt-sample
    Copy to Clipboard Toggle word wrap

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

    NAME         PHASE      LASTTESTED   UPLOADSPEED(MBPS)   ENCRYPTION   VERSIONING   SNAPSHOTS    AGE
    dpt-sample   Complete   17m          546                 AES256       Enabled      2/2 passed   17m
    Copy to Clipboard Toggle word wrap

5.26.10.5. Azure オブジェクトストレージでデータ保護テストを実行する

Azure オブジェクトストレージで OADP を使用している場合は、シークレットオブジェクトの一部として Azure STORAGE_ACCOUNT_ID を指定する必要があります。Azure クラスターで DataProtectionTest (DPT) カスタムリソース (CR) を実行するには、次の手順に従います。

前提条件

  • cluster-admin ロールを持つユーザーとして Azure クラスターにログインしている。
  • OpenShift CLI (oc) がインストールされている。
  • OADP Operator がインストールされている。
  • バックアップを保存するためのバケットが設定されている。
  • 別の namespace で実行されている永続ボリューム要求 (PVC) を持つアプリケーションがある。

手順

  1. DPT 実行の失敗を回避するには、Azure storageAccount オブジェクトに Storage Blob Data Contributor ロールを追加します。以下のコマンドを実行します。

    $ az role assignment create \
    --assignee "$AZURE_CLIENT_ID" \
    --role "Storage Blob Data Contributor" \
    --scope "/subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP/providers/Microsoft.Storage/storageAccounts/$AZURE_STORAGE_ACCOUNT_ID"
    Copy to Clipboard Toggle word wrap
  2. ターミナルで、Azure パラメーターをエクスポートし、次の例に示すようにパラメーターを含むシークレット認証情報ファイルを作成します。

    Azure で DPT CR を実行するには、シークレット認証情報ファイルで STORAGE_ACCOUNT_ID パラメーターを指定する必要があります。

    AZURE_SUBSCRIPTION_ID=<subscription-id>
    AZURE_TENANT_ID=<tenant-id>
    AZURE_CLIENT_ID=<client-id>
    AZURE_CLIENT_SECRET=<client-secret>
    AZURE_RESOURCE_GROUP=<resource-group>
    AZURE_STORAGE_ACCOUNT_ID=<storage-account>
    Copy to Clipboard Toggle word wrap
  3. 次の例に示すように、Secret CR を作成します。

    $ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=<credentials_file_path>
    Copy to Clipboard Toggle word wrap
  4. 次の例に示す設定を使用して、DataProtectionApplication (DPA) CR を作成します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: ts-dpa
      namespace: openshift-adp
    spec:
      configuration:
        velero:
          defaultPlugins:
            - azure
            - openshift
      backupLocations:
        - velero:
            config:
              resourceGroup: oadp-....-b7q4-rg
              storageAccount: oadp...kb7q4
              subscriptionId: 53b8f5...fd54c8a
            credential:
              key: cloud
              name: cloud-credentials-azure 
    1
    
            provider: azure
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
    Copy to Clipboard Toggle word wrap
    1
    Secret オブジェクトの名前を指定します。この例では、名前は cloud-credentials-azure です。
  5. 次の例に示すように、バックアップストレージの場所 (BSL) の名前、VolumeSnapshotClass オブジェクト、および永続ボリューム要求の詳細を指定して、DPT CR を作成します。

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionTest
    metadata:
      name: dpt-sample
      namespace: openshift-adp
    spec:
      backupLocationName: <bsl_name> 
    1
    
      uploadSpeedTestConfig:
        fileSize: 40MB
        timeout: 120s
      csiVolumeSnapshotTestConfigs:
        - snapshotClassName: csi-azuredisk-vsc 
    2
    
          timeout: 90s
          volumeSnapshotSource:
            persistentVolumeClaimName: mysql-data 
    3
    
            persistentVolumeClaimNamespace: ocp-mysql 
    4
    
        - snapshotClassName: csi-azuredisk-vsc
          timeout: 120s
          volumeSnapshotSource:
            persistentVolumeClaimName: mysql-data1
            persistentVolumeClaimNamespace: ocp-mysql
    Copy to Clipboard Toggle word wrap
    1
    BSL の名前を指定します。
    2
    Azure スナップショットクラス名。
    3
    永続ボリューム要求の名前。
    4
    永続ボリューム要求 namespace の名前。
  6. DPT CR を実行して、スナップショットの準備状況を確認します。

5.26.10.6. DataProtectionTest カスタムリソースのトラブルシューティング

次の表を使用して、DataProtectionTest (DPT) カスタムリソース (CR) を実行するときに発生する一般的な問題をトラブルシューティングします。

Expand
表5.23 DPT CR トラブルシューティング
エラー理由ソリューション

DPT が InProgress 状態で停止している

バケットの認証情報またはバケットへのアクセス失敗

Secret オブジェクト、バケットの権限、およびログを確認します。

アップロードテストに失敗した

不正な Secret オブジェクトまたは S3 エンドポイント

BackupStorageLocation オブジェクトの設定とアクセスキーを確認します。

スナップショットテストが失敗する

CSI スナップショットコントローラーの設定が正しくありません

VolumeSnapshotClass オブジェクトの可用性と CSI ドライバーログを確認します。

バケットの暗号化またはバージョン管理が設定されていない

クラウドプロバイダーの制限

すべてのオブジェクトストレージプロバイダーがこれらのフィールドを一貫して公開するわけではありません。

5.26.11. must-gather ツールの使用

must-gather ツールを使用して、OADP カスタムリソースのログおよび情報を収集できます。must-gather データはすべてのカスタマーケースに添付する必要があります。

must-gather ツールはコンテナーであり、常に実行される訳ではありません。このツールは、must-gather コマンドを実行して起動した後、数分間のみ動作します。

5.26.11.1. must-gather ツールの使用

以下のオプションを指定して must-gather ツールを実行できます。オプションを使用するには、該当するオプションに対応するフラグを must-gather コマンドに追加します。

デフォルト設定
この設定は、OADP Operator がインストールされているすべての namespace の Pod ログ、OADP、および Velero カスタムリソース (CR) 情報を収集します。
Timeout
失敗した Backup CR が多数ある場合は、データ収集に長い時間がかかる可能性があります。タイムアウト値を設定することでパフォーマンスを向上させることができます。
非セキュアな TLS 接続
カスタム CA 証明書を使用する場合は、非セキュアな TLS 接続とともに must-gather ツールを使用します。

must-gather ツールは、収集した情報で Markdown 出力ファイルを生成します。Markdown ファイルはクラスターディレクトリーにあります。

サポートされるフラグの詳細は、次の例に示すように、must-gather ツールで help フラグを使用します。

$ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather -h
Copy to Clipboard Toggle word wrap

前提条件

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

手順

  1. must-gather データを保存するディレクトリーに移動します。
  2. 次のデータ収集オプションのいずれかに対して、oc adm must-gather コマンドを実行します。

    • must-gather ツールのデフォルト設定を使用するには、以下のコマンドを実行します。

      $ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5
      Copy to Clipboard Toggle word wrap
    • must-gather ツールで timeout フラグを使用するには、以下のコマンドを実行します。

      $ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --request-timeout 1m 
      1
      Copy to Clipboard Toggle word wrap
      1
      この例では、タイムアウトは 1 分です。
    • must-gather ツールで非セキュアな TLS 接続フラグを使用するには、以下のコマンドを実行します。

      $ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --skip-tls
      Copy to Clipboard Toggle word wrap
    • 非セキュアな TLS 接続と timeout フラグの組み合わせを must-gather ツールで使用するには、以下のコマンドを実行します。

      $ oc adm must-gather --image=registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5 -- /usr/bin/gather --request-timeout 15s --skip-tls 
      1
      Copy to Clipboard Toggle word wrap
      1
      この例では、タイムアウトは 15 秒です。デフォルトでは、--skip-tls フラグの値は false です。安全でない TLS 接続を許可するには、値を true に設定します。

検証

  1. Markdown 出力ファイルが次の場所に生成されていることを確認します: must-gather.local.89…​054550/registry.redhat.io/oadp/oadp-mustgather-rhel9:v1.5-sha256-0…​84/clusters/a4…​86/oadp-must-gather-summary.md
  2. Markdown プレビューワーでファイルを開き、Markdown ファイルで must-gather データを確認します。出力例は、以下のイメージを参照してください。この出力ファイルを Red Hat カスタマーポータル で作成したサポートケースにアップロードできます。

    図5.2 must-gather ツールのマークダウン出力の例

5.26.12. OADP モニタリング

OpenShift Container Platform モニタリングスタックを使用すると、ユーザーと管理者は次のタスクを効果的に実行できます。

  • クラスターを監視および管理する
  • ユーザーアプリケーションのワークロードパフォーマンスを分析する
  • クラスター上で実行されているサービスを監視する
  • イベントが発生した場合にアラートを受信する

5.26.12.1. OADP モニタリングの設定

OADP Operator は、OpenShift のモニタリングスタックによって提供される OpenShift ユーザーワークロードモニタリングを利用して、Velero サービスエンドポイントからメトリクスを取得します。モニタリングスタックを使用すると、ユーザー定義のアラートルールを作成したり、OpenShift メトリクスのクエリーフロントエンドを使用してメトリクスを照会したりできます。

ユーザーワークロードモニタリングを有効にすると、Grafana などの Prometheus 互換のサードパーティー UI を設定して使用し、Velero メトリクスを視覚化することができます。

メトリクスを監視するには、ユーザー定義プロジェクトの監視を有効にし、openshift-adp namespace に存在するすでに有効な OADP サービスエンドポイントからそのプロジェクトのメトリクスを取得するための ServiceMonitor リソースを作成する必要があります。

注記

Prometheus メトリクスに対する OADP サポートはベストエフォートで提供されており、完全にはサポートされていません。

モニタリングスタックの設定の詳細は、ユーザーワークロードモニタリングの設定 を参照してください。

前提条件

  • cluster-admin パーミッションを持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。
  • クラスター監視 config map が作成されました。

手順

  1. 次のコマンドを使用して、openshift-monitoring namespace の cluster-monitoring-config ConfigMap オブジェクトを編集します。

    $ oc edit configmap cluster-monitoring-config -n openshift-monitoring
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを使用して、data セクションの config.yaml フィールドで enableUserWorkload オプションを追加または有効にします。

    apiVersion: v1
    kind: ConfigMap
    data:
      config.yaml: |
        enableUserWorkload: true 
    1
    
    metadata:
    # ...
    Copy to Clipboard Toggle word wrap
    1
    このオプションを追加するか、true に設定します
  3. しばらく待ってから、openshift-user-workload-monitoring namespace で次のコンポーネントが稼働していることを確認し、ユーザーワークロードモニタリングのセットアップを確認します。

    $ oc get pods -n openshift-user-workload-monitoring
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                   READY   STATUS    RESTARTS   AGE
    prometheus-operator-6844b4b99c-b57j9   2/2     Running   0          43s
    prometheus-user-workload-0             5/5     Running   0          32s
    prometheus-user-workload-1             5/5     Running   0          32s
    thanos-ruler-user-workload-0           3/3     Running   0          32s
    thanos-ruler-user-workload-1           3/3     Running   0          32s
    Copy to Clipboard Toggle word wrap

  4. openshift-user-workload-monitoringuser-workload-monitoring-config ConfigMap が存在することを確認します。存在する場合、この手順の残りの手順はスキップしてください。

    $ oc get configmap user-workload-monitoring-config -n openshift-user-workload-monitoring
    Copy to Clipboard Toggle word wrap

    出力例

    Error from server (NotFound): configmaps "user-workload-monitoring-config" not found
    Copy to Clipboard Toggle word wrap

  5. ユーザーワークロードモニタリングの user-workload-monitoring-config ConfigMap オブジェクトを作成し、2_configure_user_workload_monitoring.yaml ファイル名に保存します。

    出力例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
    Copy to Clipboard Toggle word wrap

  6. 次のコマンドを使用して、2_configure_user_workload_monitoring.yaml ファイルを適用します。

    $ oc apply -f 2_configure_user_workload_monitoring.yaml
    configmap/user-workload-monitoring-config created
    Copy to Clipboard Toggle word wrap

5.26.12.2. OADP サービスモニターの作成

OADP は openshift-adp-velero-metrics-svc サービスを提供します。このサービスは Data Protection Application (DPA) の設定時に作成されます。ユーザーワークロードモニタリングのサービスモニターは、この定義されたサービスを参照する必要があります。サービスの詳細を取得するには、次の手順を実行します。

手順

  1. openshift-adp-velero-metrics-svc サービスが存在することを確認します。このサービスには、ServiceMonitor オブジェクトのセレクターとして使用される app.kubernetes.io/name=velero ラベルが含まれているはずです。

    $ oc get svc -n openshift-adp -l app.kubernetes.io/name=velero
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    openshift-adp-velero-metrics-svc   ClusterIP   172.30.38.244   <none>        8085/TCP   1h
    Copy to Clipboard Toggle word wrap

  2. 既存のサービスラベルと一致する ServiceMonitor YAML ファイルを作成し、そのファイルを 3_create_oadp_service_monitor.yaml として保存します。サービスモニターは openshift-adp-velero-metrics-svc サービスが存在する openshift-adp namespace に作成されます。

    ServiceMonitor オブジェクトの例

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        app: oadp-service-monitor
      name: oadp-service-monitor
      namespace: openshift-adp
    spec:
      endpoints:
      - interval: 30s
        path: /metrics
        targetPort: 8085
        scheme: http
      selector:
        matchLabels:
          app.kubernetes.io/name: "velero"
    Copy to Clipboard Toggle word wrap

  3. 3_create_oadp_service_monitor.yaml ファイルを適用します。

    $ oc apply -f 3_create_oadp_service_monitor.yaml
    Copy to Clipboard Toggle word wrap

    出力例

    servicemonitor.monitoring.coreos.com/oadp-service-monitor created
    Copy to Clipboard Toggle word wrap

検証

  • OpenShift Container Platform Web コンソールの Administrator パースペクティブを使用して、新しいサービスモニターが Up 状態であることを確認します。サービスモニターが Up 状態になるまで数分間待ちます。

    1. Observe Targets ページに移動します。
    2. Filter が選択されていないこと、または User ソースが選択されていることを確認し、Text 検索フィールドに openshift-adp と入力します。
    3. サービスモニターの Status のステータスが Up であることを確認します。

      図5.3 OADP のメトリクスターゲット

5.26.12.3. アラートルールの作成

OpenShift Container Platform モニタリングスタックは、アラートルールを使用して設定されたアラートを受信します。OADP プロジェクトのアラートルールを作成するには、ユーザーワークロードモニタリングで収集されたメトリクスの 1 つを使用します。

手順

  1. サンプルの OADPBackupFailing アラートを含む PrometheusRule YAML ファイルを作成し、4_create_oadp_alert_rule.yaml として保存します。

    OADPBackupFailing アラートのサンプル

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      name: sample-oadp-alert
      namespace: openshift-adp
    spec:
      groups:
      - name: sample-oadp-backup-alert
        rules:
        - alert: OADPBackupFailing
          annotations:
            description: 'OADP had {{$value | humanize}} backup failures over the last 2 hours.'
            summary: OADP has issues creating backups
          expr: |
            increase(velero_backup_failure_total{job="openshift-adp-velero-metrics-svc"}[2h]) > 0
          for: 5m
          labels:
            severity: warning
    Copy to Clipboard Toggle word wrap

    このサンプルでは、アラートは次の条件で表示されます。

    • 過去 2 時間において、失敗した新規バックアップの数が 0 よりも多く、その状態が少なくとも 5 分間持続した場合。
    • 失敗が最初に検知されてから 5 分未満の場合、アラートは Pending 状態になり、その後 Firing 状態に変わります。
  2. 4_create_oadp_alert_rule.yaml ファイルを適用して、openshift-adp namespace に PrometheusRule オブジェクトを作成します。

    $ oc apply -f 4_create_oadp_alert_rule.yaml
    Copy to Clipboard Toggle word wrap

    出力例

    prometheusrule.monitoring.coreos.com/sample-oadp-alert created
    Copy to Clipboard Toggle word wrap

検証

  • アラートがトリガーされた後は、次の方法でアラートを表示できます。

    • Developer パースペクティブで、Observe メニューを選択します。
    • Observe Alerting メニューの下の Administrator パースペクティブで、Filter ボックスの User を選択します。それ以外の場合、デフォルトでは Platform アラートのみが表示されます。

      図5.4 OADP のバックアップ失敗アラート

5.26.12.4. 利用可能なメトリクスのリスト

OADP によって提供される Velero メトリクスとその Types のリストは、次の表を参照してください。

Expand
表5.24 Velero メトリクス
メトリクス名説明

velero_backup_tarball_size_bytes

バックアップのサイズ (バイト単位)

ゲージ

velero_backup_total

既存のバックアップの現在の数

ゲージ

velero_backup_attempt_total

試行されたバックアップの合計数

Counter

velero_backup_success_total

成功したバックアップの合計数

Counter

velero_backup_partial_failure_total

部分的に失敗したバックアップの合計数

Counter

velero_backup_failure_total

失敗したバックアップの合計数

Counter

velero_backup_validation_failure_total

検証に失敗したバックアップの合計数

Counter

velero_backup_duration_seconds

バックアップの完了にかかる時間 (秒単位)

ヒストグラム

velero_backup_duration_seconds_bucket

メトリクス velero_backup_duration_seconds のヒストグラムにおけるバケットの観測回数の合計

Counter

velero_backup_duration_seconds_count

メトリクス velero_backup_duration_seconds の観測回数の合計

Counter

velero_backup_duration_seconds_sum

メトリクス velero_backup_duration_seconds の観測値の合計

Counter

velero_backup_deletion_attempt_total

試行されたバックアップ削除の合計数

Counter

velero_backup_deletion_success_total

成功したバックアップ削除の合計数

Counter

velero_backup_deletion_failure_total

失敗したバックアップ削除の合計数

Counter

velero_backup_last_successful_timestamp

最後にバックアップが正常に実行された時刻、秒単位の Unix タイムスタンプ

ゲージ

velero_backup_items_total

バックアップされたアイテムの総数

ゲージ

velero_backup_items_errors

バックアップ中に発生したエラーの合計数

ゲージ

velero_backup_warning_total

警告されたバックアップの総数

Counter

velero_backup_last_status

バックアップの最終ステータス。値 1 は成功、0 は失敗です。

ゲージ

velero_restore_total

現在の既存のリストアの数

ゲージ

velero_restore_attempt_total

試行された復元の合計数

Counter

velero_restore_validation_failed_total

検証に失敗したリストアの失敗の合計数

Counter

velero_restore_success_total

成功した復元の合計数

Counter

velero_restore_partial_failure_total

部分的に失敗したリストアの合計数

Counter

velero_restore_failed_total

失敗したリストアの合計数

Counter

velero_volume_snapshot_attempt_total

試行されたボリュームスナップショットの総数

Counter

velero_volume_snapshot_success_total

成功したボリュームスナップショットの総数

Counter

velero_volume_snapshot_failure_total

失敗したボリュームスナップショットの総数

Counter

velero_csi_snapshot_attempt_total

CSI が試行したボリュームスナップショットの合計数

Counter

velero_csi_snapshot_success_total

CSI が成功したボリュームスナップショットの総数

Counter

velero_csi_snapshot_failure_total

CSI で失敗したボリュームスナップショットの総数

Counter

5.26.12.5. Observe UI を使用したメトリクスの表示

OpenShift Container Platform Web コンソールでは、Administrator または Developer パースペクティブからメトリクスを表示できます。これには、openshift-adp プロジェクトへのアクセス権が必要です。

手順

  • Observe Metrics ページに移動します。

    • Developer パースペクティブを使用している場合は、次の手順に従います。

      1. Custom query を選択するか、Show PromQL リンクをクリックします。
      2. クエリーを入力し、Enter をクリックします。
    • Administrator パースペクティブを使用している場合は、テキストフィールドに式を入力し、Run Queries を選択します。

      図5.5 OADP のメトリクスクエリー

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat