4.4. OpenShift Container Storage 외부 보안 업데이트

최신 버전의 OpenShift Container Storage로 업데이트한 후 OpenShift Container Storage 외부 시크릿을 업데이트합니다.

참고

배치 업데이트에는 외부 시크릿을 업데이트할 필요가 없습니다. 예를 들어 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
      은 선택 사항입니다. OpenShift Container Storage용 Ceph Rados 게이트웨이를 통해 오브젝트 스토리지를 프로비저닝할 경우 이 매개변수를 제공합니다. 다음과 같은 형식으로 끝점을 제공합니다. < ip_address>:<port>.
      --monitoring-endpoint
      은 선택 사항입니다. OpenShift Container Platform 클러스터에서 연결할 수 있는 활성 ceph-mgr의 IP 주소입니다. 제공되지 않으면 값이 자동으로 채워집니다.
      --monitoring-endpoint-port
      은 선택 사항입니다. --monitoring-endpoint 에서 지정한 ceph-mgr Prometheus 내보내기와 연결된 포트입니다. 제공되지 않으면 값이 자동으로 채워집니다.
      --run-as-user

      OpenShift Container Storage 4.7 배포 중에 사용되는 클라이언트 이름입니다. OpenShift Container Storage 4.7 배포 중에 이 옵션을 사용하지 않은 경우 기본 클라이언트 이름 client.healthchecker 가 설정됩니다.

      참고

      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 웹 콘솔에 로그인합니다.
    2. 워크로드 → 시크릿 을 클릭합니다.
    3. project를 openshift-storage 로 설정합니다.
    4. rook-ceph-external-cluster-details 를 클릭합니다.
    5. 작업(hiera) → 시크릿 편집 을 클릭합니다.
    6. 찾아보기 를 클릭하고 JSON 파일을 업로드합니다.
    7. 저장을 클릭합니다.

검증 단계

  1. OpenShift 웹 콘솔에서 스토리지 → 개요 → 오브젝트 탭으로 이동합니다.

    • 상태 카드에서 Object ServiceData ResiliencyReady 상태(Green tick)인지 확인합니다.
  2. OpenShift 웹 콘솔에서 스토리지 → 개요 → 블록 및 파일 탭으로 이동합니다.

    • 상태 카드에서 스토리지 클러스터에 녹색 눈금 이 있는지 확인합니다.