6.11. 공유 파일 시스템 서비스 채택
OpenShift(RHOSO)의 Red Hat OpenStack Services의 Shared File Systems 서비스(manila)는 파일 공유를 생성하고 관리하는 셀프 서비스 API를 제공합니다. 파일 공유(또는 "공유")는 여러 클라이언트에서 동시 읽기/쓰기 액세스를 위해 빌드됩니다. 이렇게 하면 ReadWriteMany 영구 스토리지가 필요한 클라우드 환경에서 공유 파일 시스템 서비스가 필수적입니다.
RHOSO의 파일 공유에는 네트워크 액세스가 필요합니다. RHOSP(Red Hat OpenStack Platform) 17.1 환경의 네트워킹이 채택 후 새 클라우드의 네트워크 계획과 일치하는지 확인합니다. 이렇게 하면 채택 프로세스 중에 테넌트 워크로드가 스토리지에 계속 연결됩니다. 공유 파일 시스템 서비스 컨트롤 플레인 서비스는 데이터 경로에 없습니다. API, 스케줄러 및 공유 관리자 서비스를 종료해도 기존 공유 파일 시스템에 대한 액세스에는 영향을 미치지 않습니다.
일반적으로 스토리지 및 스토리지 장치 관리는 별도의 네트워크입니다. 공유 파일 시스템 서비스는 스토리지 장치 관리 네트워크에 대한 액세스 권한만 있으면 됩니다. 예를 들어 배포에서 Red Hat Ceph Storage 클러스터를 사용한 경우 "스토리지" 네트워크는 Red Hat Ceph Storage 클러스터의 공용 네트워크를 참조하고 공유 파일 시스템 서비스의 공유 관리자 서비스에 연결할 수 있어야 합니다.
공유 파일 시스템 서비스는 다음 스토리지 네트워킹 시나리오를 지원합니다.
- 해당 파일 공유의 네트워킹을 직접 제어할 수 있습니다.
- RHOSO 관리자는 스토리지 네트워킹을 구성합니다.
6.11.1. 공유 파일 시스템 서비스 구성을 준비하기 위한 지침 링크 복사링크가 클립보드에 복사되었습니다!
컨트롤 플레인에 Shared File Systems 서비스(manila)를 배포하려면 Red Hat OpenStack Platform 17.1 배포에서 원래 구성 파일을 복사해야 합니다. RHOSO(OpenShift) 18.0에서 Red Hat OpenStack Services에 대해 올바른 구성을 채택하려면 파일의 내용을 검토해야 합니다. 일부 콘텐츠를 새 클라우드 환경으로 가져올 필요는 없습니다.
채택을 위해 공유 파일 시스템 서비스 구성 파일을 준비하기 위한 다음 지침을 검토하십시오.
공유 파일 시스템 서비스 Operator는 다음 구성을 설정하고 무시할 수 있습니다.
-
데이터베이스 관련 구성
([database]) -
서비스 인증(
auth_strategy,[keystone_authtoken]) -
메시지 버스 구성(
transport_url,control_exchange) -
기본 붙여넣기 구성(
api_paste_config) -
서비스 간 통신 구성(
[neutron],[nova],[cinder],[glance][oslo_messaging_*])
-
데이터베이스 관련 구성
-
osapi_share_listen구성을 무시합니다. Red Hat OpenStack Services on OpenShift (RHOSO) 18.0에서는 Red Hat OpenShift Container Platform (RHOCP) 경로 및 수신을 사용합니다. - 정책 덮어쓰기를 확인합니다. RHOSO 18.0에서 공유 파일 시스템 서비스는 보안 기본 역할 기반 액세스 제어(RBAC)와 함께 제공되며 덮어쓰기가 필요하지 않을 수 있습니다.
사용자 정의 정책이 필요한 경우
ConfigMap으로 제공해야 합니다. 다음 예제 사양은policy.yaml이라는 파일의 콘텐츠를 사용하여manila-policy라는ConfigMap을 설정하는 방법을 보여줍니다.spec: manila: enabled: true template: manilaAPI: customServiceConfig: | [oslo_policy] policy_file=/etc/manila/policy.yaml extraMounts: - extraVol: - extraVolType: Undefined mounts: - mountPath: /etc/manila/ name: policy readOnly: true propagation: - ManilaAPI volumes: - name: policy projected: sources: - configMap: name: manila-policy items: - key: policy path: policy.yaml-
[DEFAULT]섹션 아래의host옵션 값은hostgroup이어야 합니다. -
Shared File Systems 서비스 API 서비스를 실행하려면
manila: template: manilaAPI의customServiceConfig섹션에enabled_share_protocols옵션을 추가해야 합니다. -
스케줄러 덮어쓰기가 있는 경우
manila: template: manilaScheduler의customServiceConfig섹션에 추가합니다. -
RHOSP 17.1로 여러 스토리지 백엔드 드라이버가 구성된 경우 RHOSO 18.0을 배포할 때 해당 드라이버를 분할해야 합니다. 각 스토리지 백엔드 드라이버는
manila-share서비스의 자체 인스턴스를 사용해야 합니다. 스토리지 백엔드 드라이버에 사용자 지정 컨테이너 이미지가 필요한 경우 Red Hat Ecosystem Catalog 에서 해당 이미지를 찾고,
OpenStackVersion사용자 정의 리소스(CR)를 생성하거나 수정하여 동일한 사용자지정 이름을사용하여 사용자 정의 이미지를 지정합니다.다음 예제에서는 여러 스토리지 백엔드 드라이버를 포함하는
OpenStackControlPlaneCR의 manila 사양을 보여줍니다. 여기서 하나만 사용자 지정 컨테이너 이미지를 사용하고 있습니다.spec: manila: enabled: true template: manilaAPI: customServiceConfig: | [DEFAULT] enabled_share_protocols = nfs replicas: 3 manilaScheduler: replicas: 3 manilaShares: netapp: customServiceConfig: | [DEFAULT] debug = true enabled_share_backends = netapp host = hostgroup [netapp] driver_handles_share_servers = False share_backend_name = netapp share_driver = manila.share.drivers.netapp.common.NetAppDriver netapp_storage_family = ontap_cluster netapp_transport_type = http replicas: 1 pure: customServiceConfig: | [DEFAULT] debug = true enabled_share_backends=pure-1 host = hostgroup [pure-1] driver_handles_share_servers = False share_backend_name = pure-1 share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver flashblade_mgmt_vip = 203.0.113.15 flashblade_data_vip = 203.0.10.14 replicas: 1다음 예제에서는 사용자 정의 컨테이너 이미지를 정의하는
OpenStackVersionCR을 보여줍니다.apiVersion: core.openstack.org/v1beta1 kind: OpenStackVersion metadata: name: openstack spec: customContainerImages: cinderVolumeImages: pure: registry.connect.redhat.com/purestorage/openstack-manila-share-pure-rhosp-18-0OpenStackVersionCR의 이름은OpenStackControlPlaneCR 이름과 일치해야 합니다.암호, 호스트 이름 및 사용자 이름과 같은 중요한 정보를 제공하는 경우 Cryostat 시크릿 및
customServiceConfigSecrets키를 사용합니다. 모든 서비스에서customConfigSecrets를 사용할 수 있습니다. 인증 정보가 필요한 타사 스토리지를 사용하는 경우customServiceConfigSecrets키를 사용하여 manila CR/patch 파일에서 참조하는 보안을 생성합니다. 예를 들면 다음과 같습니다.시크릿을 포함하는 파일을 생성합니다(예:
netapp_secrets.conf):$ cat << __EOF__ > ~/netapp_secrets.conf [netapp] netapp_server_hostname = 203.0.113.10 netapp_login = fancy_netapp_user netapp_password = secret_netapp_password netapp_vserver = mydatavserver __EOF__$ oc create secret generic osp-secret-manila-netapp --from-file=~/<secret>-
&
lt;secret>을 시크릿을 포함하는 파일 이름(예:netapp_secrets.conf)으로 바꿉니다.
-
&
customServiceConfigSecrets섹션의 공유 파일 시스템 서비스 파일에 보안을 추가합니다. 다음 예제에서는manilaShares서비스에osp-secret-manila-netapp시크릿을 추가합니다.spec: manila: enabled: true template: < . . . > manilaShares: netapp: customServiceConfig: | [DEFAULT] debug = true enabled_share_backends = netapp host = hostgroup [netapp] driver_handles_share_servers = False share_backend_name = netapp share_driver = manila.share.drivers.netapp.common.NetAppDriver netapp_storage_family = ontap_cluster netapp_transport_type = http customServiceConfigSecrets: - osp-secret-manila-netapp replicas: 1 < . . . >
6.11.2. 컨트롤 플레인에 공유 파일 시스템 서비스 배포 링크 복사링크가 클립보드에 복사되었습니다!
RHOSP(Red Hat OpenStack Platform) 17.1 배포에서 Shared File Systems 서비스(manila) 구성을 복사한 다음 컨트롤 플레인에 공유 파일 시스템 서비스를 배포합니다.
사전 요구 사항
-
api,cron,scheduler와 같은 공유 파일 시스템 서비스 systemd 서비스가 중지됩니다. 자세한 내용은 Red Hat OpenStack Platform 서비스 중지 를 참조하십시오. - 배포에서 NFS를 통해 CephFS를 스토리지 백엔드로 사용하는 경우 Pacemaker 순서 지정 및 배치 제약 조건이 조정됩니다. 자세한 내용은 Red Hat OpenStack Platform 서비스 중지 를 참조하십시오.
-
공유 파일 시스템 서비스 Pacemaker 서비스(
openstack-manila-share)가 중지되었습니다. 자세한 내용은 Red Hat OpenStack Platform 서비스 중지 를 참조하십시오. - 데이터베이스 마이그레이션이 완료되었습니다. 자세한 내용은 MariaDB 인스턴스로 데이터베이스 마이그레이션을 참조하십시오.
-
manila-share서비스를 배포할 RHOCP(Red Hat OpenShift Container Platform) 노드는 스토리지 시스템이 있는 관리 네트워크에 연결할 수 있습니다. - 배포에서 NFS를 스토리지 백엔드로 사용하는 경우 Ceph 오케스트레이터를 사용하여 Red Hat Ceph Storage 클러스터에 새 클러스터형 Ceph NFS 서비스가 배포됩니다. 자세한 내용은 Ceph NFS 클러스터 생성을 참조하십시오.
- 공유 파일 시스템 서비스를 채택하기 전에 Identity 서비스(keystone) 및 memcached와 같은 서비스를 사용할 수 있습니다.
-
driver_handles_share_servers=True를 설정하여 테넌트 기반 네트워킹을 활성화한 경우 Networking 서비스(neutron)가 배포됩니다. CONTROLLER1_SSH환경 변수가 정의되어 RHOSP 컨트롤러 노드를 가리킵니다. 다음 예제 값을 환경에 적합한 값으로 바꿉니다.$ CONTROLLER1_SSH="ssh -i <path to SSH key> root@<node IP>"프로세스
참조하려면 RHOSP 17.1에서 구성 파일을 복사합니다.
$ CONTROLLER1_SSH cat /var/lib/config-data/puppet-generated/manila/etc/manila/manila.conf | awk '!/^ *#/ && NF' > ~/manila.conf- RHOSP 17.1 이후의 구성 변경 사항에 대해 구성 파일을 검토합니다. OpenShift의 Red Hat OpenStack Services on OpenShift(RHOSO)용 이 파일을 준비하는 방법에 대한 자세한 내용은 공유 파일 시스템 서비스 구성 준비를 위한 지침 을 참조하십시오.
OpenStackControlPlaneCR의 패치 파일을 생성하여 공유 파일 시스템 서비스를 배포합니다. 다음 예제manila.patch파일은 기본 CephFS를 사용합니다.$ cat << __EOF__ > ~/manila.patch spec: manila: enabled: true apiOverride: route: {} template: databaseInstance: openstack databaseAccount: manila secret: osp-secret manilaAPI: replicas: 3 customServiceConfig: | [DEFAULT] enabled_share_protocols = cephfs override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.801 spec: type: LoadBalancer manilaScheduler: replicas: 3 manilaShares: cephfs: replicas: 1 customServiceConfig: | [DEFAULT] enabled_share_backends = tripleo_ceph host = hostgroup [cephfs] driver_handles_share_servers=False share_backend_name=cephfs2 share_driver=manila.share.drivers.cephfs.driver.CephFSDriver cephfs_conf_path=/etc/ceph/ceph.conf cephfs_auth_id=openstack cephfs_cluster_name=ceph cephfs_volume_mode=0755 cephfs_protocol_helper_type=CEPHFS networkAttachments:3 - storage extraMounts:4 - name: v1 region: r1 extraVol: - propagation: - ManilaShare extraVolType: Ceph volumes: - name: ceph secret: secretName: ceph-conf-files mounts: - name: ceph mountPath: "/etc/ceph" readOnly: true __EOF__- 1
- IPv6를 사용하는 경우 로드 밸런서 IP를 환경의 로드 밸런서 IP(예:
metallb.universe.tf/loadBalancerIPs: fd00:bbbb::80)로 변경합니다. - 2
- 백엔드 이름(
share_backend_name)이 RHOSP 17.1의 이름과 동일한지 확인합니다. - 3
networkAttachments섹션에서 적절한 스토리지 관리 네트워크를 지정해야 합니다. 예를 들어 CephFS 백엔드 드라이버가 있는manilaShares인스턴스가스토리지네트워크에 연결되어 있습니다.- 4
- 서비스에 추가 파일을 추가해야 하는 경우
extraMounts를 사용할 수 있습니다. 예를 들어 Red Hat Ceph Storage를 사용하는 경우 공유 파일 시스템 서비스 Ceph 사용자의 인증 키와ceph.conf구성 파일을 추가할 수 있습니다.
다음 예제 패치 파일은 NFS를 통해 CephFS를 사용합니다.
$ cat << __EOF__ > ~/manila.patch spec: manila: enabled: true apiOverride: route: {} template: databaseInstance: openstack secret: osp-secret manilaAPI: replicas: 3 customServiceConfig: | [DEFAULT] enabled_share_protocols = cephfs override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.80 spec: type: LoadBalancer manilaScheduler: replicas: 3 manilaShares: cephfs: replicas: 1 customServiceConfig: | [DEFAULT] enabled_share_backends = cephfs host = hostgroup [cephfs] driver_handles_share_servers=False share_backend_name=tripleo_ceph share_driver=manila.share.drivers.cephfs.driver.CephFSDriver cephfs_conf_path=/etc/ceph/ceph.conf cephfs_auth_id=openstack cephfs_cluster_name=ceph cephfs_protocol_helper_type=NFS cephfs_nfs_cluster_id=cephfs cephfs_ganesha_server_ip=172.17.5.47 networkAttachments: - storage __EOF__
-
NFS를 통해 CephFS에 대한
manilaShares서비스를 채택하기 전에 클러스터형 Ceph NFS 서비스를 생성해야 합니다. 서비스 이름은cephfs_nfs_cluster_id여야 합니다.cephfs_nfs_cluster_id옵션은 Red Hat Ceph Storage에 생성된 NFS 클러스터의 이름으로 설정됩니다. cephfs_ganesha_server_ip옵션은 RHOSP 17.1 환경의 구성에서 유지됩니다.OpenStackControlPlaneCR을 패치합니다.$ oc patch openstackcontrolplane openstack --type=merge --patch-file=~/<manila.patch>
-
&
lt;manila.patch>를 패치 파일의 이름으로 바꿉니다.
검증
생성된 공유 파일 시스템 서비스 Pod를 검사합니다.
$ oc get pods -l service=manila공유 파일 시스템 API 서비스가 ID 서비스(keystone)에 등록되어 있는지 확인합니다.
$ openstack service list | grep manila$ openstack endpoint list | grep manila | 1164c70045d34b959e889846f9959c0e | regionOne | manila | share | True | internal | http://manila-internal.openstack.svc:8786/v1/%(project_id)s | | 63e89296522d4b28a9af56586641590c | regionOne | manilav2 | sharev2 | True | public | https://manila-public-openstack.apps-crc.testing/v2 | | af36c57adcdf4d50b10f484b616764cc | regionOne | manila | share | True | public | https://manila-public-openstack.apps-crc.testing/v1/%(project_id)s | | d655b4390d7544a29ce4ea356cc2b547 | regionOne | manilav2 | sharev2 | True | internal | http://manila-internal.openstack.svc:8786/v2 |서비스 상태를 테스트합니다.
$ openstack share service list $ openstack share pool list --detail기존 워크로드를 확인합니다.
$ openstack share list $ openstack share snapshot list
6.11.3. Red Hat OpenStack Platform 독립 실행형 Ceph NFS 서비스 해제 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션의 이 콘텐츠는 이 릴리스에서 기술 프리뷰로 제공되므로 Red Hat에서 완전히 지원되지 않습니다. 테스트 용도로만 사용해야 하며 프로덕션 환경에 배포해서는 안 됩니다. 자세한 내용은 기술 프리뷰 를 참조하십시오.
배포에서 NFS를 통해 CephFS를 사용하는 경우 RHOSP(Red Hat OpenStack Platform) 독립 실행형 NFS 서비스를 해제해야 합니다. 향후 소프트웨어 업그레이드는 이전 NFS 서비스를 지원하지 않으므로 해제 기간이 짧은지 확인하십시오.
사전 요구 사항
- 공유 파일 시스템 API를 쿼리하여 기존 공유의 새 내보내기 위치를 확인했습니다.
- 이전 NFS 서버 사용을 중지하도록 각 클라이언트에서 공유 파일 시스템을 마운트 해제하고 다시 마운트했습니다.
- Red Hat OpenShift Container Platform(RHOCP)용 공유 파일 시스템 서비스 CSI 플러그인과 공유 파일 시스템 서비스를 사용하는 경우 애플리케이션 Pod를 축소하고 다시 확장하여 공유를 마이그레이션했습니다.
새 워크로드를 생성하는 클라이언트는 이전 NFS 서비스를 통해 공유 내보내기를 사용할 수 없습니다. 공유 파일 시스템 서비스는 더 이상 이전 NFS 서비스와 통신하지 않으며 이전 NFS 서비스에서 내보내기 규칙을 적용하거나 변경할 수 없습니다.
프로세스
manila-share서비스 구성에서cephfs_ganesha_server_ip옵션을 제거합니다.참고그러면
manila-share프로세스가 다시 시작되고 모든 공유에서 이전 NFS 서비스에 적용된 내보내기 위치가 제거됩니다.$ cat << __EOF__ > ~/manila.patch spec: manila: enabled: true apiOverride: route: {} template: manilaShares: cephfs: replicas: 1 customServiceConfig: | [DEFAULT] enabled_share_backends = cephfs host = hostgroup [cephfs] driver_handles_share_servers=False share_backend_name=cephfs share_driver=manila.share.drivers.cephfs.driver.CephFSDriver cephfs_conf_path=/etc/ceph/ceph.conf cephfs_auth_id=openstack cephfs_cluster_name=ceph cephfs_protocol_helper_type=NFS cephfs_nfs_cluster_id=cephfs networkAttachments: - storage __EOF__OpenStackControlPlane사용자 정의 리소스를 패치합니다.$ oc patch openstackcontrolplane openstack --type=merge --patch-file=~/<manila.patch>-
&
lt;manila.patch>를 패치 파일의 이름으로 바꿉니다.
-
&
서비스와 연결된 Pacemaker 리소스를 비활성화하고 삭제하여 RHOSP 컨트롤 플레인 노드에서 독립 실행형
ceph-nfs서비스를 정리합니다.중요RHOSO 18.0이 작동할 때까지 이 단계를 지연할 수 있습니다. 이 기간 동안 컨트롤러 노드를 해제할 수 없습니다.
$ sudo pcs resource disable ceph-nfs $ sudo pcs resource disable ip-<VIP> $ sudo pcs resource unmanage ceph-nfs $ sudo pcs resource unmanage ip-<VIP>-
&
lt;VIP>를 해당 환경의ceph-nfs서비스에 할당된 IP 주소로 바꿉니다.
-
&