4.12.3. 논리 볼륨 관리자 스토리지를 사용하는 영구 스토리지


LVM Storage(Logical 볼륨 관리자 스토리지)는 TopoLVM CSI 드라이버를 사용하여 단일 노드 OpenShift 클러스터에서 로컬 스토리지를 동적으로 프로비저닝합니다.

LVM Storage는 Logical Volume Manager를 사용하여 씬 프로비저닝 볼륨을 생성하고 제한된 리소스 단일 노드 OpenShift 클러스터에서 블록 스토리지의 동적 프로비저닝을 제공합니다.

4.12.3.1. 단일 노드 OpenShift 클러스터에 LVM 스토리지 배포

단일 노드 OpenShift 베어 메탈 또는 사용자 프로비저닝 인프라 클러스터에 LVM 스토리지를 배포하고 워크로드에 대한 스토리지를 동적으로 프로비저닝하도록 구성할 수 있습니다.

LVM Storage는 사용 가능한 사용되지 않은 모든 디스크를 사용하여 볼륨 그룹을 생성하고 볼륨 그룹의 크기가 90%인 단일 씬 풀을 생성합니다. 볼륨 그룹의 나머지 10%는 필요에 따라 thin 풀을 확장하여 데이터 복구를 활성화할 수 있습니다. 이러한 복구를 수동으로 수행해야 할 수도 있습니다.

LVM Storage에서 프로비저닝한 PVC(영구 볼륨 클레임) 및 볼륨 스냅샷을 사용하여 스토리지를 요청하고 볼륨 스냅샷을 생성할 수 있습니다.

LVM Storage는 씬 프로비저닝 기능을 활용하기 위해 기본 초과 프로비저닝 제한 10을 구성합니다. 단일 노드 OpenShift 클러스터에서 생성할 수 있는 볼륨 및 볼륨 스냅샷의 총 크기는 thin 풀의 크기가 10배입니다.

다음 중 하나를 사용하여 단일 노드 OpenShift 클러스터에 LVM 스토리지를 배포할 수 있습니다.

  • Red Hat Advanced Cluster Management (RHACM)
  • OpenShift Container Platform 웹 콘솔
4.12.3.1.1. 요구 사항

단일 노드 OpenShift 클러스터에 LVM Storage 배포를 시작하기 전에 다음 요구 사항이 충족되었는지 확인합니다.

  • OpenShift Container Platform 클러스터에 RHACM(Red Hat Advanced Cluster Management)을 설치했습니다.
  • 관리되는 모든 단일 노드 OpenShift 클러스터에는 스토리지를 프로비저닝하는 데 사용되는 전용 디스크가 있습니다.

단일 노드 OpenShift 클러스터에 LVM 스토리지를 배포하기 전에 다음 제한 사항을 유의하십시오.

  • OpenShift Container Platform 클러스터에서 LVMCluster CR(사용자 정의 리소스)의 단일 인스턴스만 생성할 수 있습니다.
  • 장치가 LVMCluster CR의 일부가 되면 제거할 수 없습니다.
4.12.3.1.2. 제한

단일 노드 OpenShift를 배포하는 경우 LVM Storage에는 다음과 같은 제한 사항이 있습니다.

  • 총 스토리지 크기는 기본 LVM(Logical Volume Manager) 씬 풀의 크기 및 초과 프로비저닝 요인으로 제한됩니다.
  • 논리 볼륨의 크기는 PE(물리 확장 영역) 및 논리 확장 영역(LE)의 크기에 따라 다릅니다.

    • 물리적 장치 및 논리 장치를 생성하는 동안 PE 및 LE의 크기를 정의할 수 있습니다.
    • 기본 PE 및 LE 크기는 4MB입니다.
    • PE 크기가 증가하면 커널 제한 및 디스크 공간에 따라 LVM의 최대 크기가 결정됩니다.
Expand
표 4.1. 기본 PE 및 LE 크기를 사용하는 다양한 아키텍처의 크기 제한
아키텍처RHEL 5RHEL 6RHEL 7RHEL 8

32비트

16 TB

16 TB

-

-

64비트

8 EB [1]

8 EB [1]

100 TB [2]

8 EB [1]

500 TB [2]

8 EB

  1. 중간 크기.
  2. 테스트된 크기.
4.12.3.1.3. CLI를 사용하여 LVM 스토리지 설치

클러스터 관리자는 CLI를 사용하여 LVM 스토리지(Logical Volume Manager Storage)를 설치할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc)가 설치되어 있습니다.
  • cluster-admin 권한이 있는 사용자로 로그인했습니다.

절차

  1. LVM Storage Operator의 네임스페이스를 생성합니다.

    1. lvms-namespace.yaml 파일에 다음 YAML을 저장합니다.

      apiVersion: v1
      kind: Namespace
      metadata:
        labels:
          openshift.io/cluster-monitoring: "true"
          pod-security.kubernetes.io/enforce: privileged
          pod-security.kubernetes.io/audit: privileged
          pod-security.kubernetes.io/warn: privileged
        name: openshift-storage
    2. 네임스페이스 CR을 생성합니다.

      $ oc create -f lvms-namespace.yaml
  2. LVM Storage Operator를 위한 Operator group을 생성합니다.

    1. lvms-operatorgroup.yaml 파일에 다음 YAML을 저장합니다.

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: openshift-storage-operatorgroup
        namespace: openshift-storage
      spec:
        targetNamespaces:
        - openshift-storage
    2. OperatorGroup CR을 생성합니다.

      $ oc create -f lvms-operatorgroup.yaml
  3. LVM Storage Operator를 구독하십시오.

    1. lvms-sub.yaml 파일에 다음 YAML을 저장합니다.

      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: lvms
        namespace: openshift-storage
      spec:
        installPlanApproval: Automatic
        name: lvms-operator
        source: redhat-operators
        sourceNamespace: openshift-marketplace
    2. 서브스크립션 CR을 생성합니다.

      $ oc create -f lvms-sub.yaml
  4. LVMCluster 리소스를 생성합니다.

    1. lvmcluster.yaml 파일에 다음 YAML을 저장합니다.

      apiVersion: lvm.topolvm.io/v1alpha1
      kind: LVMCluster
      metadata:
       name: my-lvmcluster
       namespace: openshift-storage
      spec:
       storage:
         deviceClasses:
         - name: vg1
           deviceSelector:
             paths:
             - /dev/disk/by-path/pci-0000:87:00.0-nvme-1
             - /dev/disk/by-path/pci-0000:88:00.0-nvme-1
           thinPoolConfig:
             name: thin-pool-1
             sizePercent: 90
             overprovisionRatio: 10
           nodeSelector:
             nodeSelectorTerms:
             - matchExpressions:
               - key: app
                 operator: In
                 values:
                 - test1
    2. LVMCluster CR을 생성합니다.

      $ oc create -f lvmcluster.yaml
  5. Operator가 설치되었는지 확인하려면 다음 명령을 입력합니다.

    $ oc get csv -n openshift-storage -o custom-columns=Name:.metadata.name,Phase:.status.phase

    출력 예

    Name                         Phase
    4.13.0-202301261535          Succeeded

4.12.3.1.4. 웹 콘솔을 사용하여 LVM 스토리지 설치

Red Hat OpenShift Container Platform OperatorHub를 사용하여 LVM 스토리지(Logical Volume Manager 스토리지)를 설치할 수 있습니다.

사전 요구 사항

  • 단일 노드 OpenShift 클러스터에 액세스할 수 있습니다.
  • cluster-admin 및 Operator 설치 권한이 있는 계정을 사용하고 있습니다.

절차

  1. OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. Operators OperatorHub를 클릭합니다.
  3. 스크롤하거나 키워드로 필터링 상자에 LVM 스토리지 를 입력하여 LVM 스토리지를 찾습니다.
  4. 설치를 클릭합니다.
  5. Operator 설치 페이지에서 다음 옵션을 설정합니다.

    1. Channel을 stable-4.13 으로 업데이트합니다.
    2. 클러스터의 특정 네임스페이스로 설치 모드 입니다.
    3. Operator 권장 네임스페이스 openshift-storage로 네임스페이스 가 설치되어 있습니다. openshift-storage 네임스페이스가 없으면 Operator 설치 중에 생성됩니다.
    4. 자동 또는 수동으로의 승인 전략 .

      자동 업데이트를 선택하면 OLM(Operator Lifecycle Manager)은 개입 없이 Operator의 실행 중인 인스턴스를 자동으로 업그레이드합니다.

      수동 업데이트를 선택하면 OLM에서 업데이트 요청을 생성합니다. 클러스터 관리자는 Operator를 최신 버전으로 업데이트하기 위해 해당 업데이트 요청을 수동으로 승인해야 합니다.

  6. 설치를 클릭합니다.

검증 단계

  • LVM Storage에 성공적으로 설치를 나타내는 녹색 눈금이 표시되는지 확인합니다.
4.12.3.1.5. OpenShift 웹 콘솔을 사용하여 설치된 LVM 스토리지 설치 제거

Red Hat OpenShift Container Platform 웹 콘솔을 사용하여 LVM 스토리지의 연결을 해제할 수 있습니다.

사전 요구 사항

  • LVM Storage에서 프로비저닝한 스토리지를 사용하는 클러스터의 모든 애플리케이션을 삭제하셨습니다.
  • LVM 스토리지를 사용하여 프로비저닝된 PVC(영구 볼륨 클레임) 및 PV(영구 볼륨)를 삭제했습니다.
  • LVM Storage에서 프로비저닝한 모든 볼륨 스냅샷을 삭제했습니다.
  • oc get logicalvolume 명령을 사용하여 논리 볼륨 리소스가 없음을 확인했습니다.
  • cluster-admin 권한이 있는 계정을 사용하여 단일 노드 OpenShift 클러스터에 액세스할 수 있습니다.

절차

  1. Operator 설치된 Operator 페이지에서 LVM Storage 로 스크롤하거나 이름별 필터링LVM Storage 를 입력하여 찾습니다.
  2. LVMCluster 탭을 클릭합니다.
  3. LVMCluster 페이지 오른쪽에 있는 작업 드롭다운 메뉴에서 LVMCluster 삭제 를 선택합니다.
  4. 세부 정보 탭을 클릭합니다.
  5. Operator 상세 정보 페이지 오른쪽에 있는 작업 드롭다운 메뉴에서 Operator 제거를 선택합니다.
  6. 제거를 선택합니다. LVM 스토리지는 실행을 중지하고 완전히 제거됩니다.
4.12.3.1.6. 연결이 끊긴 환경에서 LVM 스토리지 설치

연결이 끊긴 환경에서 OpenShift Container Platform 4.13에 LVM 스토리지를 설치할 수 있습니다. 이 절차에서 참조되는 모든 섹션은 추가 리소스에 연결됩니다.

사전 요구 사항

  • 연결이 끊긴 설치 미러링 정보 섹션을 읽습니다.
  • OpenShift Container Platform 이미지 리포지토리에 액세스할 수 있습니다.
  • 미러 레지스트리를 생성하셨습니다.

절차

  1. 이미지 세트 구성 절차 생성의 단계를 따르십시오. LVM Storage에 대한 ImageSetConfiguration 리소스를 생성하려면 다음 예제 YAML 파일을 사용할 수 있습니다.

    LVM 스토리지의 ImageSetConfiguration 파일 예

    kind: ImageSetConfiguration
    apiVersion: mirror.openshift.io/v1alpha2
    archiveSize: 4 
    1
    
    storageConfig: 
    2
    
      registry:
        imageURL: example.com/mirror/oc-mirror-metadata 
    3
    
        skipTLS: false
    mirror:
      platform:
        channels:
        - name: stable-4.13 
    4
    
          type: ocp
        graph: true 
    5
    
      operators:
      - catalog: registry.redhat.io/redhat/redhat-operator-index:v4.13 
    6
    
        packages:
        - name: lvms-operator 
    7
    
          channels:
          - name: stable 
    8
    
      additionalImages:
      - name: registry.redhat.io/ubi9/ubi:latest 
    9
    
      helm: {}

    1
    archiveSize 를 추가하여 이미지 세트 내에서 각 파일의 최대 크기를 GiB 단위로 설정합니다.
    2
    이미지 세트 메타데이터를 저장할 백엔드 위치를 설정합니다. 이 위치는 레지스트리 또는 로컬 디렉터리일 수 있습니다. 기술 프리뷰 OCI 기능을 사용하지 않는 한 storageConfig 값을 지정해야 합니다.
    3
    스토리지 백엔드의 레지스트리 URL을 설정합니다.
    4
    채널을 설정하여 OpenShift Container Platform 이미지를 검색합니다.
    5
    웹 콘솔을 사용할 때 클러스터 업데이트 환경을 개선할 수 있도록 OSUS(OpenShift Update Service) 그래프 이미지를 생성하려면 graph: true 를 추가합니다. 자세한 내용은 OpenShift 업데이트 서비스 정보를 참조하십시오.
    6
    Operator 카탈로그를 설정하여 OpenShift Container Platform 이미지를 검색합니다.
    7
    이미지 세트에 포함할 특정 Operator 패키지만 지정합니다. 이 필드를 제거하여 카탈로그의 모든 패키지를 검색합니다.
    8
    이미지 세트에 포함할 Operator 패키지의 특정 채널만 지정합니다. 해당 채널에서 번들을 사용하지 않는 경우에도 Operator 패키지의 기본 채널을 포함해야 합니다. oc mirror list operators --catalog=<catalog_name> --package=<package_name > 명령을 실행하여 기본 채널을 찾을 수 있습니다.
    9
    이미지 세트에 포함할 추가 이미지를 지정합니다.
  2. 이미지 세트 미러링 섹션의 미러 레지스트리 절차를 따르십시오.
  3. 이미지 레지스트리 저장소 미러링 구성 섹션의 절차를 따르십시오.
4.12.3.1.7. RHACM을 사용한 LVM 스토리지 설치

LVM Storage는 RHACM(Red Hat Advanced Cluster Management)을 사용하여 단일 노드 OpenShift 클러스터에 배포됩니다. PlacementRule 리소스에 지정된 선택기와 일치하는 관리 클러스터에 Operator를 배포하고 구성하는 RHACM에 정책 오브젝트를 생성합니다. 이 정책은 나중에 가져오고 배치 규칙을 충족하는 클러스터에도 적용됩니다.

사전 요구 사항

  • cluster-admin 및 Operator 설치 권한이 있는 계정을 사용하여 RHACM 클러스터에 액세스할 수 있습니다.
  • LVM 스토리지에서 사용할 각 단일 노드 OpenShift 클러스터의 전용 디스크입니다.
  • 단일 노드 OpenShift 클러스터는 RHACM에서 가져오거나 생성해야 합니다.

절차

  1. OpenShift Container Platform 인증 정보를 사용하여 RHACM CLI에 로그인합니다.
  2. 정책을 생성할 네임스페이스를 생성합니다.

    # oc create ns lvms-policy-ns
  3. 정책을 생성하려면 다음 YAML을 policy-lvms-operator.yaml 과 같은 이름으로 파일에 저장합니다.

    apiVersion: apps.open-cluster-management.io/v1
    kind: PlacementRule
    metadata:
      name: placement-install-lvms
    spec:
      clusterConditions:
      - status: "True"
        type: ManagedClusterConditionAvailable
      clusterSelector: 
    1
    
        matchExpressions:
        - key: mykey
          operator: In
          values:
          - myvalue
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-install-lvms
    placementRef:
      apiGroup: apps.open-cluster-management.io
      kind: PlacementRule
      name: placement-install-lvms
    subjects:
    - apiGroup: policy.open-cluster-management.io
      kind: Policy
      name: install-lvms
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      annotations:
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
        policy.open-cluster-management.io/standards: NIST SP 800-53
      name: install-lvms
    spec:
      disabled: false
      remediationAction: enforce
      policy-templates:
      - objectDefinition:
          apiVersion: policy.open-cluster-management.io/v1
          kind: ConfigurationPolicy
          metadata:
            name: install-lvms
          spec:
            object-templates:
            - complianceType: musthave
              objectDefinition:
                apiVersion: v1
                kind: Namespace
                metadata:
                  labels:
                    openshift.io/cluster-monitoring: "true"
                    pod-security.kubernetes.io/enforce: privileged
                    pod-security.kubernetes.io/audit: privileged
                    pod-security.kubernetes.io/warn: privileged
                  name: openshift-storage
            - complianceType: musthave
              objectDefinition:
                apiVersion: operators.coreos.com/v1
                kind: OperatorGroup
                metadata:
                  name: openshift-storage-operatorgroup
                  namespace: openshift-storage
                spec:
                  targetNamespaces:
                  - openshift-storage
            - complianceType: musthave
              objectDefinition:
                apiVersion: operators.coreos.com/v1alpha1
                kind: Subscription
                metadata:
                  name: lvms
                  namespace: openshift-storage
                spec:
                  installPlanApproval: Automatic
                  name: lvms-operator
                  source: redhat-operators
                  sourceNamespace: openshift-marketplace
            remediationAction: enforce
            severity: low
      - objectDefinition:
          apiVersion: policy.open-cluster-management.io/v1
          kind: ConfigurationPolicy
          metadata:
            name: lvms
          spec:
            object-templates:
               - complianceType: musthave
                 objectDefinition:
                   apiVersion: lvm.topolvm.io/v1alpha1
                   kind: LVMCluster
                   metadata:
                     name: my-lvmcluster
                     namespace: openshift-storage
                   spec:
                     storage:
                       deviceClasses:
                       - name: vg1
                         default: true
                         deviceSelector: 
    2
    
                           paths:
                           - /dev/disk/by-path/pci-0000:87:00.0-nvme-1
                           - /dev/disk/by-path/pci-0000:88:00.0-nvme-1
                         thinPoolConfig:
                           name: thin-pool-1
                           sizePercent: 90
                           overprovisionRatio: 10
                         nodeSelector: 
    3
    
                           nodeSelectorTerms:
                           - matchExpressions:
                               - key: app
                                 operator: In
                                 values:
                                 - test1
            remediationAction: enforce
            severity: low
    1
    LVM Storage를 설치하려는 단일 노드 OpenShift 클러스터에 설정된 라벨과 일치하도록 PlacementRule.spec.clusterSelector 의 키와 값을 바꿉니다.
    2
    볼륨 그룹을 기본 디스크로 제어하거나 제한하려면 LVMCluster YAML의 deviceSelector 섹션에 디스크의 로컬 경로를 수동으로 지정할 수 있습니다.
    3
    추가 작업자 노드의 하위 집합인 노드 필터를 추가하려면 nodeSelector 섹션에서 필요한 필터를 지정합니다. LVM Storage는 새 노드가 표시될 때 추가 작업자 노드를 감지하고 사용합니다.
    중요

    nodeSelector 노드 필터 일치는 Pod 레이블 일치와 동일하지 않습니다.

  4. 다음 명령을 실행하여 네임스페이스에 정책을 생성합니다.

    # oc create -f policy-lvms-operator.yaml -n lvms-policy-ns 
    1
    1
    policy-lvms-operator.yaml 은 정책이 저장되는 파일의 이름입니다.

    이렇게 하면 lvms-policy-ns 네임스페이스에 Policy, PlacementRule, PlacementBinding 오브젝트가 생성됩니다. 이 정책은 배치 규칙과 일치하는 클러스터에 Namespace,OperatorGroup,Subscription, LVMCluster 리소스를 생성합니다. 그러면 선택 기준과 일치하는 단일 노드 OpenShift 클러스터에 Operator가 배포되고 스토리지를 프로비저닝하는 데 필요한 리소스를 설정하도록 구성합니다. Operator는 LVMCluster CR에 지정된 모든 디스크를 사용합니다. 디스크가 지정되지 않은 경우 Operator는 단일 노드 OpenShift 노드에서 사용되지 않는 디스크를 모두 사용합니다.

    중요

    장치를 LVMCluster 에 추가한 후에는 제거할 수 없습니다.

4.12.3.1.8. RHACM을 사용하여 설치된 LVM 스토리지 제거

RHACM을 사용하여 설치한 LVM 스토리지를 제거하려면 Operator 배포 및 구성을 위해 생성한 RHACM 정책을 삭제해야 합니다.

RHACM 정책을 삭제하면 정책이 생성된 리소스는 제거되지 않습니다. 리소스를 제거하려면 추가 정책을 생성해야 합니다.

정책을 삭제할 때 생성된 리소스는 제거되지 않으므로 다음 단계를 수행해야 합니다.

  1. LVM Storage에서 프로비저닝한 모든 PVC(영구 볼륨 클레임) 및 볼륨 스냅샷을 제거합니다.
  2. LVMCluster 리소스를 제거하여 디스크에서 생성된 Logical Volume Manager 리소스를 정리합니다.
  3. 추가 정책을 생성하여 Operator를 제거합니다.

사전 요구 사항

  • 정책을 삭제하기 전에 다음 사항이 삭제되었는지 확인합니다.

    • LVM Storage에서 프로비저닝한 스토리지를 사용하는 관리형 클러스터의 모든 애플리케이션.
    • LVM 스토리지를 사용하여 프로비저닝된 PVC 및 PV(영구 볼륨)입니다.
    • LVM Storage에서 프로비저닝한 모든 볼륨 스냅샷.
  • cluster-admin 역할의 계정을 사용하여 RHACM 클러스터에 액세스할 수 있는지 확인합니다.

절차

  1. OpenShift CLI(oc)에서 다음 명령을 사용하여 hub 클러스터에 LVM Storage를 배포하고 구성하기 위해 생성한 RHACM 정책을 삭제합니다.

    # oc delete -f policy-lvms-operator.yaml -n lvms-policy-ns 
    1
    1
    policy-lvms-operator.yaml 은 정책이 저장된 파일의 이름입니다.
  2. LVMCluster 리소스를 제거하는 정책을 생성하려면 다음 YAML을 이름이 lvms-remove-policy.yaml 과 같은 파일에 저장합니다. 이를 통해 Operator는 클러스터에서 생성한 모든 Logical Volume Manager 리소스를 정리할 수 있습니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-lvmcluster-delete
      annotations:
        policy.open-cluster-management.io/standards: NIST SP 800-53
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
    spec:
      remediationAction: enforce
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: policy-lvmcluster-removal
            spec:
              remediationAction: enforce 
    1
    
              severity: low
              object-templates:
                - complianceType: mustnothave
                  objectDefinition:
                    kind: LVMCluster
                    apiVersion: lvm.topolvm.io/v1alpha1
                    metadata:
                      name: my-lvmcluster
                      namespace: openshift-storage 
    2
    
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-policy-lvmcluster-delete
    placementRef:
      apiGroup: apps.open-cluster-management.io
      kind: PlacementRule
      name: placement-policy-lvmcluster-delete
    subjects:
      - apiGroup: policy.open-cluster-management.io
        kind: Policy
        name: policy-lvmcluster-delete
    ---
    apiVersion: apps.open-cluster-management.io/v1
    kind: PlacementRule
    metadata:
      name: placement-policy-lvmcluster-delete
    spec:
      clusterConditions:
        - status: "True"
          type: ManagedClusterConditionAvailable
      clusterSelector:
        matchExpressions:
          - key: mykey
            operator: In
            values:
              - myvalue
    1
    policy-template spec.remediationActionspec.remediationAction 에 대한 이전 매개변수 값으로 재정의됩니다.
    2
    namespace 필드에는 openshift-storage 값이 있어야 합니다.
  3. PlacementRule.spec.clusterSelector 필드의 값을 설정하여 LVM Storage를 제거할 클러스터를 선택합니다.
  4. 다음 명령을 실행하여 정책을 생성합니다.

    # oc create -f lvms-remove-policy.yaml -n lvms-policy-ns
  5. LVMCluster CR이 제거되었는지 확인하는 정책을 생성하려면 check-lvms-remove-policy.yaml 과 같은 이름이 있는 파일에 다음 YAML을 저장합니다.

    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      name: policy-lvmcluster-inform
      annotations:
        policy.open-cluster-management.io/standards: NIST SP 800-53
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
    spec:
      remediationAction: inform
      disabled: false
      policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
              name: policy-lvmcluster-removal-inform
            spec:
              remediationAction: inform 
    1
    
              severity: low
              object-templates:
                - complianceType: mustnothave
                  objectDefinition:
                    kind: LVMCluster
                    apiVersion: lvm.topolvm.io/v1alpha1
                    metadata:
                      name: my-lvmcluster
                      namespace: openshift-storage 
    2
    
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-policy-lvmcluster-check
    placementRef:
      apiGroup: apps.open-cluster-management.io
      kind: PlacementRule
      name: placement-policy-lvmcluster-check
    subjects:
      - apiGroup: policy.open-cluster-management.io
        kind: Policy
        name: policy-lvmcluster-inform
    ---
    apiVersion: apps.open-cluster-management.io/v1
    kind: PlacementRule
    metadata:
      name: placement-policy-lvmcluster-check
    spec:
      clusterConditions:
        - status: "True"
          type: ManagedClusterConditionAvailable
      clusterSelector:
        matchExpressions:
          - key: mykey
            operator: In
            values:
              - myvalue
    1
    policy-template spec.remediationActionspec.remediationAction 에 대한 이전 매개변수 값으로 재정의됩니다.
    2
    namespace 필드에는 openshift-storage 값이 있어야 합니다.
  6. 다음 명령을 실행하여 정책을 생성합니다.

    # oc create -f check-lvms-remove-policy.yaml -n lvms-policy-ns
  7. 다음 명령을 실행하여 정책 상태를 확인합니다.

    # oc get policy -n lvms-policy-ns

    출력 예

    NAME                       REMEDIATION ACTION   COMPLIANCE STATE   AGE
    policy-lvmcluster-delete   enforce              Compliant          15m
    policy-lvmcluster-inform   inform               Compliant          15m

  8. 정책이 모두 호환되면 다음 YAML을 lvms-uninstall-policy.yaml 과 같은 이름의 파일에 저장하여 LVM 스토리지를 제거하는 정책을 생성합니다.

    apiVersion: apps.open-cluster-management.io/v1
    kind: PlacementRule
    metadata:
      name: placement-uninstall-lvms
    spec:
      clusterConditions:
      - status: "True"
        type: ManagedClusterConditionAvailable
      clusterSelector:
        matchExpressions:
        - key: mykey
          operator: In
          values:
          - myvalue
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: PlacementBinding
    metadata:
      name: binding-uninstall-lvms
    placementRef:
      apiGroup: apps.open-cluster-management.io
      kind: PlacementRule
      name: placement-uninstall-lvms
    subjects:
    - apiGroup: policy.open-cluster-management.io
      kind: Policy
      name: uninstall-lvms
    ---
    apiVersion: policy.open-cluster-management.io/v1
    kind: Policy
    metadata:
      annotations:
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
        policy.open-cluster-management.io/standards: NIST SP 800-53
      name: uninstall-lvms
    spec:
      disabled: false
      policy-templates:
      - objectDefinition:
          apiVersion: policy.open-cluster-management.io/v1
          kind: ConfigurationPolicy
          metadata:
            name: uninstall-lvms
          spec:
            object-templates:
            - complianceType: mustnothave
              objectDefinition:
                apiVersion: v1
                kind: Namespace
                metadata:
                  name: openshift-storage
            - complianceType: mustnothave
              objectDefinition:
                apiVersion: operators.coreos.com/v1
                kind: OperatorGroup
                metadata:
                  name: openshift-storage-operatorgroup
                  namespace: openshift-storage
                spec:
                  targetNamespaces:
                  - openshift-storage
            - complianceType: mustnothave
              objectDefinition:
                apiVersion: operators.coreos.com/v1alpha1
                kind: Subscription
                metadata:
                  name: lvms-operator
                  namespace: openshift-storage
            remediationAction: enforce
            severity: low
      - objectDefinition:
          apiVersion: policy.open-cluster-management.io/v1
          kind: ConfigurationPolicy
          metadata:
            name: policy-remove-lvms-crds
          spec:
            object-templates:
            - complianceType: mustnothave
              objectDefinition:
                apiVersion: apiextensions.k8s.io/v1
                kind: CustomResourceDefinition
                metadata:
                  name: logicalvolumes.topolvm.io
            - complianceType: mustnothave
              objectDefinition:
                apiVersion: apiextensions.k8s.io/v1
                kind: CustomResourceDefinition
                metadata:
                  name: lvmclusters.lvm.topolvm.io
            - complianceType: mustnothave
              objectDefinition:
                apiVersion: apiextensions.k8s.io/v1
                kind: CustomResourceDefinition
                metadata:
                  name: lvmvolumegroupnodestatuses.lvm.topolvm.io
            - complianceType: mustnothave
              objectDefinition:
                apiVersion: apiextensions.k8s.io/v1
                kind: CustomResourceDefinition
                metadata:
                  name: lvmvolumegroups.lvm.topolvm.io
            remediationAction: enforce
            severity: high
  9. 다음 명령을 실행하여 정책을 생성합니다.

    # oc create -f lvms-uninstall-policy.yaml -ns lvms-policy-ns
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동