4.4. 更新 OpenShift Container Storage 外部 secret
更新至最新版本的 OpenShift Container Storage 后,更新 OpenShift Container Storage 外部 secret。
批处理更新不需要更新外部 secret。例如,当从 OpenShift Container Storage 4.8.X 更新至 4.8.Y 时。
先决条件
- 将 OpenShift Container Platform 集群更新至 4.8.z 的最新稳定版本,请参阅更新集群。
- OpenShift Container Storage Operator 已升级到 4.8 版本。如需更多信息,请参阅 以外部模式为 OpenShift Container Storage Operator 启用自动更新,或以 外部模式手动更新 OpenShift Container Storage operator。
- 在 Status 卡中的 Block and File 下,确认 存储 集群具有绿色勾号标记。
-
在 Status 卡中的 Object 下,确认 Object Service 和 Data Resiliency 都是
Ready
状态(绿色勾号)。 - Red Hat Ceph Storage 必须安装并配置 Ceph 控制面板。
流程
下载
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
通过在外部 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
运行之前下载的 python 脚本,再保存从外部 Red Hat Ceph Storage 存储集群生成的 JSON 输出。
运行之前下载的 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 时使用的参数相同。
保存在上一步中运行脚本后生成的 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"}}]
上传生成的 JSON 文件。
- 登录 OpenShift Web 控制台。
- 点 Workloads → Secrets。
-
将项目设置为
openshift-storage
。 - 点 rook-ceph-external-cluster-details。
- 点 Actions (⋮) → Edit Secret。
- 点 Browse,再上传该 JSON 文件。
- 点 Save。
验证步骤
在 OpenShift Web 控制台中,进入 Storage → Overview → Object 选项卡。
-
在 Status 卡中,验证 Object Service 和 Data Resiliency 是否都处于
Ready
状态(绿色勾号)。
-
在 Status 卡中,验证 Object Service 和 Data Resiliency 是否都处于
在 OpenShift Web 控制台中,进入 Storage → Overview → Block and File 选项卡。
- 在 Status 卡中,验证 Storage Cluster 是否具有绿色勾号标记。