Red Hat OpenShift Container Storage の管理

Red Hat OpenShift Container Storage 4.3

クラスターおよびストレージ管理者の手順

Red Hat Storage Documentation Team

概要

本書では、OpenShift Container Storage クラスターを管理する方法について説明します。

第1章 概要

OpenShift Container Storage の管理』は、管理者が Red Hat OpenShift Container Storage クラスターを管理する方法を理解するのに役立ちます。

ほとんどの管理タスクは単一リソースに重点を置くものです。本書は、管理者が変更するリソース別の章に分けられています。本書は以下の情報を提供します。

第2章 OpenShift Container Platform サービスのストレージの設定

OpenShift Container Storage を使用して、イメージレジストリー、モニタリング、およびロギングなどの OpenShift Container Platform サービスのストレージを提供できます。

これらのサービスのストレージを設定するプロセスは、OpenShift Container Storage デプロイメントで使用されるインフラストラクチャーによって異なります。

警告

これらのサービスに十分なストレージ容量があることを常に確認します。これらの重要なサービスのストレージの容量が不足すると、クラスターは動作しなくなり、これを回復することは非常に困難になります。

Red Hat は、これらのサービスのキュレーションおよび保持期間を短く設定することを推奨します。詳細は、OpenShift Container Platform ドキュメントの Curator の設定について、および Prometheus メトリクスデータの保持期間の変更について参照してください。

これらのサービスのストレージ領域が不足する場合は、Red Hat カスタマーサポートにお問い合わせください。

2.1. OpenShift Container Storage を使用するためのイメージレジストリーの設定

OpenShift Container Platform は、クラスター上の標準ワークロードとして実行されるコンテナーイメージレジストリーでビルドを提供します。通常、レジストリーはクラスター上にビルドされたイメージの公開ターゲットとして、またクラスター上で実行されるワークロードのイメージのソースとして使用されます。

このセクションの手順に従って、OpenShift Container Storage をコンテナーイメージレジストリーのストレージとして設定します。AWS では、レジストリーのストレージを変更する必要はありません。ただし vSphere プラットフォームの場合は、OpenShift Container Storage 永続ボリュームに対してストレージを変更することが推奨されます。

警告

このプロセスでは、データを既存イメージレジストリーから新規イメージレジストリーに移行しません。コンテナーイメージが既存レジストリーにすでにある場合、このプロセスを完了する前にレジストリーのバックアップを作成し、このプロセスが完了したらイメージを再登録します。

前提条件

  • OpenShift Web コンソールへの管理者アクセスがある。
  • OpenShift Container Storage Operator が openshift-storage namespace にインストールされ、実行されている。OpenShift Web コンソールで、OperatorsInstalled Operators をクリックしてインストールされた Operator を表示します。
  • イメージレジストリー Operator が openshift-image-registry namespace にインストールされ、実行されている。OpenShift Web コンソールで、AdministrationCluster SettingsCluster Operators をクリックしてクラスター Operator を表示します。
  • ocs-storagecluster-cephfs ストレージクラスが利用可能である。OpenShift Web コンソールで StorageStorage Classes をクリックし、利用可能なストレージクラスを表示します。

手順

  1. 使用するイメージレジストリーの Persistent Volume Claim(永続ボリューム要求、PVC)を作成します。

    1. OpenShift Web コンソールで、StoragePersistent Volume Claims をクリックします。
    2. Projectopenshift-image-registry に設定します。
    3. Create Persistent Volume Claim をクリックします。

      1. ocs-storagecluster-cephfsStorage Class を指定します。
      2. Persistent Volume Claim(永続ボリューム要求、PVC) の Name (名前) を指定します (例: ocs4registry)。
      3. Shared Access (RWX)Access Mode (アクセスモード) を指定します。
      4. 100 GB 以上の Size (サイズ) を指定します。
      5. Create をクリックします。

        新規 Persistent Volume Claim(永続ボリューム要求、PVC)のステータスが Bound と表示されるまで待機します。

  2. クラスターのイメージレジストリーを、新規の Persistent Volume Claim(永続ボリューム要求、PVC)を使用するように設定します。

    1. AdministrationCustom Resource Definitions をクリックします。
    2. imageregistry.operator.openshift.io グループと関連付けられた Config カスタムリソース定義をクリックします。
    3. Instances タブをクリックします。
    4. クラスターインスタンスの横にある Action Menu (⋮)Edit Config をクリックします。
    5. 新規 Persistent Volume Claim(永続ボリューム要求、PVC)をイメージレジストリーの永続ストレージとして追加します。

      1. 以下を spec: の下に追加し、必要な場合は既存の storage: セクションを置き換えます。

          storage:
            pvc:
              claim: <new-pvc-name>

        以下は例になります。

          storage:
            pvc:
              claim: ocs4registry
      2. Save をクリックします。
  3. 新規設定が使用されていることを確認します。

    1. WorkloadsPods をクリックします。
    2. Projectopenshift-image-registry に設定します。
    3. 新規の image-registry-* Pod が Running のステータスと共に表示され、以前の image-registry-* Pod が終了していることを確認します。
    4. 新規の image-registry-* Pod をクリックし、Pod の詳細を表示します。
    5. Volumes までスクロールダウンし、registry-storage ボリュームに新規 Persistent Volume Claim (永続ボリューム要求、PVC) に一致する Type があることを確認します (例: ocs4registry)。

2.2. OpenShift Container Storage を使用するためのモニタリングの設定

OpenShift Container Storage は、Prometheus および AlertManager で構成されるモニタリングスタックを提供します。

このセクションの手順に従って、OpenShift Container Storage をモニタリングスタックのストレージとして設定します。

重要

ストレージ領域が不足すると、モニタリングは機能しません。モニタリング用に十分なストレージ容量があることを常に確認します。

Red Hat は、このサービスの保持期間を短く設定することを推奨します。詳細は、OpenShift Container Platform ドキュメントの「永続ストレージの設定」の Prometheus メトリクスデータの保持期間の設定 についてのサブセクションを参照してください。

前提条件

  • OpenShift Web コンソールへの管理者アクセスがある。
  • OpenShift Container Storage Operator が openshift-storage namespace にインストールされ、実行されている。OpenShift Web コンソールで、OperatorsInstalled Operators をクリックしてインストールされた Operator を表示します。
  • モニタリング Operator は openshift-monitoring namespace にインストールされ、実行されている。OpenShift Web コンソールで、AdministrationCluster SettingsCluster Operators をクリックしてクラスター Operator を表示します。
  • ocs-storagecluster-ceph-rbd ストレージクラスが利用可能である。OpenShift Web コンソールで StorageStorage Classes をクリックし、利用可能なストレージクラスを表示します。

手順

  1. OpenShift Web コンソールで WorkloadsConfig Maps に移動します。
  2. Project ドロップダウンを openshift-monitoring に設定します。
  3. Create Config Map をクリックします。
  4. 以下の例を使用して新規の openshift-monitoring-config Config Map を定義します。

    山括弧 (<, >) 内の内容を独自の値に置き換えます (例: retention: 24h または storage: 40Gi)。

    サンプル openshift-monitoring-config Config Map

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
          prometheusK8s:
            retention: <time to retain monitoring files, e.g. 24h>
            volumeClaimTemplate:
              metadata:
                name: ocs-prometheus-claim
              spec:
                storageClassName: ocs-storagecluster-ceph-rbd
                resources:
                  requests:
                    storage: <size of claim, e.g. 40Gi>
          alertmanagerMain:
            volumeClaimTemplate:
              metadata:
                name: ocs-alertmanager-claim
              spec:
                storageClassName: ocs-storagecluster-ceph-rbd
                resources:
                  requests:
                    storage: <size of claim, e.g. 40Gi>

  5. Create をクリックして Config Map を保存し、作成します。

検証手順

  1. Persistent Volume Claim (永続ボリューム要求、PVC) が Pod にバインドされていることを確認します。

    1. StoragePersistent Volume Claims に移動します。
    2. Project ドロップダウンを openshift-monitoring に設定します。
    3. 5 つの Persistent Volume Claim(永続ボリューム要求、PVC)が Bound (バインド)の状態で表示され、3 つの alertmanager-main-* Pod および 2 つの prometheus-k8s-* Pod に割り当てられていることを確認します。

      作成済みのバインドされているストレージのモニタリング

      openshift-monitoring プロジェクトにバインドされる Persistent Volume Claim(永続ボリューム要求、PVC)のある 5 つの Pod を示す OpenShift Web コンソールのスクリーンショット

  2. 新規の alertmanager-main-* Pod が Running 状態で表示されることを確認します。

    1. 新規の alertmanager-main-* Pod をクリックし、Pod の詳細を表示します。
    2. Volumes にスクロールダウンし、ボリュームに新規 Persistent Volume Claim(永続ボリューム要求、PVC)のいずれかに一致する Typeocs-alertmanager-claim があることを確認します (例: ocs-alertmanager-claim-alertmanager-main-0)。

      alertmanager-main-* Pod に割り当てられた Persistent Volume Claim(永続ボリューム要求、PVC)

      altermanager Pod に割り当てられた Persistent Volume Claim (永続ボリューム要求、PVC) を表示する OpenShift Web コンソールのスクリーンショット

  3. 新規 prometheus-k8s-* Pod が Running 状態で表示されることを確認します。

    1. 新規 prometheus-k8s-* Pod をクリックし、Pod の詳細を表示します。
    2. Volumes までスクロールダウンし、ボリュームに新規の Persistent Volume Claim (永続ボリューム要求、PVC) のいずれかに一致する Typeocs-prometheus-claim があることを確認します (例: ocs-prometheus-claim-prometheus-k8s-0)。

      prometheus-k8s-* Pod に割り当てられた Persistent Volume Claim(永続ボリューム要求、PVC)

      Prometheus Pod に割り当てられた Persistent Volume Claim(永続ボリューム要求、PVC)を示す OpenShift Web コンソールのスクリーンショット

2.3. OpenShift Container Storage のクラスターロギング

クラスターロギングをデプロイして、各種の OpenShift Container Platform サービスについてのログを集計できます。クラスターロギングのデプロイ方法については、「クラスターロギングのデプロイ」を参照してください。

OpenShift Container Platform の初回のデプロイメントでは、OpenShift Container Storage はデフォルトで設定されず、OpenShift Container Platform クラスターはノードから利用可能なデフォルトストレージのみに依存します。OpenShift ロギング (ElasticSearch) のデフォルト設定を OpenShift Container Storage で対応されるように編集し、OpenShift Container Storage でサポートされるロギング (Elasticsearch) を設定できます。

重要

これらのサービスに十分なストレージ容量があることを常に確認します。これらの重要なサービスのストレージ領域が不足すると、ロギングアプリケーションは動作しなくなり、これを回復することは非常に困難になります。

Red Hat は、これらのサービスのキュレーションおよび保持期間を短く設定することを推奨します。詳細は、OpenShift Container Platform ドキュメントでCurator の設定について参照してください。

これらのサービスのストレージ領域が不足している場合は、Red Hat カスタマーポータルにお問い合わせください。

2.3.1. 永続ストレージの設定

ストレージクラス名およびサイズパラメーターを使用して、 Elasticsearch クラスターの永続ストレージクラスおよびサイズを設定できます。Cluster Logging Operator は、これらのパラメーターに基づいて、Elasticsearch クラスターの各データノードについて Persistent Volume Claim (永続ボリューム要求、PVC)を作成します。以下は例になります。

spec:
    logStore:
      type: "elasticsearch"
      elasticsearch:
        nodeCount: 3
        storage:
          storageClassName: "ocs-storagecluster-ceph-rbd”
          size: "200G"

この例では、クラスター内の各データノードが、200GiBocs-storagecluster-ceph-rbd ストレージを要求する Persistent Volume Claim (永続ボリューム要求、PVC) にバインドされるように指定します。それぞれのプライマリーシャードは単一のレプリカによってサポートされます。シャードのコピーはすべてのノードにレプリケートされ、常に利用可能となり、冗長性ポリシーにより 2 つ以上のノードが存在する場合にコピーを復元できます。Elasticsearch レプリケーションポリシーについての詳細は、「 クラスターロギングのデプロイおよび設定について」に記載の Elasticsearch レプリケーションポリシーを参照してください。

注記

ストレージブロックを省略すると、デプロイメントはデフォルトのストレージでサポートされます。以下は例になります。

spec:
    logStore:
      type: "elasticsearch"
      elasticsearch:
        nodeCount: 3
        storage: {}

詳細は、「クラスターロギングの設定」を参照してください。

2.3.2. OpenShift Container Storage を使用するためのクラスターロギングの設定

このセクションの手順に従って、OpenShift Container Storage を OpenShift クラスターロギングのストレージとして設定します。

注記

OpenShift Container Storage でロギングを初めて設定する際に、すべてのログを取得できます。ただし、ロギングをアンインストールしてから再インストールすると、古いログが削除され、新しいログのみが処理されます。

前提条件

  • OpenShift Web コンソールへの管理者アクセスがある。
  • OpenShift Container Storage Operator が openshift-storage namespace にインストールされ、実行されている。
  • Cluster Logging Operator が openshift-logging namespace にインストールされ、実行されている。

手順

  1. OpenShift Web コンソールの左側のペインから Administration → Custom Resource Definitions をクリックします。
  2. Custom Resource Definitions ページで、ClusterLogging をクリックします。
  3. Custom Resource Definition Overview ページで、Actions メニューから View Instances を選択するか、または Instances タブをクリックします。
  4. Cluster Logging ページで、Create Cluster Logging をクリックします。

    データを読み込むためにページを更新する必要がある場合があります。

  5. YAML で、コードを以下に置き換えます。

    apiVersion: "logging.openshift.io/v1"
    kind: "ClusterLogging"
    metadata:
      name: "instance"
      namespace: "openshift-logging"
    spec:
      managementState: "Managed"
      logStore:
        type: "elasticsearch"
        elasticsearch:
          nodeCount: 3
          storage:
            storageClassName: ocs-storagecluster-ceph-rbd
            size: 200G
          redundancyPolicy: "SingleRedundancy"
      visualization:
        type: "kibana"
        kibana:
          replicas: 1
      curation:
        type: "curator"
        curator:
          schedule: "30 3 * * *"
      collection:
        logs:
          type: "fluentd"
          fluentd: {}
  6. Save をクリックします。

検証手順

  1. Persistent Volume Claim(永続ボリューム要求、PVC)が elasticsearch Pod にバインドされていることを確認します。

    1. StoragePersistent Volume Claims に移動します。
    2. Project ドロップダウンを openshift-logging に設定します。
    3. Persistent Volume Claim(永続ボリューム要求、PVC)が elasticsearch-* Pod に割り当てられ、 Bound (バインド)の状態で表示されることを確認します。

      図2.1 作成済みのバインドされたクラスターロギング

      Elasticsearch Pod に割り当てられる、バインド状態の Persistent Volume Claim(永続ボリューム要求、PVC)のスクリーンショット
  2. 新規クラスターロギングが使用されていることを確認します。

    1. Workload → Pods をクリックします。
    2. プロジェクトを openshift-logging に設定します。
    3. 新規の elasticsearch-* Pod が Running 状態で表示されることを確認します。
    4. 新規の elasticsearch-* Pod をクリックし、Pod の詳細を表示します。
    5. Volumes までスクロールダウンし、elasticsearch ボリュームに新規 Persistent Volume Claim (永続ボリューム要求、PVC) に一致する Type があることを確認します (例: elasticsearch-elasticsearch-cdm-9r624biv-3)。
    6. Persistent Volume Claim(永続ボリューム要求、PVC)の名前をクリックし、PersistenVolumeClaim Overview ページでストレージクラス名を確認します。
注記

Elasticsearch Pod に割り当てられる PV の詳細シナリオを回避するために、キュレーターの時間を短く設定して使用するようにしてください。

Curator を、保持設定に基づいて Elasticsearch データを削除するように設定できます。以下の 5 日間のインデックスデータの保持期間をデフォルトとして設定することが推奨されます。

config.yaml: |
    openshift-storage:
      delete:
        days: 5

詳細は、「Elasticsearch データのキュレーション」を参照してください。

注記

Persistent Volume Claim(永続ボリューム要求、PVC)がサポートするクラスターロギングをアンインストールするには、クラスターロギング Operator の OpenShift Container Storage からの削除についての手順を使用します。

第3章 OpenShift Container Storage を使用した OpenShift Container Platform アプリケーションのサポート

OpenShift Container Platform のインストール時に OpenShift Container Storage を直接インストールすることはできません。ただし、Operator Hub を使用して OpenShift Container Platform を既存の OpenShift Container Platform にインストールし、OpenShift Container Platform アプリケーションを OpenShift Container Storage でサポートされるように設定することができます。

前提条件

  • OpenShift Container Platform がインストールされ、OpenShift Web コンソールへの管理者アクセスがある。
  • OpenShift Container Storage が openshift-storage namespace にインストールされ、実行されている。

手順

  1. OpenShift Web コンソールで、以下のいずれかを実行します。

    • Workloads → Deployments をクリックします。

      Deployments ページで、以下のいずれかを実行できます。

      • 既存のデプロイメントを選択し、Action メニュー (⋮) から Add Storage オプションをクリックします。
      • 新規デプロイメントを作成してからストレージを追加します。

        1. Create Deployment をクリックして新規デプロイメントを作成します。
        2. 要件に応じて YAML を編集し、デプロイメントを作成します。
        3. Create をクリックします。
        4. ページ右上の Actions ドロップダウンメニューから Add Storage を選択します。
    • Workloads → Deployment Configs をクリックします。

      Deployment Configs ページで、以下のいずれかを実行できます。

      • 既存のデプロイメントを選択し、Action メニュー (⋮) から Add Storage オプションをクリックします。
      • 新規デプロイメントを作成してからストレージを追加します。

        1. Create Deployment Config をクリックし、新規デプロイメントを作成します。
        2. 要件に応じて YAML を編集し、デプロイメントを作成します。
        3. Create をクリックします。
        4. ページ右上の Actions ドロップダウンメニューから Add Storage を選択します。
  2. Add Storage ページで、以下のオプションのいずれかを選択できます。

    • Use existing claim オプションをクリックし、ドロップダウンリストから適切な PVC を選択します。
    • Create new claim オプションをクリックします。

      1. Storage Class ドロップダウンリストから ocs-storagecluster-ceph-rbd または ocs-storagecluster-cephfs ストレージクラスを選択します。
      2. Persistent Volume Claim (永続ボリューム要求、PVC) の名前を指定します。
      3. ReadWriteOnce (RWO) または ReadWriteMany (RWX) アクセスモードを選択します。

        注記

        ReadOnlyMany (ROX) はサポートされないため、非アクティブになります。

      4. 必要なストレージ容量のサイズを選択します。

        注記

        Persistent Volume Claim(永続ボリューム要求、PVC)の作成後にストレージ容量のサイズを変更することはできません。

  3. コンテナー内のマウントパスボリュームのマウントパスとサブパス(必要な場合)を指定します。
  4. Save をクリックします。

検証手順

  1. 設定に応じて、以下のいずれかを実行します。

    • Workloads → Deployments をクリックします。
    • Workloads → Deployment Configs をクリックします。
  2. 必要に応じてプロジェクトを設定します。
  3. ストレージを追加したデプロイメントをクリックして、デプロイメントの詳細を表示します。
  4. Volumes までスクロールダウンし、デプロイメントに、割り当てた Persistent Volume Claim(永続ボリューム要求、PVC)に一致する Type があることを確認します。
  5. Persistent Volume Claim(永続ボリューム要求、PVC)の名前をクリックし、PersistenVolumeClaim Overview ページでストレージクラス名を確認します。

第4章 ストレージノードのスケーリング

OpenShift Container Storage のストレージ容量をスケーリングするには、以下のいずれかを実行できます。

  • ストレージノードのスケールアップ: 既存の Red Hat OpenShift Container Storage ワーカーノードに対してストレージ容量を追加します。
  • ストレージノードのスケールアウト: ストレージ容量を含む新規ワーカーノードを追加します。

4.1. ストレージノードのスケーリングの要件

ストレージノードをスケーリングする前に、以下のセクションを参照して、特定の Red Hat OpenShift Container Storage インスタンスのノード要件を把握してください。

警告

常にストレージ容量が十分にあることを確認してください。

ストレージが完全に一杯になると、容量を追加したり、ストレージからコンテンツを削除したり、コンテンツを移動して領域を解放することはできません。一杯になったストレージを回復することは容易ではありません。

容量アラートは、クラスターストレージ容量が合計容量の 75%(ほぼ一杯)および 85% (一杯) になると発行されます。容量についての警告に常に迅速に対応し、ストレージを定期的に確認して、ストレージ領域が不足しないようにします。

ストレージ領域が不足する場合は、Red Hat カスタマーポータルにお問い合わせください。

4.1.1. Red Hat OpenShift Container Storage のサポートされるデプロイメント

  • ユーザーによってプロビジョニングされるインフラストラクチャー:

    • Amazon Web Services (AWS)
    • VMware
    • ベアメタル (テクノロジープレビュー)
  • インストーラーでプロビジョニングされるインフラストラクチャー:

    • Amazon Web Services (AWS)

4.2. ストレージ容量のスケールアップ

デプロイメントのタイプに応じて、以下のいずれかの手順を選択してストレージ容量をスケールアップできます。

4.2.1. AWS または VMware インフラストラクチャーの OpenShift Container Storage ノードへの容量の追加によるストレージのスケールアップ

以下の手順を使用して、設定された Red Hat OpenShift Container Storage ワーカーノードにストレージ容量を追加し、パフォーマンスを強化します。

前提条件

  • 実行中の OpenShift Container Storage Platform
  • OpenShift Web コンソールの管理者権限

手順

  1. OpenShift Web コンソールに移動します。
  2. 左側のナビゲーションバーの Operators をクリックします。
  3. Installed Operators を選択します。
  4. ウィンドウで、OpenShift Container Storage Operator をクリックします。

    ocs installed operators
  5. 上部のナビゲーションバーで、右にスクロールし、Storage Cluster タブをクリックします。

    OCS Storage Cluster の概要
  6. 表示されるリストには 1 つの項目のみが含まれます。右端の (⋮) をクリックして、オプションメニューを拡張します。
  7. オプションメニューから Add Capacity を選択します。

    OCS の容量追加ダイアログメニュー

    ダイアログボックスから、要求される追加容量およびストレージクラスを設定できます。Add capacity には、インストール時に選択された容量が表示され、容量はこの増分値でのみ追加できます。AWS では、ストレージクラスは gp2 に設定する必要があります。VMWare では、ストレージクラスは thin に設定する必要があります。

    注記

    効果的にプロビジョニングされる容量については、OpenShift Container Storage はレプリカ数の 3 を使用するため、Requested Capacity フィールドに入力する値の 3 倍の値にします。

  8. 設定が終了したら、Add をクリックします。Ready になるまでストレージクラスターのステータスは表示されません。Ready 状態であることを確認した後に、2 分ほど待機する必要がある場合があります。

検証手順

  1. DashboardsOCS PV タブに移動してから、Capacity breakdown カードをチェックします。

    ocs の容量の追加による拡張の確認
  2. 容量は選択に応じて増大することに注意してください。
重要

OpenShift Container Storage 4.2 の時点では、OSD またはノードの縮小によるクラスターの削減はサポートされていません。

4.2.2. ローカルストレージデバイスを使用した OpenShift Container Storage ノードへの容量の追加によるストレージのスケールアップ

以下の手順を使用して、ベアメタル、Amazon EC2 (ストレージ最適化 i3en.2xlarge)、および VMware インフラストラクチャーでローカルストレージベースの OpenShift Container Storage ワーカーノードにストレージ容量(追加のストレージデバイス)を追加します。

重要

ベアメタル、Amazon EC2 (ストレージ最適化 i3en.2xlarge) でのストレージのスケールアップはテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

注記

Amazon EC2(ストレージ最適化: i3en.2xlarge) インフラストラクチャーでは、利用可能な両方の NVMe デバイスを使用してデプロイメントが実行されるため、ノードを追加することが容量を追加するための唯一のオプションになります。

前提条件

  • OpenShift Container Platform (OCP) クラスターにログインしている必要があります。
  • ローカルストレージ Operator がインストールされている必要があります。詳細は、ローカルストレージ Operator のインストールについて参照してください。

手順

  1. OpenShift Container Storage がインストールされている OpenShift Container Platform ノードにストレージ容量を追加するには、(ワーカーノードあたり 1 つ以上のデバイスを追加する 場合に) 追加する必要のある利用可能なデバイスの一意の by-id 識別子を検索する必要があります。詳細は、利用可能なストレージデバイスの検索について参照してください。

    注記

    このプロセスを、ストレージを追加する既存ノードのすべて (3 ノード以上) に対して実行するようにしてください。

    OpenShift Storage Container ラベルをノードセレクターおよび by-id デバイス識別子として使用する LocalVolume CR local-storage-block-expand.yaml の例:

    apiVersion: local.storage.openshift.io/v1
    kind: LocalVolume
    metadata:
      name: local-block
      namespace: local-storage
    spec:
      nodeSelector:
        nodeSelectorTerms:
        - matchExpressions:
            - key: cluster.ocs.openshift.io/openshift-storage
              operator: In
              values:
              - ""
      storageClassDevices:
        - storageClassName: localblock
          volumeMode: Block
          devicePaths:
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS10382E5D7441494EC   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS60382E5D7441494EC   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS1F45C01D7E84FE3E9   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS6F45C01D7E84FE3E9   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS136BC945B4ECB9AE4   # <-- modify this line
            - /dev/disk/by-id/nvme-Amazon_EC2_NVMe_Instance_Storage_AWS636BC945B4ECB9AE4   # <-- modify this line

    この CR に by-id を使用する新規デバイスが追加されていることを確認できます。各デバイスは、3 つのワーカーノードのいずれかで nvme1n1 にマップされます。

    • nvme-Amazon_EC2_NVMe_Instance_Storage_AWS60382E5D7441494EC
    • nvme-Amazon_EC2_NVMe_Instance_Storage_AWS6F45C01D7E84FE3E9
    • nvme-Amazon_EC2_NVMe_Instance_Storage_AWS636BC945B4ECB9AE4
  2. LocalVolume CR を作成します。

    oc apply -f local-storage-block-expand.yaml

    出力例:

    localvolume.local.storage.openshift.io/local-block configured
  3. localblock で PV を表示します。

    local-pv-1d63db9e   1769Gi     RWO            Delete           Available           localblock              33s
    local-pv-1eb9da0a   1769Gi     RWO            Delete           Available           localblock              25s
    local-pv-31021a83   1769Gi     RWO            Delete           Available           localblock              48s
    ...

    さらに 3 つの利用可能な PV を StorageCluster に追加する必要があります。

  4. ストレージ容量を追加するには、StorageDeviceSetscount1 から 2 に変更します。

    gp2 および localblock ストレージクラスを使用する StorageCluster CR cluster-service-AWS-expand.yaml の例:

    apiVersion: ocs.openshift.io/v1
    kind: StorageCluster
    metadata:
      name: ocs-storagecluster
      namespace: openshift-storage
    spec:
      manageNodes: false
      monPVCTemplate:
        spec:
          accessModes:
          - ReadWriteOnce
          resources:
            requests:
              storage: 10Gi
          storageClassName: gp2
          volumeMode: Filesystem
      storageDeviceSets:
      - count: 2   # <-- modify count to 2
        dataPVCTemplate:
          spec:
            accessModes:
            - ReadWriteOnce
            resources:
              requests:
                storage: 1
            storageClassName: localblock
            volumeMode: Block
        name: ocs-deviceset
        placement: {}
        portable: false
        replica: 3
        resources: {}
    重要

    storageDeviceSetsstorage サイズは raw ブロックデバイスのサイズ以下である必要があります。この要件を満たすには、値を 1 に設定できます。

  5. StorageCluster CR を作成します。

    oc apply -f cluster-service-AWS-expand.yaml

    出力例:

    storagecluster.ocs.openshift.io/ocs-storagecluster configured
  6. Pod を表示します。3 つ以上の OSD Pod (osd-3、osd-4、および osd-5) と、3 つ以上の osd-prepare Pod が必要になります。

    oc get pods -n openshift-storage | grep 'ceph-osd'

    出力例:

    rook-ceph-osd-3-568d8797b6-j5xqx                                  1/1     Running     0          14m
    rook-ceph-osd-4-cc4747fdf-5glgl                                   1/1     Running     0          14m
    rook-ceph-osd-5-94c46bbcc-tb7pw                                   1/1     Running     0          14m
    ...
    rook-ceph-osd-prepare-ocs-deviceset-0-1-mcmlv-qmn4r               0/1     Completed   0          14m
    rook-ceph-osd-prepare-ocs-deviceset-1-1-tjh2d-fl5zc               0/1     Completed   0          14m
    rook-ceph-osd-prepare-ocs-deviceset-2-1-nqlkg-x9wdn               0/1     Completed   0          14m

検証手順

OpenShift Container Storage インストールの検証について参照してください。

4.3. ストレージ容量のスケールアウト

ストレージ容量をスケールアウトするには、以下の手順を実行する必要があります。

  • 新規ノードを追加します。
  • 新規ノードが正常に追加されたことを確認します。
  • ストレージ容量をスケールアップします。

4.3.1. ノードの追加

既存のワーカーノードがサポートされる最大 OSD (初期設定で選択される容量の 3 OSD の増分) で実行されている場合には、ストレージの容量を増やすためにノードを追加できます。

デプロイメントのタイプに応じて、以下のいずれかの手順を選択してストレージノードを追加できます。

4.3.1.1. AWS のインストーラーでプロビジョニングされるインフラストラクチャーへのノードの追加

前提条件

  • OpenShift Container Platform (OCP) クラスターにログインしている必要があります。

手順

  1. ComputeMachine Sets に移動します。
  2. ノードを追加する必要のあるマシンセットで、Edit Count を選択します。
  3. ノード数を追加し、Save をクリックします。
  4. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  5. OpenShift Container Storage ラベルを新規ノードに適用します。

    1. 新規ノードについて、Action menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage='' を追加し、 Save をクリックします。
注記

異なるゾーンのそれぞれに 3 つのノードを追加することが推奨されます。3 つのノードを追加して、それらすべてのノードに対してこの手順を実行する必要があります。

検証手順

新規ノードが追加されたことを確認するには、「新規ノードの追加の確認」を参照してください。

4.3.1.2. AWS または VMware のユーザーによってプロビジョニングされるインフラストラクチャーへのノードの追加

前提条件

  • OpenShift Container Platform (OCP) クラスターにログインしている必要があります。

手順

  1. AWS のユーザーによってプロビジョニングされるインフラストラクチャーまたは VMware のユーザーによってプロビジョニングされるインフラストラクチャーにノードを追加するかどうかに応じて、以下のそれぞれの手順を実行します。

  2. Pending 状態の OpenShift Container Storage に関連する証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
  3. 新規ノードに必要なすべての OpenShift Container Storage CSR を承認します。

    $ oc adm certificate approve <Certificate_Name>
  4. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  5. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェースを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
      注記

      異なるゾーンのそれぞれに 3 つのノードを追加することが推奨されます。3 つのノードを追加して、それらすべてのノードに対してこの手順を実行する必要があります。

検証手順

新規ノードが追加されたことを確認するには、「新規ノードの追加の確認」を参照してください。

4.3.1.3. ローカルストレージデバイスを使用したノードの追加

以下の手順を使用して、ベアメタル、Amazon EC2 (ストレージ最適化: i3en.2xlarge)、および VMware インフラストラクチャーにノードを追加します。

重要

ベアメタル、Amazon EC2、および VMware のストレージノードのスケーリングはテクノロジープレビュー機能です。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様は機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。

前提条件

  • OpenShift Container Platform (OCP) クラスターにログインしている必要があります。
  • 3 つの OpenShift Container Platform ワーカーノードが必要です。それらのノードには、元の OCS StorageCluster の作成に使用されたものと同じストレージタイプおよびサイズ (例: 2TB NVMe ドライブ) が割り当てられている必要があります。

手順

  1. ベアメタル、Amazon EC2(ストレージ最適化: i3en.2xlarge)、または VMware インフラストラクチャーにノードを追加するかどうかに応じて、以下の手順を実行します。

  2. Pending 状態の OpenShift Container Storage に関連する証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
  3. 新規ノードに必要なすべての OpenShift Container Storage CSR を承認します。

    $ oc adm certificate approve <Certificate_Name>
  4. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  5. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェースを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
      注記

      異なるゾーンのそれぞれに 3 つのノードを追加することが推奨されます。3 つのノードを追加して、それらすべてのノードに対してこの手順を実行する必要があります。

  6. これらのワーカーノードで利用可能なローカルストレージデバイスを OpenShift Container Storage StorageCluster に追加します。ローカルストレージデバイスを追加し、OSD の数を増やすには、ローカルストレージデバイスを使用した容量の OpenShift Container Storage ノードへの追加によるストレージのスケールアップについてのセクションを参照してください。

4.3.2. 新規ノードの追加の確認

  1. 以下のコマンドを実行して、新規ノードが出力にあることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 永続ストレージダッシュボードを使用して OpenShift Container Storage クラスターの正常性を確認します。

    1. OpenShift Web コンソールの左側のペインで Home → Dashboards をクリックし、 OCS PV タブをクリックします。
    2. Status カードで、クラスターの正常性について緑色のチェックアイコンが表示されていることを確認します。

4.3.3. ストレージ容量のスケールアップ

ストレージの容量をスケールアップするには、容量の追加によるストレージのスケールアップについて参照してください。

第5章 Persistent Volume Claim (永続ボリューム要求、PVC) の管理

重要

PVC の拡張は OpenShift Container Storage 4.2 がサポートする PVC ではサポートされません。

5.1. OpenShift Container Platform を使用するためのアプリケーション Pod の設定

このセクションの手順に従って、OpenShift Container Storage をアプリケーション Pod のストレージとして設定します。

前提条件

  • OpenShift Web コンソールへの管理者アクセスがある。
  • OpenShift Container Storage Operator が openshift-storage namespace にインストールされ、実行されている。OpenShift Web コンソールで、OperatorsInstalled Operators をクリックしてインストールされた Operator を表示します。
  • OpenShift Container Storage が提供するデフォルトのストレージクラスが利用可能である。OpenShift Web コンソールで StorageStorage Class をクリックし、デフォルトのストレージクラスを表示します。

手順

  1. 使用するアプリケーションの Persistent Volume Claim(永続ボリューム要求、PVC)を作成します。

    1. OpenShift Web コンソールで、StoragePersistent Volume Claims をクリックします。
    2. アプリケーション Pod の Project を設定します。
    3. Create Persistent Volume Claim をクリックします。

      1. OpenShift Container Storage によって提供される Storage Class を指定します。
      2. PVC Name (例: myclaim) を指定します。
      3. 必要な Access Mode を選択します。
      4. アプリケーション要件に応じて Size を指定します。
      5. Create をクリックし、PVC のステータスが Bound になるまで待機します。
  2. 新規または既存のアプリケーション Pod を新規 PVC を使用するように設定します。

    • 新規アプリケーション Pod の場合、以下の手順を実行します。

      1. WorkloadsPods をクリックします。
      2. 新規アプリケーション Pod を作成します。
      3. spec: セクションで、volume: セクションを追加し、新規 PVC をアプリケーション Pod のボリュームとして追加します。

        volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>

        以下は例になります。

        volumes:
          - name: mypd
            persistentVolumeClaim:
              claimName: myclaim
    • 既存のアプリケーション Pod の場合、以下の手順を実行します。

      1. WorkloadsDeployment Configs をクリックします。
      2. アプリケーション Pod に関連付けられた必要なデプロイメント設定を検索します。
      3. Action menu (⋮)Edit Deployment Config をクリックします。
      4. spec: セクションで、volume: セクションを追加し、新規 PVC をアプリケーション Pod のボリュームとして追加し、Save をクリックします。

        volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>

        以下は例になります。

        volumes:
          - name: mypd
            persistentVolumeClaim:
              claimName: myclaim
  3. 新規設定が使用されていることを確認します。

    1. WorkloadsPods をクリックします。
    2. アプリケーション Pod の Project を設定します。
    3. アプリケーション Pod が Running ステータスで表示されていることを確認します。
    4. アプリケーション Pod 名をクリックし、Pod の詳細を表示します。
    5. Volumes セクションまでスクロールダウンし、ボリュームに新規 Persistent Vocume Claim (永続ボリューム要求、PVC) に一致する Type があることを確認します (例: myclaim)。

5.2. Persistent Volume Claim(永続ボリューム要求、PVC)要求ステータスの表示

警告

Persistent Volume Claim(永続ボリューム要求、PVC)の拡張は、OpenShift Container Storage 4.2 がサポートする PVC ではサポートされません。

以下の手順を使用して、PVC 要求のステータスを表示します。

前提条件

  • OpenShift Container Storage への管理者アクセス。

手順

  1. OpenShift Web コンソールにログインします。
  2. StoragePersistent Volume Claims をクリックします。
  3. Filter テキストボックスを使用して、必要な PVC 名を検索します。
  4. 必要な PVC に対応する Status 列を確認します。
  5. 必要な Name をクリックして PVC の詳細を表示します。

5.3. Persistent Volume Claim(永続ボリューム要求、PVC)要求イベントの確認

以下の手順を使用して、Persistent Volume Claim(永続ボリューム要求、PVC)要求イベントを確認し、これに対応します。

前提条件

  • OpenShift Web コンソールへの管理者アクセス。

手順

  1. OpenShift Web コンソールにログインします。
  2. HomeDashboardsPersistent Storage をクリックします。
  3. Inventory カードを見つけ、エラーのある PVC の数を確認します。
  4. StoragePersistent Volume Claims をクリックします。
  5. Filter テキストボックスを使用して、必要な PVC を検索します。
  6. PVC 名をクリックし、Events に移動します。
  7. 必要に応じて、または指示に応じてイベントに対応します。

5.4. 動的プロビジョニング

5.4.1. 動的プロビジョニングについて

StorageClass リソースオブジェクトは、要求可能なストレージを記述し、分類するほか、動的にプロビジョニングされるストレージのパラメーターを要求に応じて渡すための手段を提供します。StorageClass オブジェクトは、さまざまなレベルのストレージとストレージへのアクセスを制御するための管理メカニズムとしても機能します。クラスター管理者 (cluster-admin) またはストレージ管理者 (storage-admin) は、ユーザーが基礎となるストレージボリュームソースに関する詳しい知識がなくても要求できる StorageClass オブジェクトを定義し、作成します。

OpenShift Container Platform の永続ボリュームフレームワークはこの機能を有効にし、管理者がクラスターに永続ストレージをプロビジョニングできるようにします。このフレームワークにより、ユーザーは基礎となるインフラストラクチャーの知識がなくてもこれらのリソースを要求できるようになります。

OpenShift Container Platform では、数多くのストレージタイプを永続ボリュームとして使用できます。これらはすべて管理者によって静的にプロビジョニングされますが、一部のストレージタイプは組み込みプロバイダーとプラグイン API を使用して動的に作成できます。

5.4.2. OpenShift Container Storage の動的プロビジョニング

Red Hat OpenShift Container Storage は、コンテナー環境向けに最適化されたソフトウェアで定義されるストレージです。これは OpenShift Container Platform の Operator として実行され、コンテナーの統合され、単純化された永続ストレージの管理を可能にします。

OpenShift Container Storage は、以下を含む各種のストレージタイプをサポートします。

  • データベースのブロックストレージ
  • 継続的な統合、メッセージングおよびデータ集約のための共有ファイルストレージ
  • アーカイブ、バックアップおよびメディアストレージのオブジェクトストレージ

バージョン 4.3 では、Red Hat Ceph Storage を使用して永続ボリュームをサポートするファイル、ブロック、およびオブジェクトストレージを提供し、Rook.io を使用して永続ボリュームおよび要求のプロビジョニングを管理し、オーケストレーションします。NooBaa はオブジェクトストレージを提供し、その Multicloud Gateway は複数のクラウド環境でのオブジェクトのフェデレーションを可能にします (テクノロジープレビューとしてご利用いただけます)。データフェデレーションについての詳細は、「2 つの異なるクラスター間でのバケットの展開 [テクノロジープレビュー]」を参照してください。

OpenShift Container Storage 4.3 では、RADOS Block Device (RBD) および Ceph File System (CephFS) の Red Hat Ceph Storage Container Storage Interface (CSI) ドライバーが動的プロビジョニング要求を処理します。PVC 要求が動的に送信される場合、CSI ドライバーでは以下のオプションを使用できます。

  • ボリュームモードが Block の Ceph RBD をベースとする PVC (ReadWriteOnce (RWO) および ReadWriteMany (RWX) アクセス) を作成します。
  • ボリュームモードが Filesystem の Ceph RBD をベースとする PVC (ReadWriteOnce (RWO) アクセス) を作成します。
  • ボリュームモードが Filesystem の CephFS をベースとする PVC (ReadWriteOnce (RWO) および ReadWriteMany (RWX) アクセス) を作成します。

使用するドライバー(RBD または CephFS)の判断は、storageclass.yaml ファイルのエントリーに基づいて行われます。

5.4.3. 利用可能な動的プロビジョニングプラグイン

OpenShift Container Platform は、以下のプロビジョナープラグインを提供します。 これらには、クラスターの設定済みプロバイダーの API を使用して新規ストレージリソースを作成する動的プロビジョニング用の一般的な実装が含まれます。

ストレージタイププロビジョナープラグインの名前備考

AWS Elastic Block Store (EBS)

kubernetes.io/aws-ebs

複数クラスターを複数の異なるゾーンで使用する際の動的プロビジョニングの場合、各ノードに Key=kubernetes.io/cluster/<cluster_name>,Value=<cluster_id> のタグを付けます。 ここで、<cluster_name> および <cluster_id> はクラスターごとに固有の値になります。

AWS Elastic File System (EFS)

 

動的プロビジョニングは、EFS プロビジョナー Pod を介して行われ、プロビジョナープラグインでは実行されません。

Azure Disk

kubernetes.io/azure-disk

 

Azure File

kubernetes.io/azure-file

persistent-volume-binder ServiceAccount では、Azure ストレージアカウントおよびキーを保存するためにシークレットを作成し、取得するためのパーミッションが必要です。

Ceph File System(POSIX 準拠ファイルシステム)

openshift-storage.cephfs.csi.ceph.com

Ceph クラスターで設定された Ceph ファイルシステムを使用して、ReadWriteMany (RWX) または ReadWriteOnce (RWO) アクセスモードのボリュームをプロビジョニングします。

Ceph RBD(ブロックデバイス)

openshift-storage.rbd.csi.ceph.com

Ceph RBD の RWO アクセスモード、ブロック PVC の RWO および RWX アクセスモード、およびファイルシステム PVC の RWO アクセスモードのボリュームをプロビジョニングします。

GCE Persistent Disk (gcePD)

kubernetes.io/gce-pd

マルチゾーン設定では、GCE プロジェクトごとに OpenShift Container Platform クラスターを実行し、現行クラスターのノードが存在しないゾーンで PV が作成されないようにすることが推奨されます。

S3 バケット (MCG Object Bucket Claim)

openshift-storage.noobaa.io/obc

Multicloud Object Gateway (MCG) 経由で S3 API 呼び出しをサポートするための Object Bucket Claim (オブジェクトバケット要求)をプロビジョニングします。S3 バケットをサポートするストレージは、MCG 設定およびデプロイメントの種類によって異なります。

VMware vSphere

kubernetes.io/vsphere-volume

 
重要

選択したプロビジョナープラグインでは、関連するクラウド、ホスト、またはサードパーティープロバイダーを、関連するドキュメントに従って設定する必要もあります。

第6章 Container Storage Interface (CSI) コンポーネントの配置の管理

各クラスターは、それらに適用されるテイントのタイプに応じて、infra および storage などの数多くの専用ノードで構成されます。ただし、infra を持つノードは、ノードで OpenShift Container Storage Persistent Volume Claim(永続ボリューム要求、PVC) を使用することができません。そのため、このようなテイントのマークが付けられたノードを使用する必要がある場合は、容認を設定してノードで csi-plugins を起動することができます。詳細は、「ノードテイントを使用して Pod 配置の制御」を参照してください。

手順

  1. configmap rook-ceph-operator-config を作成します。

    $ oc create -f rook-ceph-operator-config.yaml
    configmap/rook-ceph-operator-config created
  2. configmap を表示します。

    $ oc get configmap rook-ceph-operator-config -n openshift-storage -o yaml

    keynodetype に設定され、valueinfra に設定された configmap の出力例:

    apiVersion: v1
    data:
      CSI_PLUGIN_TOLERATIONS: |
        - effect: NoSchedule
          key: nodetype
          operator: Equal
          value: infra
        - effect: NoSchedule
          key: node.ocs.openshift.io/storage
          operator: Exists
    kind: ConfigMap
    metadata:
      creationTimestamp: "2020-03-23T11:49:27Z"
      name: rook-ceph-operator-config
      namespace: openshift-storage
      resourceVersion: "114879"
      selfLink: /api/v1/namespaces/openshift-storage/configmaps/rook-ceph-operator-config
      uid: ac22e63a-8df1-4650-a57f-89bf7a2ce06a
  3. rook-ceph-operator を再起動します。

検証手順

csi-cephfsplugin-* および csi-rbdplugin-* Pod がテイントのマークが付けられたノードで実行されていることを確認します。

第7章 Multicloud Object Gateway

7.1. Multicloud Object Gateway について

Multicloud Object Gateway (MCG) は OpenShift の軽量オブジェクトストレージサービスであり、ユーザーは必要に応じて、複数のクラスター、およびクラウドネイティブストレージを使用して、オンプレミスで小規模に開始し、その後にスケーリングできます。

7.2. アプリケーションの使用による Multicloud Object Gateway へのアクセス

AWS S3 を対象とするアプリケーションまたは AWS S3 Software Development Kit(SDK) を使用するコードを使用して、オブジェクトサービスにアクセスできます。アプリケーションは、MCG エンドポイント、アクセスキー、およびシークレットアクセスキーを指定する必要があります。ターミナルまたは MCG CLI を使用して、この情報を取得できます。

前提条件

  • 実行中の OpenShift Container Storage Platform
  • MCG コマンドラインインターフェースをダウンロードして、管理を容易にします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg
  • または、mcg パッケージを、https://access.redhat.com/downloads/content/547/ver=4/rhel---8/4/x86_64/packages にある OpenShift Container Storage RPM からインストールできます。

関連するエンドポイント、アクセスキー、およびシークレットアクセスキーには、以下の 2 つの方法でアクセスできます。

7.2.1. ターミナルから Multicloud Object Gateway へのアクセス

手順

describe コマンドを実行し、アクセスキー (AWS_ACCESS_KEY_ID 値) およびシークレットアクセスキー (AWS_SECRET_ACCESS_KEY 値) を含む MCG エンドポイントについての情報を表示します。

# oc describe noobaa -n openshift-storage

出力は以下のようになります。

Name:         noobaa
Namespace:    openshift-storage
Labels:       <none>
Annotations:  <none>
API Version:  noobaa.io/v1alpha1
Kind:         NooBaa
Metadata:
  Creation Timestamp:  2019-07-29T16:22:06Z
  Generation:          1
  Resource Version:    6718822
  Self Link:           /apis/noobaa.io/v1alpha1/namespaces/openshift-storage/noobaas/noobaa
  UID:                 019cfb4a-b21d-11e9-9a02-06c8de012f9e
Spec:
Status:
  Accounts:
    Admin:
      Secret Ref:
        Name:           noobaa-admin
        Namespace:      openshift-storage
  Actual Image:         noobaa/noobaa-core:4.0
  Observed Generation:  1
  Phase:                Ready
  Readme:

  Welcome to NooBaa!
  -----------------

  Welcome to NooBaa!
    -----------------
    NooBaa Core Version:
    NooBaa Operator Version:

    Lets get started:

    1. Connect to Management console:

      Read your mgmt console login information (email & password) from secret: "noobaa-admin".

        kubectl get secret noobaa-admin -n openshift-storage -o json | jq '.data|map_values(@base64d)'

      Open the management console service - take External IP/DNS or Node Port or use port forwarding:

        kubectl port-forward -n openshift-storage service/noobaa-mgmt 11443:443 &
        open https://localhost:11443

    2. Test S3 client:

      kubectl port-forward -n openshift-storage service/s3 10443:443 &
1
      NOOBAA_ACCESS_KEY=$(kubectl get secret noobaa-admin -n openshift-storage -o json | jq -r '.data.AWS_ACCESS_KEY_ID|@base64d')
2
      NOOBAA_SECRET_KEY=$(kubectl get secret noobaa-admin -n openshift-storage -o json | jq -r '.data.AWS_SECRET_ACCESS_KEY|@base64d')
      alias s3='AWS_ACCESS_KEY_ID=$NOOBAA_ACCESS_KEY AWS_SECRET_ACCESS_KEY=$NOOBAA_SECRET_KEY aws --endpoint https://localhost:10443 --no-verify-ssl s3'
      s3 ls


    Services:
      Service Mgmt:
        External DNS:
          https://noobaa-mgmt-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
          https://a3406079515be11eaa3b70683061451e-1194613580.us-east-2.elb.amazonaws.com:443
        Internal DNS:
          https://noobaa-mgmt.openshift-storage.svc:443
        Internal IP:
          https://172.30.235.12:443
        Node Ports:
          https://10.0.142.103:31385
        Pod Ports:
          https://10.131.0.19:8443
      serviceS3:
        External DNS: 3
          https://s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com
          https://a340f4e1315be11eaa3b70683061451e-943168195.us-east-2.elb.amazonaws.com:443
        Internal DNS:
          https://s3.openshift-storage.svc:443
        Internal IP:
          https://172.30.86.41:443
        Node Ports:
          https://10.0.142.103:31011
        Pod Ports:
          https://10.131.0.19:6443
1
アクセスキー(AWS_ACCESS_KEY_ID 値)
2
シークレットアクセスキー(AWS_SECRET_ACCESS_KEY 値)
3
MCG エンドポイント
注記

oc describe noobaa コマンドには、利用可能な内部および外部 DNS 名が一覧表示されます。内部 DNS を使用する場合、トラフィックは無料になります。外部 DNS はロードバランシングを使用してトラフィックを処理するため、1 時間あたりのコストがかかります。

7.2.2. MCG コマンドラインインターフェースからの Multicloud Object Gateway へのアクセス

前提条件

  • MCG コマンドラインインターフェースをダウンロードします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg

手順

status コマンドを実行して、エンドポイント、アクセスキー、およびシークレットアクセスキーにアクセスします。

noobaa status -n openshift-storage

出力は以下のようになります。

INFO[0000] Namespace: openshift-storage
INFO[0000]
INFO[0000] CRD Status:
INFO[0003] ✅ Exists: CustomResourceDefinition "noobaas.noobaa.io"
INFO[0003] ✅ Exists: CustomResourceDefinition "backingstores.noobaa.io"
INFO[0003] ✅ Exists: CustomResourceDefinition "bucketclasses.noobaa.io"
INFO[0004] ✅ Exists: CustomResourceDefinition "objectbucketclaims.objectbucket.io"
INFO[0004] ✅ Exists: CustomResourceDefinition "objectbuckets.objectbucket.io"
INFO[0004]
INFO[0004] Operator Status:
INFO[0004] ✅ Exists: Namespace "openshift-storage"
INFO[0004] ✅ Exists: ServiceAccount "noobaa"
INFO[0005] ✅ Exists: Role "ocs-operator.v0.0.271-6g45f"
INFO[0005] ✅ Exists: RoleBinding "ocs-operator.v0.0.271-6g45f-noobaa-f9vpj"
INFO[0006] ✅ Exists: ClusterRole "ocs-operator.v0.0.271-fjhgh"
INFO[0006] ✅ Exists: ClusterRoleBinding "ocs-operator.v0.0.271-fjhgh-noobaa-pdxn5"
INFO[0006] ✅ Exists: Deployment "noobaa-operator"
INFO[0006]
INFO[0006] System Status:
INFO[0007] ✅ Exists: NooBaa "noobaa"
INFO[0007] ✅ Exists: StatefulSet "noobaa-core"
INFO[0007] ✅ Exists: Service "noobaa-mgmt"
INFO[0008] ✅ Exists: Service "s3"
INFO[0008] ✅ Exists: Secret "noobaa-server"
INFO[0008] ✅ Exists: Secret "noobaa-operator"
INFO[0008] ✅ Exists: Secret "noobaa-admin"
INFO[0009] ✅ Exists: StorageClass "openshift-storage.noobaa.io"
INFO[0009] ✅ Exists: BucketClass "noobaa-default-bucket-class"
INFO[0009] ✅ (Optional) Exists: BackingStore "noobaa-default-backing-store"
INFO[0010] ✅ (Optional) Exists: CredentialsRequest "noobaa-cloud-creds"
INFO[0010] ✅ (Optional) Exists: PrometheusRule "noobaa-prometheus-rules"
INFO[0010] ✅ (Optional) Exists: ServiceMonitor "noobaa-service-monitor"
INFO[0011] ✅ (Optional) Exists: Route "noobaa-mgmt"
INFO[0011] ✅ (Optional) Exists: Route "s3"
INFO[0011] ✅ Exists: PersistentVolumeClaim "db-noobaa-core-0"
INFO[0011] ✅ System Phase is "Ready"
INFO[0011] ✅ Exists:  "noobaa-admin"

#------------------#
#- Mgmt Addresses -#
#------------------#

1
ExternalDNS : [https://noobaa-mgmt-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com https://a3406079515be11eaa3b70683061451e-1194613580.us-east-2.elb.amazonaws.com:443]
ExternalIP  : []
NodePorts   : [https://10.0.142.103:31385]
InternalDNS : [https://noobaa-mgmt.openshift-storage.svc:443]
InternalIP  : [https://172.30.235.12:443]
PodPorts    : [https://10.131.0.19:8443]

#--------------------#
#- Mgmt Credentials -#
#--------------------#

email    : admin@noobaa.io
password : HKLbH1rSuVU0I/souIkSiA==

#----------------#
#- S3 Addresses -#
#----------------#

ExternalDNS : [https://s3-openshift-storage.apps.mycluster-cluster.qe.rh-ocs.com https://a340f4e1315be11eaa3b70683061451e-943168195.us-east-2.elb.amazonaws.com:443]
ExternalIP  : []
NodePorts   : [https://10.0.142.103:31011]
InternalDNS : [https://s3.openshift-storage.svc:443]
InternalIP  : [https://172.30.86.41:443]
PodPorts    : [https://10.131.0.19:6443]

#------------------#
#- S3 Credentials -#
#------------------#

2
AWS_ACCESS_KEY_ID     : jVmAsu9FsvRHYmfjTiHV
3
AWS_SECRET_ACCESS_KEY : E//420VNedJfATvVSmDz6FMtsSAzuBv6z180PT5c

#------------------#
#- Backing Stores -#
#------------------#

NAME                           TYPE     TARGET-BUCKET                                               PHASE   AGE
noobaa-default-backing-store   aws-s3   noobaa-backing-store-15dc896d-7fe0-4bed-9349-5942211b93c9   Ready   141h35m32s

#------------------#
#- Bucket Classes -#
#------------------#

NAME                          PLACEMENT                                                             PHASE   AGE
noobaa-default-bucket-class   {Tiers:[{Placement: BackingStores:[noobaa-default-backing-store]}]}   Ready   141h35m33s

#-----------------#
#- Bucket Claims -#
#-----------------#

No OBC's found.
1
エンドポイント
2
アクセスキー
3
シークレットアクセスキー

これで、アプリケーションに接続するための関連するエンドポイント、アクセスキー、およびシークレットアクセスキーを使用できます。

例7.1 例

AWS S3 CLI がアプリケーションである場合、以下のコマンドは OCS のバケットを一覧表示します。

AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY>
aws --endpoint <ENDPOINT> -- no-verify-ssl s3 ls

7.3. ハイブリッドまたはマルチクラウド用のストレージリソースの追加

7.3.1. MCG コマンドラインインターフェースを使用したハイブリッドまたはマルチクラウドのストレージリソースの追加

Multicloud Object Gateway (MCG) は、クラウドプロバイダーおよびクラスター全体にまたがるデータの処理を単純化します。

これを実行するには、MCG で使用できるバッキングストレージを追加します。

VMWare デプロイメントの場合、「S3 と互換性のある NooBaa バッキングストアの作成」に進み、詳細の 手順を確認します。

前提条件

手順

  1. MCG コマンドラインインターフェースから、以下のコマンドを実行します。

    noobaa backingstore create <backing-store-type> <backingstore_name> --access-key=<AWS ACCESS KEY> --secret-key=<AWS SECRET ACCESS KEY> --target-bucket <bucket-name>
    1. <backing-store-type> を、関連するバッキングストアタイプの aws-s3google-cloud-storeazure-blobs3-compatible、または ibm-cos に置き換えます。
    2. <backingstore_name> を、バッキングストアの名前に置き換えます。
    3. <AWS ACCESS KEY> および <AWS SECRET ACCESS KEY> を、作成した AWS アクセスキー ID およびシークレットアクセスキーに置き換えます。
    4. <bucket-name> を既存の AWS バケット名に置き換えます。この引数は、NooBaa に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

      出力は以下のようになります。

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "aws-resource"
      INFO[0002] ✅ Created: Secret "backing-store-secret-aws-resource"

YAML を使用してストレージリソースを追加することもできます。

  1. 認証情報でシークレットを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: <backingstore-secret-name>
    type: Opaque
    data:
      AWS_ACCESS_KEY_ID: <AWS ACCESS KEY ID ENCODED IN BASE64>
      AWS_SECRET_ACCESS_KEY: <AWS SECRET ACCESS KEY ENCODED IN BASE64>
    1. Base64 を使用して独自の AWS アクセスキー ID およびシークレットアクセスキーを指定し、エンコードし、その結果を <AWS ACCESS KEY ID ENCODED IN BASE64> および <AWS SECRET ACCESS KEY ENCODED IN BASE64> に使用する必要があります。
    2. <backingStore-secret-name> を一意の名前に置き換えます。
  2. 特定のバッキングストアについて以下の YAML を適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: bs
      namespace: noobaa
    spec:
      awsS3:
        secret:
          name: <backingstore-secret-name>
          namespace: noobaa
        targetBucket: <bucket-name>
      type: <backing-store-type>
    1. <bucket-name> を既存の AWS バケット名に置き換えます。この引数は、NooBaa に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
    2. <backingstore-secret-name> を直前の手順で作成したシークレットの名前に置き換えます。
    3. <backing-store-type> を、関連するバッキングストアタイプの aws-s3google-cloud-storeazure-blobs3-compatible、または ibm-cos に置き換えます。

7.3.2. S3 と互換性のある NooBaa バッキングストアの作成

手順

  1. MCG コマンドラインインターフェースから、以下のコマンドを実行します。

    noobaa backingstore create s3-compatible rgw-resource --access-key=<RGW ACCESS KEY> --secret-key=<RGW SECRET KEY> --target-bucket=<bucket-name> --endpoint=http://rook-ceph-rgw-ocs-storagecluster-cephobjectstore.openshift-storage.svc.cluster.local:80
    1. <RGW ACCESS KEY> および <RGW SECRET KEY> を取得するには、RGW ユーザーシークレット名を使用して以下のコマンドを実行します。

      oc get secret <RGW USER SECRET NAME> -o yaml
    2. Base64 からアクセスキー ID とアクセスキーをデコードし、それらのキーを保持します。
    3. <RGW USER ACCESS KEY><RGW USER SECRET ACCESS KEY> を、直前の手順でデコードした適切なデータに置き換えます。
    4. <bucket-name> を既存の RGW バケット名に置き換えます。この引数は、NooBaa に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

      出力は以下のようになります。

      INFO[0001] ✅ Exists: NooBaa "noobaa"
      INFO[0002] ✅ Created: BackingStore "rgw-resource"
      INFO[0002] ✅ Created: Secret "backing-store-secret-rgw-resource"

YAML を使用して backingstore を作成することもできます。

  1. CephObjectStore ユーザーを作成します。これにより、RGW 認証情報が含まれるシークレットも作成されます。

    apiVersion: ceph.rook.io/v1
    kind: CephObjectStoreUser
    metadata:
      name: <RGW-Username>
      namespace: openshift-storage
    spec:
      store: ocs-storagecluster-cephobjectstore
      displayName: "<Display-name>"
    1. <RGW-Username><Display-name> を、一意のユーザー名および表示名に置き換えます。
  2. 以下の YAML を S3 と互換性のあるバッキングストアについて適用します。

    apiVersion: noobaa.io/v1alpha1
    kind: BackingStore
    metadata:
      finalizers:
      - noobaa.io/finalizer
      labels:
        app: noobaa
      name: <backingstore-name>
      namespace: openshift-storage
    spec:
      s3Compatible:
        endpoint: http://rook-ceph-rgw-ocs-storagecluster-cephobjectstore.openshift-storage.svc.cluster.local:80
        secret:
          name: <backingstore-secret-name>
          namespace: openshift-storage
        signatureVersion: v4
        targetBucket: <RGW-bucket-name>
      type: s3-compatible
    1. <backingstore-secret-name> を、直前の手順で CephObjectStore で作成したシークレットの名前に置き換えます。
    2. <bucket-name> を既存の RGW バケット名に置き換えます。この引数は、NooBaa に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

7.3.3. ユーザーインターフェースを使用したハイブリッドおよびマルチクラウドのストレージリソースの追加

手順

  1. OpenShift Storage コンソールで、DashboardsOCS Object Service に移動し、 noobaa リンクを選択します。

    MCG オブジェクトサービス noobaa リンク
  2. 以下に強調表示されているように左側にある Resources タブを選択します。設定する一覧から、Add Cloud Resource を選択します。

    mcg クラウドリソースの追加
  3. Add new connection を選択します。

    mcg 新規接続の追加
  4. 関連するネイティブクラウドプロバイダーまたは S3 互換オプションを選択し、詳細を入力します。

    mcg クラウド接続の追加
  5. 新規に作成された接続を選択し、これを既存バケットにマップします。

    MCG 既存バケットへのマップ
  6. これらの手順を繰り返して、必要な数のバッキングストアを作成します。
注記

NooBaa UI で作成されたリソースは、OpenShift UI または MCG CLI では使用できません。

7.3.4. 新規バッキングストアの作成

以下の手順を使用して、OpenShift Container Storage で新規のバッキングストアを作成します。

前提条件

  • OpenShift への管理者アクセス。

手順

  1. OpenShift Web コンソールの左側のペインで Operators → Installed Operators をクリックし、インストールされた Operator を表示します。
  2. Installed Operator ページで、Project ドロップダウンリストから openshift-storage を選択し、openshift-storage プロジェクトに切り替えます。
  3. OpenShift Container Storage Operator をクリックします。
  4. OpenShift Container Storage Operator ページで右側にスクロールし、Backing Store タブをクリックします。

    図7.1 バッキングストアタブのある OpenShift Container Storage Operator ページ

    バッキングストアタブのある OpenShift Container Storage Operator ページのスクリーンショット。
  5. Create Backing Store をクリックします。

    図7.2 Create Backing Store ページ

    Create New Backing Store ページのスクリーンショット。
  6. Create New Backing Store ページで、以下を実行します。

    1. namespace が openshift-storage に設定されていることを確認します。
    2. Backing Store Name を入力します。
    3. Provider を選択します。
    4. Remove を選択します。
    5. Endpoint を入力します。これはオプションです。
    6. ドロップダウンリストから Secret を選択するか、または独自のシークレットを作成します。オプションで、Switch to Credentials ビューを選択すると、必要なシークレットを入力できます。

      注記

      このメニューは、Google Cloud およびローカル PVC 以外のすべてのプロバイダーに関連します。

    7. Target bucket を入力します。ターゲットバケットは、リモートクラウドサービスでホストされるコンテナーストレージです。NooBaa に対してシステム用にこのバケットを使用できることを通知する接続を作成できます。
  7. Create Backing Store をクリックします。

検証手順

  1. OperatorsInstalled Operators をクリックします。
  2. OpenShift Container Storage Operator をクリックします。
  3. 新規バッキングストアを検索します。

7.4. ハイブリッドおよびマルチクラウドバケットのデータのミラーリング

Multicloud Object Gateway (MCG) は、クラウドプロバイダーおよびクラスター全体にまたがるデータの処理を単純化します。

前提条件

次に、データ管理ポリシー(ミラーリング)を反映するバケットクラスを作成します。

手順

ミラーリングデータは、以下の 3 つの方法で設定できます。

7.4.1. MCG コマンドラインインターフェースを使用したデータのミラーリング用のバケットクラスの作成

  1. MCG コマンドラインインターフェースから以下のコマンドを実行し、ミラーリングポリシーでバケットクラスを作成します。

    $ noobaa bucketclass create mirror-to-aws --backingstores=azure-resource,aws-resource --placement Mirror
  2. 新たに作成されたバケットクラスを新規のバケット要求に設定し、2 つのロケーション間でミラーリングされる新規バケットを生成します。

    $ noobaa obc create  mirrored-bucket --bucketclass=mirror-to-aws

7.4.2. YAML を使用したデータのミラーリング用のバケットクラスの作成

  1. 以下の YAML を適用します。この YAML は、ローカル Ceph ストレージと AWS 間でデータをミラーリングするハイブリッドの例です。

    apiVersion: noobaa.io/v1alpha1
    kind: BucketClass
    metadata:
      name: hybrid-class
      labels:
        app: noobaa
    spec:
      placementPolicy:
        tiers:
          - tier:
              mirrors:
                - mirror:
                    spread:
                      - cos-east-us
                - mirror:
                    spread:
                      - noobaa-test-bucket-for-ocp201907291921-11247_resource
  2. 以下の行を標準の Object Bucket Claim (オブジェクトバケット要求、OBC) に追加します。

    additionalConfig:
      bucketclass: mirror-to-aws

    OBC についての詳細は、「Object Bucket Claim(オブジェクトバケット要求)」を参照してください。

7.4.3. ユーザーインターフェースを使用したデータミラーリングを行うためのバケットの設定

  1. OpenShift Storage コンソールで、DashboardsOCS Object Service に移動し、 noobaa リンクを選択します。

    MCG オブジェクトサービス noobaa リンク
  2. 左側の buckets アイコンをクリックします。バケットの一覧が表示されます。

    MCG noobaa バケットアイコン
  3. 更新するバケットを選択します。
  4. Edit Tier 1 Resources をクリックします。

    MCG edit tier 1 resources
  5. Mirror を選択し、このバケットに使用する関連リソースを確認します。以下の例では、prem Ceph RGW と AWS 間でデータのミラーリングをします。

    MCG mirror relevant resources
  6. Save をクリックします。
注記

NooBaa UI で作成されたリソースは、OpenShift UI または MCG CLI では使用できません。

7.5. Multicloud Object Gateway のバケットポリシー

OpenShift Container Storage は AWS S3 バケットポリシーをサポートします。バケットポリシーにより、ユーザーにバケットとそれらのオブジェクトのアクセスパーミッションを付与することができます。

7.5.1. バケットポリシーについて

バケットポリシーは、AWS S3 バケットおよびオブジェクトにパーミッションを付与するために利用できるアクセスポリシーオプションです。バケットポリシーは JSON ベースのアクセスポリシー言語を使用します。アクセスポリシー言語についての詳細は、「AWS Access Policy Language Overview」を参照してください。

7.5.2. バケットポリシーの使用

前提条件

手順

Multicloud Object Gateway でバケットポリシーを使用するには、以下を実行します。

  1. JSON 形式でバケットポリシーを作成します。以下の例を参照してください。

    {
        "Version": "NewVersion",
        "Statement": [
            {
                "Sid": "Example",
                "Effect": "Allow",
                "Principal": [
                        "john.doe@example.com"
                ],
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::john_bucket"
                ]
            }
        ]
    }

    バケットポリシーには数多くの利用可能な要素があります。それらの構成要素および使用方法についての詳細は、「AWS Access Policy Language Overview」を参照してください。

    バケットポリシーの他の例については、「AWS Bucket Policy Examples」を参照してください。

    S3 ユーザーの作成方法については、「Multicloud Object Gateway での AWS S3 ユーザーの作成」を参照してください。

  2. AWS S3 クライアントを使用して put-bucket-policy コマンドを使用してバケットポリシーを S3 バケットに適用します。

    # aws s3api put-bucket-policy --bucket MyBucket --policy BucketPolicy

    MyBucket を、ポリシーを設定するバケットに置き換えます。

    BucketPolicy をバケットポリシー JSON ファイルに置き換えます。

    以下は例になります。

    # aws s3api put-bucket-policy --bucket MyBucket --policy file://BucketPolicy

    put-bucket-policy コマンドについての詳細は、「AWS CLI Command Reference for put-bucket-policy」を参照してください。

注記

Noobaa アカウントプリンシパルのみがサポートされます。

注記

バケットポリシー条件はサポートされていません。

7.5.3. Multicloud Object Gateway での AWS S3 ユーザーの作成

前提条件

手順

  1. OpenShift Storage コンソールで、DashboardsOCS Object Service に移動し、 noobaa リンクを選択します。

    MCG オブジェクトサービス noobaa リンク
  2. Accounts タブで、Create Account をクリックします。

    MCG アカウントのアカウント作成ボタン
  3. S3 Access Only を選択し、Account Name を指定します (例: john.doe@example.com)。Next をクリックします。

    MCG create account s3 user
  4. S3 default placement を選択します (例: noobaa-default-backing-store)。Buckets Permissions を選択します。特定のバケットまたはすべてのバケットを選択できます。Create をクリックします。

    MCG create account s3 user2

7.6. Object Bucket Claim(オブジェクトバケット要求)

Object Bucket Claim(オブジェクトバケット要求)は、ワークロードの S3 と互換性のあるバケットバックエンドを要求するために使用できます。

Object Bucket Claim(オブジェクトバケット要求)は 3 つの方法で作成できます。

Object Bucket Claim(オブジェクトバケット要求)は、新しいアクセスキーおよびシークレットアクセスキーを含む、バケットのパーミッションのある NooBaa に新しいバケットとアプリケーションアカウントを作成します。アプリケーションアカウントは単一バケットにのみアクセスでき、デフォルトで新しいバケットを作成することはできません。

7.6.1. 動的 Object Bucket Claim(オブジェクトバケット要求)

永続ボリュームと同様に、Object Bucket Claim (オブジェクトバケット要求) の詳細をアプリケーションの YAML に追加し、設定マップおよびシークレットで利用可能なオブジェクトサービスエンドポイント、アクセスキー、およびシークレットアクセスキーを取得できます。この情報をアプリケーションの環境変数に動的に読み込むことは容易に実行できます。

手順

  1. 以下の行をアプリケーション YAML に追加します。

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: <obc-name>
    spec:
      generateBucketName: <obc-bucket-name>
      storageClassName: noobaa

    これらの行は Object Bucket Claim(オブジェクトバケット要求)自体になります。

    1. <obc-name> を、一意の Object Bucket Claim(オブジェクトバケット要求)の名前に置き換えます。
    2. <obc-bucket-name> を、Object Bucket Claim(オブジェクトバケット要求)の一意のバケット名に置き換えます。
  2. YAML ファイルにさらに行を追加して、Object Bucket Claim(オブジェクトバケット要求)の使用を自動化できます。以下の例はバケット要求の結果のマッピングです。これは、データを含む設定マップおよび認証情報のあるシークレットです。この特定のジョブは NooBaa からオブジェクトバケットを要求し、バケットとアカウントを作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: testjob
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - image: <your application image>
              name: test
              env:
                - name: BUCKET_NAME
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_NAME
                - name: BUCKET_HOST
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_HOST
                - name: BUCKET_PORT
                  valueFrom:
                    configMapKeyRef:
                      name: <obc-name>
                      key: BUCKET_PORT
                - name: AWS_ACCESS_KEY_ID
                  valueFrom:
                    secretKeyRef:
                      name: <obc-name>
                      key: AWS_ACCESS_KEY_ID
                - name: AWS_SECRET_ACCESS_KEY
                  valueFrom:
                    secretKeyRef:
                      name: <obc-name>
                      key: AWS_SECRET_ACCESS_KEY
    1. <obc-name> のすべてのインスタンスを、Object Bucket Claim(オブジェクトバケット要求)の名前に置き換えます。
    2. <your application image> をアプリケーションイメージに置き換えます。
  3. 更新された YAML ファイルを適用します。

    # oc apply -f <yaml.file>
    1. <yaml.file> を YAML ファイルの名前に置き換えます。
  4. 新しい設定マップを表示するには、以下を実行します。

    # oc get cm <obc-name>
    1. obc-name を、Object Bucket Claim(オブジェクトバケット要求)の名前に置き換えます。

      出力には、以下の環境変数が表示されることが予想されます。

      • BUCKET_HOST: アプリケーションで使用するエンドポイント
      • BUCKET_PORT: アプリケーションで利用できるポート

        • ポートは BUCKET_HOST に関連します。たとえば、BUCKET_HOSThttps://my.example.com で、BUCKET_PORT が 443 の場合、オブジェクトサービスのエンドポイントは https://my.example.com:443 になります。
      • BUCKET_NAME: 要求されるか、または生成されるバケット名
      • AWS_ACCESS_KEY_ID: 認証情報の一部であるアクセスキー
      • AWS_SECRET_ACCESS_KEY: 認証情報の一部であるシークレットのアクセスキー

7.6.2. コマンドラインインターフェースを使用した Object Bucket Claim(オブジェクトバケット要求)の作成

コマンドラインインターフェースを使用して Object Bucket Claim(オブジェクトバケット要求)を作成する場合、設定マップとシークレットを取得します。これらには、アプリケーションがオブジェクトストレージサービスを使用するために必要なすべての情報が含まれます。

前提条件

  • MCG コマンドラインインターフェースをダウンロードします。

    # subscription-manager repos --enable=rh-ocs-4-for-rhel-8-x86_64-rpms
    # yum install mcg

手順

  1. コマンドラインインターフェースを使用して、新規バケットおよび認証情報の詳細を生成します。以下のコマンドを実行します。

    # noobaa obc create <obc-name> -n openshift-storage

    <obc-name> を一意の Object Bucket Claim(オブジェクトバケット要求)の名前に置き換えます (例: myappobc)。

    さらに、--app-namespace オプションを使用して、Object Bucket Claim(オブジェクトバケット要求)設定マップおよびシークレットが作成される namespace を指定できます(例: myapp-namespace)。

    出力例:

    INFO[0001] ✅ Created: ObjectBucketClaim "test21obc"

    MCG コマンドラインインターフェースが必要な設定を作成し、新規 OBC について OpenShift に通知します。

  2. 以下のコマンドを実行して Object Bucket Claim(オブジェクトバケット要求)を表示します。

    # oc get obc -n openshift-storage

    出力例:

    NAME        STORAGE-CLASS                 PHASE   AGE
    test21obc   openshift-storage.noobaa.io   Bound   38s
  3. 以下のコマンドを実行して、新規 Object Bucket Claim(オブジェクトバケット要求)の YAML ファイルを表示します。

    # oc get obc test21obc -o yaml -n openshift-storage

    出力例:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      generation: 2
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      resourceVersion: "40756"
      selfLink: /apis/objectbucket.io/v1alpha1/namespaces/openshift-storage/objectbucketclaims/test21obc
      uid: 64f04cba-f662-11e9-bc3c-0295250841af
    spec:
      ObjectBucketName: obc-openshift-storage-test21obc
      bucketName: test21obc-933348a6-e267-4f82-82f1-e59bf4fe3bb4
      generateBucketName: test21obc
      storageClassName: openshift-storage.noobaa.io
    status:
      phase: Bound
  4. openshift-storage namespace 内で、設定マップおよびシークレットを見つけ、この Object Bucket Claim(オブジェクトバケット要求)を使用することができます。CM とシークレットの名前はこの Object Bucket Claim(オブジェクトバケット要求)の名前と同じです。シグナルを表示するには、以下を実行します。

    # oc get -n openshift-storage secret test21obc -o yaml

    出力例:

    Example output:
    apiVersion: v1
    data:
      AWS_ACCESS_KEY_ID: c0M0R2xVanF3ODR3bHBkVW94cmY=
      AWS_SECRET_ACCESS_KEY: Wi9kcFluSWxHRzlWaFlzNk1hc0xma2JXcjM1MVhqa051SlBleXpmOQ==
    kind: Secret
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      ownerReferences:
      - apiVersion: objectbucket.io/v1alpha1
        blockOwnerDeletion: true
        controller: true
        kind: ObjectBucketClaim
        name: test21obc
        uid: 64f04cba-f662-11e9-bc3c-0295250841af
      resourceVersion: "40751"
      selfLink: /api/v1/namespaces/openshift-storage/secrets/test21obc
      uid: 65117c1c-f662-11e9-9094-0a5305de57bb
    type: Opaque

    シークレットは S3 アクセス認証情報を提供します。

  5. 設定マップを表示するには、以下を実行します。

    # oc get -n openshift-storage cm test21obc -o yaml

    出力例:

    apiVersion: v1
    data:
      BUCKET_HOST: 10.0.171.35
      BUCKET_NAME: test21obc-933348a6-e267-4f82-82f1-e59bf4fe3bb4
      BUCKET_PORT: "31242"
      BUCKET_REGION: ""
      BUCKET_SUBREGION: ""
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-10-24T13:30:07Z"
      finalizers:
      - objectbucket.io/finalizer
      labels:
        app: noobaa
        bucket-provisioner: openshift-storage.noobaa.io-obc
        noobaa-domain: openshift-storage.noobaa.io
      name: test21obc
      namespace: openshift-storage
      ownerReferences:
      - apiVersion: objectbucket.io/v1alpha1
        blockOwnerDeletion: true
        controller: true
        kind: ObjectBucketClaim
        name: test21obc
        uid: 64f04cba-f662-11e9-bc3c-0295250841af
      resourceVersion: "40752"
      selfLink: /api/v1/namespaces/openshift-storage/configmaps/test21obc
      uid: 651c6501-f662-11e9-9094-0a5305de57bb

    設定マップには、アプリケーションの S3 エンドポイント情報が含まれます。

7.6.3. OpenShift Web コンソールを使用した Object Bucket Claim(オブジェクトバケット要求)の作成

OpenShift Web コンソールを使用して Object Bucket Claim (オブジェクトバケット要求) を作成できます。

前提条件

  • OpenShift Web コンソールへの管理者アクセス。

手順

  1. OpenShift Web コンソールにログインします。
  2. 左側のナビゲーションバーで StorageObject Bucket Claims をクリックします。
  3. 以下のウィンドウで、Create Object Bucket Claim をクリックします。

    MCG create object bucket claim button
  4. 以下のウィンドウで、Object Bucket Claim(オブジェクトバケット要求)の名前を入力し、ドロップダウンメニューから適切なストレージクラスとバケットクラスを選択します。

    MCG create object bucket claim window
  5. Create をクリックします。

    OBC が作成されると、その詳細ページにリダイレクトされます。

    MCG object bucket claim details page
  6. OBC の作成後に、これをデプロイメントに割り当てることができます。

    1. 左側のナビゲーションバーで StorageObject Bucket Claims をクリックします。
    2. 作成した OBC の横にあるアクションメニュー (✓) をクリックします。
    3. ドロップダウンメニューで、Attach to Deployment を選択します。

      MCG OBC action menu attach to deployment
    4. 以下のウィンドウで、ドロップダウンメニューから必要なデプロイメントを選択してから Attach をクリックします。

      MCG OBC attach OBC to a deployment
注記

アプリケーションが OBC と通信できるようにするには、configmap およびシークレットを使用する必要があります。これについての詳細は、「動的 Object Bucket Claim(オブジェクトバケット要求)」を参照してください。

7.6.3.1. Object Bucket Claim(オブジェクトバケット要求)の削除

  1. Object Bucket Claims ページで、削除する OBC の横にあるアクションメニュー (✓) をクリックします。

    MCG OBC action menu attach to deployment
  2. メニューから Delete Object Bucket Claim を選択します。

    MCG delete object bucket claim
  3. Delete をクリックします。

7.6.3.2. Multicloud Object Gateway ユーザーインターフェースを使用したオブジェクトバケットの表示

Object Bucket Claim(オブジェクトバケット要求、OBC) 用に作成されたオブジェクトバケットの詳細を表示できます。

手順

オブジェクトバケットの詳細を表示するには、以下を実行します。

  1. OpenShift Web コンソールにログインします。
  2. 左側のナビゲーションバーで StorageObject Buckets をクリックします。

    MCG object buckets page

    特定の OBC の詳細ページに移動し、Resource リンクをクリックして、その OBC のオブジェクトバケットを表示します。

  3. 詳細を表示するオブジェクトバケットを選択します。オブジェクトバケットの詳細ページに移動します。

    MCG object bucket overview page

7.7. エンドポイントの追加による Multicloud Object Gateway パフォーマンスのスケーリング [テクノロジープレビュー]

Multicloud Object Gateway のパフォーマンスは環境によって異なる場合があります。特定のアプリケーションでは、高速なパフォーマンスを必要とする場合があり、これは S3 エンドポイントをスケーリングして簡単に対応できます。

Multicloud Object Gateway リソースプールは、デフォルトで有効にされる 2 種類のサービスを提供する NooBaa デーモンコンテナーのグループです。

  • ストレージサービス
  • S3 エンドポイントサービス

7.7.1. Multicloud Object Gateway での S3 エンドポイント [テクノロジープレビュー]

S3 エンドポイントは、すべての Multicloud Object Gateway がデフォルトで提供するサービスであり、これは Multicloud Object Gateway で負荷の高いデータ消費タスクの大部分を処理します。エンドポイントサービスは、データチャンク、重複排除、圧縮、および暗号化を処理し、Multicloud Object Gateway からのデータ配置の指示を受け入れます。

7.7.2. ストレージノードを使用したスケーリング [テクノロジープレビュー]

前提条件

  • Multicloud Object Gateway へのアクセスのある実行中の OpenShift Container Storage Platform

Multicloud Object Gateway のストレージノードは 1 つ以上の永続ボリュームに割り当てられた NooBaa デーモンコンテナーであり、ローカルオブジェクトサービスデータストレージに使用されます。NooBaa デーモンは Kubernetes ノードにデプロイできます。これは、StatefulSet Pod で構成される Kubernetes プールを作成して実行できます。

手順

  1. Mult-Cloud Object Gateway ユーザーインターフェースの Overview ページで、 Add Storage Resources をクリックします。

    MCG add storage resources button
  2. ウィンドウから Deploy Kubernetes Pool をクリックします。

    MCG deploy kubernetes pool
  3. Create Pool 手順で、今後インストールされるノードのターゲットプールを作成します。

    MCG deploy kubernetes pool create pool
  4. Configure 手順で、要求される Pod 数と各 PV のサイズを設定します。新規 Pod ごとに、1 つの PV が作成されます。

    MCG deploy kubernetes pool configure
  5. Review 手順で、新規プールの詳細を検索し、ローカルまたは外部デプロイメントのいずれかの使用するデプロイメント方法を選択します。ローカルデプロイメントが選択されている場合、Kubernetes ノードはクラスター内にデプロイされます。外部デプロイメントが選択されている場合、外部で実行するための YAML ファイルが提供されます。
  6. すべてのノードは最初の手順で選択したプールに割り当てられ、ResourcesStorage resourcesResource name の下で確認できます。

    MCG storage resources overview

7.7.3. 2 つの異なるクラスター間でのバケットの展開 [テクノロジープレビュー]

前提条件

  • Multicloud Object Gateway へのアクセスのある実行中の OpenShift Container Storage Platform
  • ネットワークアクセスがあり、他のクラスターの Multicloud Object Gateway と通信できる追加の実行中の OpenShift Container Platform

以下の手順では、クラスター A とクラスター B の 2 つのクラスター間でバケットを展開する方法について説明します。2 つの異なるクラスター間でバケットを展開するには、以下を行います。

7.7.3.1. クラスター B での外部 NooBaa デーモンプールの作成

  1. クラスター A の Mult-Cloud Object Gateway ユーザーインターフェースから、Overview ページで Add Storage Resources をクリックします。

    MCG add storage resources button
  2. ウィンドウから Deploy Kubernetes Pool をクリックします。

    MCG deploy kubernetes pool
  3. Create Pool 手順で、今後インストールされるノードのターゲットプールを作成します。

    MCG deploy kubernetes pool create pool
  4. Configure 手順で、要求される Pod 数と各 PV のサイズを設定します。新規 Pod ごとに、1 つの PV が作成されます。

    MCG deploy kubernetes pool configure
  5. Review 手順で Deploy external to the Kubernetes cluster を選択し、Download YAML をクリックします。
  6. クラスター B に接続し、以下のコマンドを実行して NooBaa デーモン Pod をクラスター A にデプロイします。

    oc create namespace external
    oc apply -f <YAML file> -n external

    <YAML file> を直前の手順の YAML ファイルに置き換えます。

7.7.3.2. クラスター B のクラスター A へのバッキングストアとしての追加

  1. クラスター B から以下のコマンドを実行します。

    noobaa status
  2. スクロールダウンして S3 情報を探します: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY。次の手順のためにこの情報を保持します。

    INFO[0000] #----------------#
    INFO[0000] #- S3 Addresses -#
    INFO[0000] #----------------#
    INFO[0000]
    INFO[0000] ExternalDNS : [s3-noobaa.apps.aa.example.open.com]
    INFO[0000] ExternalIP  : [https://172.29.225.78:443 https://172.29.225.78:443]
    INFO[0000] NodePorts   : [https://192.168.0.11:32530]
    INFO[0000] InternalDNS : [https://s3.noobaa:443]
    INFO[0000] InternalIP  : [https://172.30.147.221:443]
    INFO[0000] PodPorts    : [https://10.1.4.21:6443]
    INFO[0000]
    INFO[0000] #------------------#
    INFO[0000] #- S3 Credentials -#
    INFO[0000] #------------------#
    INFO[0000]
    INFO[0000] AWS_ACCESS_KEY_ID: aTKel9GdBEGs2kBmJszM
    INFO[0000] AWS_SECRET_ACCESS_KEY: 3JEzHc7pCZVOAAnTTTY5bZIG12T1I2a+lHkWlhQ8
    INFO[0000]
  3. クラスター A で、Resources 画面に移動し、Add Cloud Resource をクリックします。

    MCG stretching buckets add cloud resources
  4. Add new connection を選択します。

    MCG stretching buckets add new connection
  5. 直前の手順の Cluster B の S3 エンドポイント情報を入力します。

    MCG stretching buckets aws access info
  6. ウィンドウの手順に従って、クラウドリソースの作成を完了します。

7.7.3.3. クラスター B の NooBaa システムを使用したクラスター A でのフェデレーションされたバケットの作成

  1. Buckets に移動して Create Bucket をクリックしてから、バケット名を設定します。

    MCG stretching buckets create federated bucket
  2. クラスター A のローカルストレージのミラーを使用して作成したバッキングストアを選択します。

    MCG stretching buckets create federated bucket2
  3. フェデレーションされたバケットにアップロードされたオブジェクトは、クラスター A とクラスター B の間でミラーリングされます。

    MCG stretching buckets federated bucket mirroring

7.7.3.4. ローカリティーの最適化に向けたリージョンの割り当て

  1. クラスター A で、Resources に移動します。

    MCG stretching buckets assign resources
  2. 各リソースをクリックし、リージョンを割り当てます。

    MCG stretching buckets assing resources2
  3. 完了後は、以下の画像のようになります。クラスター B の外部エンドポイントおよび NooBaa システムはあるリージョンに置かれ、ローカルバッキングストアは別のリージョンに置かれます。

    MCG stretching buckets final overview

7.7.3.5. クラスターの管理

クラスター A 上のアプリケーションは、ローカル S3 エンドポイントを使用してフェデレーションされたバケットを使用します。

noobaa status
INFO[0000] #----------------#
INFO[0000] #- S3 Addresses -#
INFO[0000] #----------------#
INFO[0000]
INFO[0000] ExternalDNS : [s3-noobaa.apps.aa.example.open.com]
INFO[0000] ExternalIP  : [https://172.29.225.78:443 https://172.29.225.78:443]
INFO[0000] NodePorts   : [https://192.168.0.11:32530]
INFO[0000] InternalDNS : [https://s3.noobaa:443]
INFO[0000] InternalIP  : [https://172.30.147.221:443]
INFO[0000] PodPorts    : [https://10.1.4.21:6443]
INFO[0000]
INFO[0000] #------------------#
INFO[0000] #- S3 Credentials -#
INFO[0000] #------------------#
INFO[0000]
INFO[0000] AWS_ACCESS_KEY_ID: aTKel9GdBEGs2kBmJszM
INFO[0000] AWS_SECRET_ACCESS_KEY: 3JEzHc7pCZVOAAnTTTY5bZIG12T1I2a+lHkWlhQ8
INFO[0000]

クラスター B のアプリケーションは同じ認証情報を使用する必要がありますが、エンドポイント URL はローカルの S3 サービスである必要があります。

oc get service -n external
NAME      TYPE           CLUSTER-IP      EXTERNAL-IP                                           PORT(S)                                     AGE
s3        LoadBalancer   172.30.18.172   s3-external.apps.aa.example.opentlc.com 80:32741/TCP,443:30949/TCP   4m

第8章 OpenShift Container Storage のストレージノードの置き換え

OpenShift Container Storage 4.3 では、ノード置き換えを、以下のデプロイメントで動作するノードについてプロアクティブに実行し、失敗したノードについてリアクティブに実行することができます。

  • Amazon Web Services (AWS)

    • ユーザーによってプロビジョニングされるインフラストラクチャー
    • インストーラーでプロビジョニングされるインフラストラクチャー
  • VMware

    • ユーザーによってプロビジョニングされるインフラストラクチャー

8.1. AWS にデプロイされる OpenShift Container Storage

8.1.1. ユーザーによってプロビジョニングされるインフラストラクチャーで動作する AWS ノードの置き換え

以下の手順に従って、AWS のユーザーによってプロビジョニングされるインフラストラクチャーで動作するノードを置き換えます。

手順

  1. 置き換える必要のあるノードを特定します。
  2. 以下のコマンドを実行して、ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node_name>
  3. 以下のコマンドを使用してノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
    重要

    このアクティビティーには少なくとも 5-10 分以上かかる場合があります。この期間に生成される Ceph のエラーは一時的なもので、新規ノードにラベルが付けられ、これが機能すると自動的に解決されます。

  4. 以下のコマンドを使用してノードを削除します。

    $ oc delete nodes <node_name>
  5. 必要なインフラストラクチャーで新規 AWS マシンインスタンスを作成します。サポートされるインフラストラクチャーおよびプラットフォームについて参照してください。
  6. 新規 AWS マシンインスタンスを使用して新規 OpenShift Container Platform ノードを作成します。
  7. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
  8. 新規ノードに必要なすべての OpenShift Container Platform CSR を承認します。

    $ oc adm certificate approve <Certificate_Name>
  9. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  10. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェースを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
  11. OpenShift Container Storage を新規ホスト名で更新するために mgr Pod を再起動します。

    $ oc delete pod rook-ceph-mgr-xxxx

検証手順

  1. 以下のコマンドを実行して、新規ノードが出力にあることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

8.1.2. インストーラーでプロビジョニングされるインフラストラクチャーで動作する AWS ノードの置き換え

以下の手順を使用して、AWS のインストーラーでプロビジョニングされるインフラストラクチャー (IPI) で動作するノードを置き換えます。

手順

  1. OpenShift Web コンソールにログインし、ComputeNodes をクリックします。
  2. 置き換える必要のあるノードを特定します。その マシン名 をメモします。
  3. 以下のコマンドを実行して、ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node_name>
  4. 以下のコマンドを使用してノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
    重要

    このアクティビティーには少なくとも 5-10 分以上かかる場合があります。この期間に生成される Ceph のエラーは一時的なもので、新規ノードにラベルが付けられ、これが機能すると自動的に解決されます。

  5. ComputeMachines をクリックします。必要なマシンを検索します。
  6. 必要なマシンの横にある Action menu (⋮)Delete Machine をクリックします。
  7. Delete をクリックしてマシンの削除を確認します。新しいマシンが自動的に作成されます。
  8. 新規マシンが起動し、Running 状態に移行するまで待機します。

    重要

    このアクティビティーには少なくとも 5-10 分以上かかる場合があります。

  9. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  10. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェースを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
  11. OpenShift Container Storage を新規ホスト名で更新するために mgr Pod を再起動します。

    $ oc delete pod rook-ceph-mgr-xxxx

検証手順

  1. 以下のコマンドを実行して、新規ノードが出力にあることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

8.1.3. ユーザーによってプロビジョニングされるインフラストラクチャーでの失敗した AWS ノードの置き換え

以下の手順に従って、OpenShift Container Storage 4.3 の AWS のユーザーによってプロビジョニングされるインフラストラクチャー (UPI) で動作しない障害のあるノードを置き換えます。

手順

  1. 置き換える必要のあるノードの AWS マシンインスタンスを特定します。
  2. AWS にログインし、特定された AWS マシンインスタンスを終了します。
  3. 必要なインフラストラクチャーで新規 AWS マシンインスタンスを作成します。サポートされるインフラストラクチャーおよびプラットフォームについて参照してください。
  4. 新規 AWS マシンインスタンスを使用して新規 OpenShift Container Platform ノードを作成します。
  5. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
  6. 新規ノードに必要なすべての OpenShift Container Platform CSR を承認します。

    $ oc adm certificate approve <Certificate_Name>
  7. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  8. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェースを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
  9. OpenShift Container Storage を新規ホスト名で更新するために mgr Pod を再起動します。

    $ oc delete pod rook-ceph-mgr-xxxx

検証手順

  1. 以下のコマンドを実行して、新規ノードが出力にあることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

8.1.4. インストーラーでプロビジョニングされるインフラストラクチャーでの失敗した AWS ノードの置き換え

以下の手順に従って、OpenShift Container Storage 4.3 の AWS のインストーラーでプロビジョニングされるインフラストラクチャー (IPI) で動作しない障害のあるノードを置き換えます。

手順

  1. OpenShift Web コンソールにログインし、ComputeNodes をクリックします。
  2. 障害のあるノードを特定し、その Machine Name をクリックします。
  3. ActionsEdit Annotations をクリックし、Add More をクリックします。
  4. machine.openshift.io/exclude-node-draining を追加し、Save をクリックします。
  5. ActionsDelete Machine をクリックしてから、Delete をクリックします。
  6. 新しいマシンが自動的に作成されます。新規マシンが起動するのを待機します。

    重要

    このアクティビティーには少なくとも 5-10 分以上かかる場合があります。この期間に生成される Ceph のエラーは一時的なもので、新規ノードにラベルが付けられ、これが機能すると自動的に解決されます。

  7. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  8. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェースを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
  9. [オプション]: 失敗した AWS インスタンスが自動的に削除されない場合、インスタンスを AWS コンソールで終了します。
  10. OpenShift Container Storage を新規ホスト名で更新するために mgr Pod を再起動します。

    $ oc delete pod rook-ceph-mgr-xxxx

検証手順

  1. 以下のコマンドを実行して、新規ノードが出力にあることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

8.2. VMware にデプロイされる OpenShift Container Storage

8.2.1. ユーザーによってプロビジョニングされるインフラストラクチャーで動作する VMware ノードの置き換え

以下の手順に従って、VMware のユーザーによってプロビジョニングされるインフラストラクチャー (UPI) で動作するノードを置き換えます。

手順

  1. 置き換える必要があるノードとその仮想マシンを特定します。
  2. 以下のコマンドを実行して、ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node_name>
  3. 以下のコマンドを使用してノードをドレイン (解放) します。

    $ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
    重要

    このアクティビティーには少なくとも 5-10 分以上かかる場合があります。この期間に生成される Ceph のエラーは一時的なもので、新規ノードにラベルが付けられ、これが機能すると自動的に解決されます。

  4. 以下のコマンドを使用してノードを削除します。

    $ oc delete nodes <node_name>
  5. VSphere にログインし、特定された仮想マシンを終了します。

    重要

    仮想マシンはインベントリーからのみ削除し、ディスクから削除しないでください。

  6. 必要なインフラストラクチャーで vSphere に新規の仮想マシンを作成します。サポートされるインフラストラクチャーおよびプラットフォームについて参照してください。
  7. 新規の仮想マシンを使用して新規 OpenShift Container Platform ワーカーノードを作成します。
  8. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
  9. 新規ノードに必要なすべての OpenShift Container Platform CSR を承認します。

    $ oc adm certificate approve <Certificate_Name>
  10. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  11. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェースを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
  12. OpenShift Container Storage を新規ホスト名で更新するために mgr Pod を再起動します。

    $ oc delete pod rook-ceph-mgr-xxxx

検証手順

  1. 以下のコマンドを実行して、新規ノードが出力にあることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

8.2.2. ユーザーによってプロビジョニングされるインフラストラクチャーでの失敗した VMware ノードの置き換え

以下の手順に従って、VMware のユーザーによってプロビジョニングされるインフラストラクチャー (UPI) で失敗したノードを置き換えます。

手順

  1. 置き換える必要があるノードとその仮想マシンを特定します。
  2. 以下のコマンドを使用してノードを削除します。

    $ oc delete nodes <node_name>
  3. VSphere にログインし、特定された仮想マシンを終了します。

    重要

    仮想マシンはインベントリーからのみ削除し、ディスクから削除しないでください。

  4. 必要なインフラストラクチャーで vSphere に新規の仮想マシンを作成します。サポートされるインフラストラクチャーおよびプラットフォームについて参照してください。
  5. 新規の仮想マシンを使用して新規 OpenShift Container Platform ワーカーノードを作成します。
  6. Pending 状態の OpenShift Container Platform に関連する証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
  7. 新規ノードに必要なすべての OpenShift Container Platform CSR を承認します。

    $ oc adm certificate approve <Certificate_Name>
  8. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。
  9. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

    ユーザーインターフェースを使用する場合
    1. 新規ノードについて、Action Menu (⋮)Edit Labels をクリックします。
    2. cluster.ocs.openshift.io/openshift-storage を追加し、Save をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenS+hift Container Storage ラベルを新規ノードに適用します。

      $ oc label node <new_node_name> cluster.ocs.openshift.io/openshift-storage=""
  10. OpenShift Container Storage を新規ホスト名で更新するために mgr Pod を再起動します。

    $ oc delete pod rook-ceph-mgr-xxxx

検証手順

  1. 以下のコマンドを実行して、新規ノードが出力にあることを確認します。

    $ oc get nodes --show-labels | grep cluster.ocs.openshift.io/openshift-storage= |cut -d' ' -f1
  2. WorkloadsPods をクリックし、新規ノード上の少なくとも以下の Pod が Running 状態にあることを確認します。

    • csi-cephfsplugin-*
    • csi-rbdplugin-*
  3. 他の必要なすべての OpenShift Container Storage Pod が Running 状態にあることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

第9章 OpenShift Container Storage の更新

9.1. OpenShift Container Storage Operator の自動更新の有効化

以下の手順を使用して、OpenShift Container Platform で OpenShift Container Storage Operator の自動の更新承認を有効にします。

前提条件

  • OpenShift Container Platform クラスターをバージョン 4.3 の最新の安定したリリースに更新する場合は、『クラスターの更新』を参照してください。
  • OpenShift Container Platform バージョン 4.3 で動作しており、OpenShift Container Storage をバージョン 4.2 からバージョン 4.3 にアップグレードする場合、チャネルを stable-4.2 から stable-4.3 に切り替えます。チャネルについての詳細は、「OpenShift Container Platform アップグレードチャネルおよびリリース」を参照してください。
  • すべての OpenShift Container Storage ノードのステータスが Ready であることを確認します。
  • Health カードの Persistent Storage の下で、Ceph クラスターが正常であり、データに回復性があることを確認します。

手順

  1. OpenShift Web コンソールにログインします。
  2. OperatorsInstalled Operators をクリックします。
  3. openshift-storage プロジェクトを選択します。
  4. OpenShift Container Storage Operator 名をクリックします。
  5. Subscription タブをクリックしてから、Approval の下にあるリンクをクリックします。
  6. Automatic (default) を選択し、Save をクリックします。
  7. Upgrade Status に応じて以下ののいずれかを実行します。

    • アップグレードのステータスには、requires approval表示されます

      1. Install Plan リンクをクリックします。
      2. InstallPlan Details ページで、Preview Install Plan をクリックします。
      3. インストール計画を確認し、Approve をクリックします。
      4. StatusUnknown から Created に変更されるまで待機します。
      5. OperatorsInstalled Operators をクリックします。
      6. openshift-storage プロジェクトを選択します。
      7. StatusUp to date に変更するまで待機します。
    • アップグレードステータスには 、requires approval表示されません

      1. 更新が開始するまで待機します。これには、最長 20 分の時間がかかる可能性があります。
      2. OperatorsInstalled Operators をクリックします。
      3. openshift-storage プロジェクトを選択します。
      4. StatusUp to date に変更するまで待機します。

検証手順

  1. Dashboard → OCS PV タブをクリックして、Status カードで、Ceph クラスターに正常であることを示す緑色のチェックマークが表示されていることを確認します。
  2. OperatorsInstalled OperatorsOpenShift Container Storage Operator をクリックします。
  3. Storage Cluster で、クラスターサービスのステータスが Ready であることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

9.2. OpenShift Container Storage Operator の手動による更新

以下の手順を使用して、インストール計画に手動の承認を指定し、OpenShift Container Storage Operator を更新します。

前提条件

  • OpenShift Container Platform クラスターをバージョン 4.3 の最新の安定したリリースに更新する場合は、『クラスターの更新』を参照してください。
  • OpenShift Container Platform バージョン 4.3 で動作しており、OpenShift Container Storage をバージョン 4.2 からバージョン 4.3 にアップグレードする場合、チャネルを stable-4.2 から stable-4.3 に切り替えます。チャネルについての詳細は、「OpenShift Container Platform アップグレードチャネルおよびリリース」を参照してください。
  • すべての OpenShift Container Storage ノードのステータスが Ready であることを確認します。
  • Health カードの Persistent Storage の下で、Ceph クラスターが正常であり、データに回復性があることを確認します。

手順

  1. OpenShift Web コンソールにログインします。
  2. OperatorsInstalled Operators をクリックします。
  3. openshift-storage プロジェクトを選択します。
  4. Subscription タブをクリックしてから、Approval の下にあるリンクをクリックします。
  5. Manual を選択し、Save をクリックします。
  6. Upgrade StatusUpgrading に変更するまで待機します。
  7. Upgrade Statusrequires approval が表示される場合は、requires approval をクリックします。
  8. InstallPlan Details ページで、Preview Install Plan をクリックします。
  9. インストール計画を確認し、Approve をクリックします。
  10. StatusUnknown から Created に変更されるまで待機します。
  11. OperatorsInstalled Operators をクリックします。
  12. openshift-storage プロジェクトを選択します。
  13. StatusUp to date に変更するまで待機します。

検証手順

  1. Dashboard → OCS PV タブをクリックして、Status カードで、Ceph クラスターに正常であることを示す緑色のチェックマークが表示されていることを確認します。
  2. OperatorsInstalled OperatorsOpenShift Container Storage Operator をクリックします。
  3. Storage Cluster で、クラスターサービスのステータスが Ready であることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください