Red Hat OpenShift Container Storage の管理

Red Hat OpenShift Container Storage 4.2

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

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 ドキュメントでキュレーターの設定について参照してください。

これらのサービスのストレージ領域が不足している場合は、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)がサポートするクラスターロギングをアンインストールするには、「 Removing the cluster logging operator from OpenShift Container Storage」の手順を使用します。

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

OpenShift Container Storage には、Object Bucket Claim (オブジェクトバケット要求) と呼ばれる新しい概念が導入されています。Object Bucket Claim(オブジェクトバケット要求)は、ワークロードの S3 と互換性のあるバケットバックエンドを要求するために使用できます。

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

2.4.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: 認証情報の一部であるシークレットのアクセスキー

2.4.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 エンドポイント情報が含まれます。

第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. 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 の容量追加ダイアログメニュー

    ダイアログボックスから、要求される追加容量およびストレージクラスを設定できます。サイズは、常に 2TiB の倍数に設定する必要があります。AWS では、ストレージクラスは gp2 に設定する必要があります。VMWare では、ストレージクラスは thin に設定する必要があります。

    注記

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

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

検証手順

  1. Dashboards -→ Persistent Storage タブに移動してから、 Capacity カードをチェックします。

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

    ocs の容量の追加による拡張の容量確認カード
重要

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

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

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

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

4.3.1. ノードの追加

既存のワーカーノードがサポートされる最大 OSD (2TiB サイズの 3 つの OSD) で実行されている場合には、ストレージの容量を増やすためにノードを追加できます。

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

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

前提条件

  • 実行中の OpenShift Container Storage Platform
  • OpenShift Web コンソールへのアクセス

手順

  1. OpenShift Web コンソールに移動します。
  2. ComputeMachine Sets に移動します。
  3. ノードを追加するマシンセットで、必要なマシンの横にある Action メニュー (⋮) → Edit Count をクリックします。
  4. ノード数を追加し、Save をクリックします。
  5. ComputeNodes をクリックし、新規ノードが Ready 状態にあることを確認します。

    注記

    新規ノードが Ready 状態に達するまでに時間がかかる場合があります。

  6. 以下のいずれかを使用して、OpenShift Container Storage ラベルを新規ノードに適用します。

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

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

      3 つのワーカーノードを追加することが推奨されます。3 つのアベイラビリティーゾーンを持つ AWS デプロイメントの場合、各ノードを別のアベイラビリティーゾーンに追加し、すべてのノードでこの手順を実行する必要があります。ただし、単一のアベイラビリティーゾーンを持つ AWS デプロイメントでは、3 ワーカーノードを利用可能なゾーンに追加し、そのゾーンでこの手順を実行します。

検証手順

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

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

前提条件

  • 実行中の OpenShift Container Storage Platform
  • OpenShift Web コンソールへのアクセス

手順

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

    • AWS の場合

      1. 必要なインフラストラクチャーで新規 AWS マシンインスタンスを作成します。「インフラストラクチャーの要件」を参照してください。
      2. 新規 AWS マシンインスタンスを使用して新規 OpenShift Container Platform ノードを作成します。
    • VMware の場合:

      1. 必要なインフラストラクチャーで vSphere に新規仮想マシンを作成します。「インフラストラクチャーの要件」を参照してください。
      2. 新規の仮想マシンを使用して新規 OpenShift Container Platform ワーカーノードを作成します。
  2. Pending 状態の証明書署名要求 (CSR) の有無を確認します。

    $ oc get csr
  3. 新規ノードに必要なすべての 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 をクリックします。
    コマンドラインインターフェースを使用する場合
    • 以下のコマンドを実行して、OpenShift Container Storage ラベルを新規ノードに適用します。

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

      3 つのワーカーノードを追加することが推奨されます。3 つのアベイラビリティーゾーンを持つ AWS デプロイメントの場合、各ノードを別のアベイラビリティーゾーンに追加し、すべてのノードでこの手順を実行する必要があります。ただし、単一のアベイラビリティーゾーンを持つ AWS デプロイメントおよび単一のアベイラビリティーゾーンのみを持つ VMware デプロイメントの場合、3 ワーカーノードを利用可能なゾーンに追加し、そのゾーンでこの手順を実行します。

検証手順

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

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 をクリックし、 Persistent Storage タブをクリックします。
    2. Health カード で、クラスターの正常性が ocs-storagecluster is healthy として表示されることを確認します。

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

ストレージ容量をスケールアップするには、OpenShift Container Storage ノードへの容量の追加によるストレージのスケールアップについての手順を実行します。

第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.2 では、Red Hat Ceph Storage を使用して永続ボリュームをサポートするファイル、ブロック、およびオブジェクトストレージを提供し、Rook.io を使用して永続ボリュームおよび要求のプロビジョニングを管理し、オーケストレーションします。Noobaa はオブジェクトストレージを提供し、その Multi-Cloud Gateway(テクノロジープレビューとして利用可能)は複数のクラウド環境でのオブジェクトのフェデレーションを可能にします。

OpenShift Container Storage 4.2 では、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

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

VMware vSphere

kubernetes.io/vsphere-volume

 
重要

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

第6章 Multi-Cloud Object Gateway

6.1. Multi-Cloud Object Gateway について

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

6.2. アプリケーションの使用による Multi-Cloud 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

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

6.2.1. ターミナルから Multi-Cloud 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 時間あたりのコストがかかります。

6.2.2. MCG コマンドラインインターフェースからの Multi-Cloud 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
シークレットアクセスキー

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

例6.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

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

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

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

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

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

前提条件

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

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

手順

  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-blob、または s3-compatible に置き換えます。
    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:
      name: aws-resource
      labels:
        app: noobaa
    spec:
      bucketName: <bucket-name>
      s3Options:
        endpoint: s3.amazonaws.com
      secret:
        name: <backingstore-secret-name>
        namespace: openshift-storage
      type: <backing-store-type>
    1. <bucket-name> を既存の AWS バケット名に置き換えます。この引数は、NooBaa に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。
    2. <backingstore-secret-name> を直前の手順で作成したシークレットの名前に置き換えます。
    3. <backing-store-type> を、関連するバッキングストアタイプの aws-s3google-cloud-storeazure-blob、または s3-compatible に置き換えます。

6.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: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
        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 に対して、バッキングストア、およびその後のデータストレージおよび管理のためのターゲットバケットとして使用するバケットについて指示します。

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

手順

  1. OpenShift Storage コンソールで、DashboardsObject 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 では使用できません。

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

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

前提条件

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

手順

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

6.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

6.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(オブジェクトバケット要求)」を参照してください。

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

  1. OpenShift Storage コンソールで、DashboardsObject 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章 OpenShift Container Storage の更新

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

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

前提条件

  • OpenShift Container Platform クラスターをバージョン 4.2 の最新の安定したリリースに更新する場合は、『クラスターの更新』を参照してください。
  • すべての 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. …​requires approval をクリックします。
      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. Persistent Storage をクリックし、Health カードで Ceph クラスターが正常であることを確認します。
  2. OperatorsInstalled OperatorsOpenShift Container Storage Operator をクリックします。
  3. Storage Cluster で、クラスターサービスのステータスが Ready であることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください

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

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

前提条件

  • OpenShift Container Platform クラスターをバージョン 4.2 の最新の安定したリリースに更新する場合は、『クラスターの更新』を参照してください。
  • すべての 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. Persistent Storage をクリックし、Health カードで Ceph クラスターが正常であることを確認します。
  2. OperatorsInstalled OperatorsOpenShift Container Storage Operator をクリックします。
  3. Storage Cluster で、クラスターサービスのステータスが Ready であることを確認します。
  4. 検証手順が失敗した場合は、Red Hat サポートにお問い合わせください