第6章 OpenShift Data Foundation 外部シークレットの更新

OpenShift Data Foundation の最新バージョンへの更新後に、OpenShift Data Foundation 外部シークレットを更新します。

注記

バッチ更新には、外部シークレットを更新する必要はありません。たとえば、OpenShift Data Foundation 4.9.X から 4.9.Y に更新する場合。

前提条件

  • OpenShift Container Platform クラスターを 4.9.z の最新の安定したリリースに更新している。詳細は、Updating Clusters を参照してください。
  • OpenShift Container Storage Operator が OpenShift Data Foundation バージョン 4.9 にアップグレードされている。詳細は、Updating Red Hat OpenShift Container Storage 4.8 to Red Hat OpenShift Data Foundation を参照してください。
  • OpenShift Data Foundation クラスターが正常であること、およびデータに回復性があることを確認します。StorageOpenShift Data foundationStorage Systems タブに移動し、ストレージシステム名をクリックします。

    • Overview - Block and File タブで Status カードをチェックして、Storage cluster に正常であることを示す緑色のチェックマークが表示されていることを確認します。
    • Object タブをクリックして、Object Service および Data resiliency に正常であることを示す緑色のチェックマークが表示されていることを確認します。RADOS Object Gateway は、OpenShift Data Foundation を外部モードでデプロイする際に、RADOS Object Gateway エンドポイントの詳細が含まれている場合にのみ表示されます。
  • Red Hat Ceph Storage では、Ceph ダッシュボードがインストールされ、設定されている必要がある。

手順

  1. ceph-external-cluster-details-exporter.py Python スクリプトの OpenShift Data Foundation バージョンをダウンロードします。

    # oc get csv $(oc get csv -n openshift-storage | grep ocs-operator | awk '{print $1}') -n openshift-storage -o jsonpath='{.metadata.annotations.external\.features\.ocs\.openshift\.io/export-script}' | base64 --decode > ceph-external-cluster-details-exporter.py
  2. 更新パーミッションは、外部の Red Hat Ceph Storage クラスターのクライアントノードで ceph-external-cluster-details-exporter.py を実行して、外部の Red Hat Ceph Storage クラスターに制限を課します。これを行うには、Red Hat Ceph Storage の管理者に問い合わせる必要がある場合があります。

    # python3 ceph-external-cluster-details-exporter.py --upgrade --run-as-user=<ocs_client_name>
    --run-as-user

    OpenShift Data Foundation クラスターのデプロイメント時に使用されるクライアント名。別のクライアント名が設定されていない場合は、デフォルトのクライアント名 client.healthchecker を使用します。

    ユーザーの更新されたパーミッションは以下のように設定されます。

    caps: [mgr] allow command config
    caps: [mon] allow r, allow command quorum_status, allow command version
    caps: [osd] allow rwx pool=RGW_POOL_PREFIX.rgw.meta, allow r pool=.rgw.root, allow rw pool=RGW_POOL_PREFIX.rgw.control, allow rx pool=RGW_POOL_PREFIX.rgw.log, allow x pool=RGW_POOL_PREFIX.rgw.buckets.index
  3. 以前にダウンロードした Python スクリプトを実行し、外部の Red Hat Ceph Storage クラスターから生成された JSON 出力を保存します。

    1. 以前にダウンロードした Python スクリプトを実行します。

      # python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name <rbd block pool name> --monitoring-endpoint <ceph mgr prometheus exporter endpoint> --monitoring-endpoint-port <ceph mgr prometheus exporter port> --rgw-endpoint <rgw endpoint> --run-as-user <ocs_client_name>  [optional arguments]
      --rbd-data-pool-name
      これは、OpenShift Data Foundation でブロックストレージを提供するために使用される必須のパラメーターです。
      --rgw-endpoint
      これは任意になります。OpenShift Data Foundation の Ceph Rados Gateway でオブジェクトストレージをプロビジョニングする場合に、このパラメーターを指定します。<ip_address>:<port> の形式でエンドポイントを指定します。
      --monitoring-endpoint
      これは任意になります。OpenShift Container Platform クラスターから到達可能な、アクティブ mgr およびスタンバイ mgr の IP アドレスのコンマ区切りリストを受け入れます。指定しない場合には、値が自動的に入力されます。
      --monitoring-endpoint-port
      これは任意になります。これは --monitoring-endpoint で指定された ceph-mgr Prometheus エクスポーターに関連付けられるポートです。指定しない場合には、値が自動的に入力されます。
      --run-as-user

      OpenShift Data Foundation クラスターのデプロイメント時に使用されるクライアント名。別のクライアント名が設定されていない場合は、デフォルトのクライアント名 client.healthchecker を使用します。

      注記

      monitoring-endpoint および monitoring-endpoint-port を除くオプション引数を含むすべてのパラメーターが、外部モードでの OpenShift Data Foundation のデプロイメント時に使用したパラメーターと同じであることを確認します。

    2. 前の手順でスクリプトを実行した後に生成された JSON 出力を保存します。

      出力例:

      [{"name": "rook-ceph-mon-endpoints", "kind": "ConfigMap", "data": {"data": "xxx.xxx.xxx.xxx:xxxx", "maxMonId": "0", "mapping": "{}"}}, {"name": "rook-ceph-mon", "kind": "Secret", "data": {"admin-secret": "admin-secret", "fsid": "<fs-id>", "mon-secret": "mon-secret"}}, {"name": "rook-ceph-operator-creds", "kind": "Secret", "data": {"userID": "<user-id>", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-node", "kind": "Secret", "data": {"userID": "csi-rbd-node", "userKey": "<user-key>"}}, {"name": "ceph-rbd", "kind": "StorageClass", "data": {"pool": "<pool>"}}, {"name": "monitoring-endpoint", "kind": "CephCluster", "data": {"MonitoringEndpoint": "xxx.xxx.xxx.xxxx", "MonitoringPort": "xxxx"}}, {"name": "rook-ceph-dashboard-link", "kind": "Secret", "data": {"userID": "ceph-dashboard-link", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-provisioner", "kind": "Secret", "data": {"userID": "csi-rbd-provisioner", "userKey": "<user-key>"}}, {"name": "rook-csi-cephfs-provisioner", "kind": "Secret", "data": {"adminID": "csi-cephfs-provisioner", "adminKey": "<admin-key>"}}, {"name": "rook-csi-cephfs-node", "kind": "Secret", "data": {"adminID": "csi-cephfs-node", "adminKey": "<admin-key>"}}, {"name": "cephfs", "kind": "StorageClass", "data": {"fsName": "cephfs", "pool": "cephfs_data"}}, {"name": "ceph-rgw", "kind": "StorageClass", "data": {"endpoint": "xxx.xxx.xxx.xxxx", "poolPrefix": "default"}}, {"name": "rgw-admin-ops-user", "kind": "Secret", "data": {"accessKey": "<access-key>", "secretKey": "<secret-key>"}}]
  4. 生成された JSON ファイルをアップロードします。

    1. OpenShift Web コンソールにログインします。
    2. Workloads → Secrets をクリックします。
    3. プロジェクトを openshift-storage に設定します。
    4. rook-ceph-external-cluster-details をクリックします。
    5. Actions (⋮) → Edit Secret をクリックします。
    6. Browse をクリックして JSON ファイルをアップロードします。
    7. Save をクリックします。

検証手順

  • OpenShift Data Foundation クラスターが正常であり、データが回復性があることを確認するには、StorageOpenShift Data foundationStorage Systems タブに移動してから、ストレージシステム名をクリックします。

    • OverviewBlock and File タブで、Details カードをチェックして、RHCS ダッシュボードのリンクが利用可能であることを確認し、Status カードをチェックして、Storage Cluster に正常であることを示す緑色のチェックマークが表示されていることも確認します。
    • Object タブをクリックして、Object Service および Data resiliency に正常であることを示す緑色のチェックマークが表示されていることを確認します。RADOS Object Gateway は、OpenShift Data Foundation を外部モードでデプロイする際に、RADOS Object Gateway エンドポイントの詳細が含まれている場合にのみ表示されます。