4.4. 更新 OpenShift Container Storage 外部 secret

更新至最新版本的 OpenShift Container Storage 后,更新 OpenShift Container Storage 外部 secret。

注意

批处理更新不需要更新外部 secret。例如,当从 OpenShift Container Storage 4.8.X 更新至 4.8.Y 时。

先决条件

流程

  1. 下载 ceph-external-cluster-details-exporter.py python 脚本的 OpenShift Container Storage 版本。

    # 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=<client_name_used_for_OCS_4.7_install>
    --run-as-user

    OpenShift Container Storage 4.7 部署中使用的客户端名称。如果在 OpenShift Container Storage 4.7 部署过程中没有使用这个选项,则会设置默认客户端名称 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 <client_name_used_for_OCS_4.7_install>  [optional arguments]
      --rbd-data-pool-name
      是在 OpenShift Container Storage 中提供块存储的必要参数。
      --rgw-endpoint
      是可选的。如果要通过 Ceph Rados 网关为 OpenShift Container Storage 置备对象存储,请提供此参数。提供以下格式的端点: <ip_address>:<port>
      --monitoring-endpoint
      是可选的。它是 OpenShift Container Platform 集群中可访问活跃 ceph-mgr 的 IP 地址。如果没有提供,则会自动填充该值。
      --monitoring-endpoint-port
      是可选的。它是与 --monitoring-endpoint 指定的 ceph-mgr Prometheus exporter 关联的端口。如果没有提供,则会自动填充该值。
      --run-as-user

      OpenShift Container Storage 4.7 部署中使用的客户端名称。如果在 OpenShift Container Storage 4.7 部署过程中没有使用这个选项,则会设置默认客户端名称 client.healthchecker

      注意

      除了 monitoring-endpoint 和 monitoring-endpoint-port 外,请确保所有参数(包括 monitoring-endpoint 和 monitoring-endpoint-port 除外)与在外部模式下部署 OpenShift Container Storage 4.7 时使用的参数相同。

    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": "client.healthchecker", "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": "ceph-rbd"}}, {"name": "monitoring-endpoint", "kind": "CephCluster", "data": {"MonitoringEndpoint": "xxx.xxx.xxx.xxx", "MonitoringPort": "xxxx"}}, {"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.xxx:xxxx", "poolPrefix": "default"}}]
  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

验证步骤

  1. 在 OpenShift Web 控制台中,进入 Storage → Overview → Object 选项卡。

    • Status 卡中,验证 Object ServiceData Resiliency 是否都处于 Ready 状态(绿色勾号)。
  2. 在 OpenShift Web 控制台中,进入 Storage → Overview → Block and File 选项卡。

    • Status 卡中,验证 Storage Cluster 是否具有绿色勾号标记。