6장. 기존 외부 OpenShift Data Foundation 클러스터에 파일 및 개체 스토리지 추가

OpenShift Data Foundation이 외부 모드로 구성되면 영구 볼륨 클레임 및 오브젝트 버킷 클레임에 대한 스토리지를 제공하는 여러 가지 방법이 있습니다.

  • 블록 스토리지에 대한 영구 볼륨 클레임은 외부 Red Hat Ceph Storage 클러스터에서 직접 제공됩니다.
  • 파일 스토리지에 대한 영구 볼륨 클레임은 메타데이터 서버(MDS)를 외부 Red Hat Ceph Storage 클러스터에 추가하여 제공할 수 있습니다.
  • 오브젝트 스토리지에 대한 오브젝트 버킷 클레임은 Multicloud Object Gateway를 사용하거나 외부 Red Hat Ceph Storage 클러스터에 Ceph Object Gateway를 추가하여 제공할 수 있습니다.

다음 프로세스를 사용하여 블록 스토리지만 제공하기 위해 처음 배포된 외부 OpenShift Data Foundation 클러스터에 파일 스토리지(메타데이터 서버 사용) 또는 개체 스토리지(Ceph Object Gateway 사용)를 모두 추가합니다.

사전 요구 사항

  • OpenShift Container Platform 버전 4.9 이상에 OpenShift Data Foundation 4.9가 설치되어 실행되고 있어야 합니다. 또한 외부 모드의 OpenShift Data Foundation Cluster는 Ready 상태입니다.
  • 외부 Red Hat Ceph Storage 클러스터는 다음 중 하나 또는 둘 다로 구성됩니다.

    • 오브젝트 스토리지를 위해 OpenShift Container Platform 클러스터에서 액세스할 수 있는 Ceph Object Gateway(RGW) 끝점
    • 파일 저장을 위한 메타데이터 서버(MDS) 풀
  • 외부 OpenShift Data Foundation 클러스터 배포 중에 ceph-external-cluster-details-exporter.py 스크립트에 사용된 매개변수를 알고 있는지 확인합니다.

절차

  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 \
    --rgw-pool-prefix rgw-pool-prefix
    --run-as-user
    OpenShift Data Foundation 클러스터 배포 중에 사용되는 클라이언트 이름입니다. 다른 클라이언트 이름이 설정되지 않은 경우 기본 클라이언트 이름 client.healthchecker 를 사용합니다.
    --rgw-pool-prefix
    Ceph Object Gateway 풀에 사용되는 접두사입니다. 기본 접두사가 사용되는 경우 생략할 수 있습니다.
  3. 외부 Red Hat Ceph Storage 클러스터에서 구성 세부 정보를 생성하고 저장합니다.

    1. 외부 Red Hat Ceph Storage 클러스터의 모든 클라이언트 노드에서 ceph-external-cluster-details-exporter.py 를 실행하여 구성 세부 정보를 생성합니다.

      # 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 --run-as-user ocs-client-name  --rgw-endpoint rgw-endpoint --rgw-pool-prefix rgw-pool-prefix
      --monitoring-endpoint
      은 선택 사항입니다. OpenShift Container Platform 클러스터에서 연결할 수 있는 활성 및 대기 mgrs의 쉼표로 구분된 IP 주소 목록을 허용합니다. 제공되지 않으면 값이 자동으로 채워집니다.
      --monitoring-endpoint-port
      은 선택 사항입니다. --monitoring-endpoint 에서 지정한 ceph-mgr Prometheus 내보내기와 연결된 포트입니다. 제공되지 않으면 값이 자동으로 채워집니다.
      --run-as-user
      OpenShift Data Foundation 클러스터 배포 중에 사용되는 클라이언트 이름입니다. 다른 클라이언트 이름이 설정되지 않은 경우 기본 클라이언트 이름 client.healthchecker를 사용합니다.
      --rgw-endpoint
      이 매개변수를 제공하여 OpenShift Data Foundation의 Ceph Object Gateway를 통해 개체 스토리지를 프로비저닝합니다. (선택 사항)
      --rgw-pool-prefix
      Ceph Object Gateway 풀에 사용되는 접두사입니다. 기본 접두사가 사용되는 경우 생략할 수 있습니다.

      사용자 권한이 다음과 같이 업데이트됩니다.

      caps: [mgr] allow command config
      caps: [mon] allow r, allow command quorum_status, allow command version
      caps: [osd] allow rwx pool=default.rgw.meta, allow r pool=.rgw.root, allow rw pool=default.rgw.control, allow rx pool=default.rgw.log, allow x pool=default.rgw.buckets.index
      참고

      Ceph Object Gateway 세부 정보(제공되는 경우)를 제외한 모든 매개변수(선택 사항)가 외부 모드에서 OpenShift Data Foundation을 배포하는 동안 사용된 것과 동일한지 확인합니다.

    2. 스크립트의 출력을 external-cluster-config.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.xxx", "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.xxx:xxxx", "poolPrefix": "default"}}, {"name": "rgw-admin-ops-user", "kind": "Secret", "data": {"accessKey": "<access-key>", "secretKey": "<secret-key>"}}]
  4. 생성된 JSON 파일을 업로드합니다.

    1. OpenShift 웹 콘솔에 로그인합니다.
    2. 워크로드시크릿 을 클릭합니다.
    3. projectopenshift-storage 로 설정합니다.
    4. rook-ceph-external-cluster-details 를 클릭합니다.
    5. 작업 (hiera) → 시크릿 편집을 클릭합니다.
    6. 찾아보기 를 클릭하고 external-cluster-config.json 파일을 업로드합니다.
    7. 저장을 클릭합니다.

검증 단계

  • OpenShift Data Foundation 클러스터가 정상이고 데이터가 탄력적인지 확인하려면 스토리지OpenShift 데이터 기반 → 스토리지 시스템 탭으로 이동한 다음 스토리지 시스템 이름을 클릭합니다.

    • 개요블록 및 파일 탭에서 상태 카드를 확인하여 스토리지 클러스터에 녹색 눈금이 정상인지 확인합니다.
  • 파일 저장을 위해 메타데이터 서버를 추가한 경우:

    1. 워크로드포드 를 클릭하고 csi-cephfsplugin-* Pod가 새로 생성되고 실행 중 상태인지 확인합니다.
    2. 스토리지스토리지 클래스 를 클릭하고 ocs-external-storagecluster-cephfs 스토리지 클래스가 생성되었는지 확인합니다.
  • 오브젝트 스토리지를 위해 Ceph Object Gateway를 추가한 경우:

    1. 스토리지스토리지 클래스 를 클릭하고 ocs-external-storagecluster-ceph-rgw 스토리지 클래스가 생성되었는지 확인합니다.
    2. OpenShift Data Foundation 클러스터가 정상이고 데이터가 탄력적인지 확인하려면 스토리지OpenShift 데이터 기반 → 스토리지 시스템 탭으로 이동한 다음 스토리지 시스템 이름을 클릭합니다.
    3. 오브젝트 탭을 클릭하고 오브젝트 서비스 및 데이터 복원력 이 정상임을 나타내는 녹색 눈금이 있는지 확인합니다.