第 6 章 更新 OpenShift Data Foundation 外部机密

在升级到最新版本的 OpenShift Data Foundation 后,更新 OpenShift Data Foundation 外部机密。

注意

批处理更新不需要更新外部 secret。例如,从 OpenShift Data Foundation 4.9.X 更新到 4.9.Y 时。

先决条件

  • 将 OpenShift Container Platform 集群更新至最新的稳定版本 4.9.z,请参阅更新集群
  • OpenShift Container Storage operator 已升级到 OpenShift Data Foundation 版本 4.9。请参阅将 Red Hat OpenShift Container Storage 4.8 更新至 Red Hat OpenShift 数据基础
  • 确保 OpenShift Data Foundation 集群正常运行,数据具有弹性。导航到 StorageOpenShift Data foundationStorage Systems 选项卡,然后点击存储系统名称。

    • Overview - Block and File 选项卡中,检查 Status 卡并确认 存储集群 有一个绿色勾号指示其健康。
    • 单击 Object 选项卡,并确认 Object Service数据弹性具有绿色勾号,指示其运行正常。RADOS 对象网关仅列出在以外部模式部署 OpenShift Data Foundation 时包含 RADOS 对象网关端点详细信息的情况。
  • Red Hat Ceph Storage 必须安装并配置 Ceph 控制面板。

流程

  1. 下载 OpenShift Data Foundation 的 ceph-external-cluster-details-exporter.py python 脚本。

    # 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
      是可选的。如果要通过 Ceph Rados 网关为 OpenShift Data Foundation 置备对象存储,请提供此参数。提供以下格式的端点: <ip_address>:<port>
      --monitoring-endpoint
      是可选的。它接受可从 OpenShift Container Platform 集群访问的活跃和待机 mgrs 的以逗号分隔的 IP 地址列表。如果没有提供,则会自动填充该值。
      --monitoring-endpoint-port
      是可选的。它是与 --monitoring-endpoint 指定的 ceph-mgr Prometheus exporter 关联的端口。如果没有提供,则会自动填充该值。
      --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 卡以确认存储集群有一个绿色勾号指示它处于健康状态。
    • 单击 Object 选项卡,并确认 Object Service数据弹性具有绿色勾号,指示其运行正常。RADOS 对象网关仅列出在以外部模式部署 OpenShift Data Foundation 时包含 RADOS 对象网关端点详细信息的情况。