Skip to main content
NetApp virtualization solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

Red Hat OpenShift 클러스터에 Trident를 설치하고 스토리지 객체를 생성하세요

기여자 banum-netapp netapp-jsnyder kevin-hoke

Red Hat 인증 Trident Operator를 사용하여 Trident를 설치하고 ONTAP 및 Amazon FSx for NetApp ONTAP용 스토리지 객체를 생성하여 컨테이너 및 VM에 대한 동적 볼륨 프로비저닝을 활성화합니다. 필요한 경우 블록 액세스를 위해 작업자 노드를 준비합니다.

시작하기 전에
  • OpenShift Virtualization을 설치하기 전에 이 페이지의 절차를 완료하십시오. OpenShift Virtualization은 VM 템플릿용 골든 이미지를 생성하기 위해 기본 Trident 기반 StorageClass 및 VolumeSnapshotClass가 필요합니다.

  • Trident를 구성하기 전에 OpenShift Virtualization을 이미 설치한 경우 다른 스토리지 클래스로 생성된 골든 이미지를 모두 삭제하십시오. Trident를 기본값으로 설정하면 OpenShift Virtualization이 Trident 스토리지를 사용하여 골든 이미지를 다시 생성합니다.

    oc delete dv,VolumeSnapshot -n openshift-virtualization-os-images --selector=cdi.kubevirt.io/dataImportCron

1단계: Trident 설치

Red Hat 인증 Trident Operator는 온프레미스, 퍼블릭 클라우드 및 ROSA와 같은 관리형 서비스에서 NetApp이 OpenShift를 위해 지원합니다. Trident 25.02부터 Amazon FSx for NetApp ONTAP를 사용하고 OpenShift Virtualization VM 워크로드를 실행할 계획인 경우 Operator가 iSCSI용 작업자 노드를 준비할 수도 있습니다.

다른 설치 옵션은 "Trident 문서"을 참조하십시오.

단계
  1. *OperatorHub*에서 *Certified NetApp Trident*을 선택하십시오.

    예를 보여주세요

    운영자 허브

  2. 설치 페이지에서 최신 버전을 유지하고 *설치*를 선택합니다.

    예를 보여주세요

    설치하다

  3. 오퍼레이터 설치가 완료되면 *View operator*를 선택하고 Trident Orchestrator 인스턴스를 생성하십시오.

    iSCSI를 위해 워커 노드를 준비하려면 YAML 보기로 전환하고 `iscsi`을 `nodePrep`에 추가하세요.

    예를 보여주세요

    노드 준비를 위해 iSCSI를 추가합니다.

  4. 클러스터에서 모든 Trident Pod가 실행 중인지 확인하십시오.

    예를 보여주세요

    Trident 설치됨

  5. iSCSI 노드 준비를 활성화한 경우 워커 노드에 로그인하여 iscsid 및 `multipathd`이(가) 활성 상태이고 `multipath.conf`에 항목이 있는지 확인하십시오.

    예를 보여주세요

    iscsid 실행 중

    예를 보여주세요

    multipathd 실행 중

    예를 보여주세요

    multipath.conf 파일 실행 중

비디오 데모

다음 비디오는 Red Hat 인증 Trident Operator를 사용하여 Trident를 설치하는 방법을 보여줍니다.

OpenShift에서 인증된 Trident Operator를 사용하여 Trident 25.02.1 설치

2단계: 사용 환경에 맞는 스토리지 백엔드 및 StorageClass 구성 파일을 준비합니다

TridentBackendConfig 및 StorageClass 정의를 사용자 환경에 맞게 생성하십시오. 환경 내에서 여러 스토리지 프로토콜을 구성할 수 있습니다. 사용하려는 각 프로토콜에 대한 YAML 파일을 생성하고 자리 표시자 값을 특정 구성 세부 정보로 바꾸십시오.

참고 사용 환경에 따라 아래의 온프레미스 또는 ROSA 섹션 중 하나를 완료한 후 3단계로 진행하십시오.

온프레미스 OpenShift 클러스터

구성하려는 각 프로토콜에 대한 YAML 파일을 생성하십시오. 다음 프로토콜 중 하나 이상을 구성할 수 있습니다. NFS 기반 파일 스토리지를 위한 NAS, iSCSI 블록 스토리지를 위한 iSCSI, TCP를 통한 고성능 NVMe 블록 스토리지를 위한 NVMe/TCP 또는 Fibre Channel 블록 스토리지를 위한 FC.

NAS

TridentBackendConfig 및 StorageClass를 생성하여 ONTAP NAS에 대한 NFS 기반 영구 스토리지 프로비저닝을 활성화합니다. 백엔드 구성에는 Kubernetes Secret에 저장된 자격 증명이 포함되며 ONTAP SVM 및 관리 LIF를 참조합니다.

백엔드 시크릿 및 백엔드 구성 파일( `tbc-nas.yaml`로 저장):

# tbc-nas.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-nas-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-nas
spec:
  version: 1
  storageDriverName: ontap-nas
  managementLIF: <ONTAP management LIF>
  backendName: tbc-nas
  svm: zoneb #<replace with your SVM name>
  storagePrefix: testzoneb #<replace with your prefix>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-nas-secret

StorageClass 정의(다른 이름으로 저장 sc-nas.yaml):

# sc-nas.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nas
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  media: "ssd"
  provisioningType: "thin"
  snapshots: "true"
allowVolumeExpansion: true
iSCSI

TridentBackendConfig 및 StorageClass를 생성하여 ONTAP SAN에서 iSCSI 기반 블록 스토리지 프로비저닝을 활성화합니다. 백엔드 구성은 ontap-san 드라이버를 사용하며 Kubernetes Secret에 저장된 자격 증명을 포함합니다.

백엔드 시크릿 및 백엔드 구성 파일(다른 이름으로 저장 tbc-iscsi.yaml):

# tbc-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-iscsi-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: ontap-iscsi
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <management LIF>
  backendName: ontap-iscsi
  svm: <SVM name>
  credentials:
    name: backend-tbc-ontap-iscsi-secret

StorageClass 정의(다른 이름으로 저장 sc-iscsi.yaml):

# sc-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-iscsi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true
NVMe/TCP

NVMe over TCP를 사용하는 ONTAP SAN용 TridentBackendConfig 및 StorageClass를 생성하여 고성능 블록 스토리지 프로비저닝을 활성화합니다. 백엔드 구성은 NVMe/TCP 전송에 최적화된 ontap-san 드라이버를 사용하며 Kubernetes Secret에 저장된 자격 증명을 포함합니다.

백엔드 시크릿 및 백엔드 구성 파일( `tbc-nvme.yaml`로 저장):

# tbc-nvme.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-ontap-nvme-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-tbc-ontap-nvme
spec:
  version: 1
  storageDriverName: ontap-san
  sanType: nvme
  managementLIF: <ONTAP management LIF>
  backendName: backend-tbc-ontap-nvme
  svm: <SVM name>
  credentials:
    name: backend-tbc-ontap-nvme-secret

StorageClass 정의(다른 이름으로 저장 sc-nvme.yaml):

# sc-nvme.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-nvme
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true
FC

TridentBackendConfig 및 StorageClass를 생성하여 Fibre Channel이 포함된 ONTAP SAN에 대해 FC 기반 블록 스토리지 프로비저닝을 활성화합니다. 백엔드 구성은 FCP 프로토콜이 지정된 ontap-san 드라이버를 사용하며 Kubernetes Secret에 저장된 자격 증명을 포함합니다.

백엔드 시크릿 및 백엔드 구성 파일( `tbc-fc.yaml`로 저장):

# tbc-fc.yaml
apiVersion: v1
kind: Secret
metadata:
  name: tbc-fc-secret
type: Opaque
stringData:
  username: <cluster admin username>
  password: <cluster admin password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-fc
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <ONTAP management LIF>
  backendName: tbc-fc
  svm: openshift-fc #<replace with your SVM name>
  sanType: fcp
  storagePrefix: demofc #<replace with your prefix>
  defaults:
    nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
  credentials:
    name: tbc-fc-secret

StorageClass 정의(다른 이름으로 저장 sc-fc.yaml):

# sc-fc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-fc
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

Amazon FSx for NetApp ONTAP를 사용하는 ROSA 클러스터

구성하려는 각 프로토콜에 대한 YAML 파일을 생성하십시오. NFS 기반 파일 스토리지를 위한 NAS 또는 블록 스토리지를 위한 iSCSI 중 하나 또는 둘 다를 구성할 수 있습니다.

NAS

ROSA 클러스터에서 NFS 기반 영구 스토리지 프로비저닝을 활성화하기 위해 Amazon FSx for NetApp ONTAP의 ONTAP NAS용 TridentBackendConfig 및 StorageClass를 생성합니다. 백엔드 구성은 관리 및 데이터 LIF를 위해 Amazon FSx for NetApp ONTAP DNS 이름을 사용하며, trident 네임스페이스의 Kubernetes Secret에 저장된 자격 증명을 포함합니다.

백엔드 시크릿 및 백엔드 구성 파일(다른 이름으로 저장 tbc-fsx-nas.yaml):

# tbc-fsx-nas.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-fsx-ontap-nas-secret
type: Opaque
stringData:
  username: <FSx for ONTAP, for example fsxadmin>
  password: <FSx for ONTAP password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: backend-fsx-ontap-nas
spec:
  version: 1
  backendName: fsx-ontap
  storageDriverName: ontap-nas
  managementLIF: <Management DNS name>
  dataLIF: <NFS DNS name>
  svm: <SVM NAME>
  credentials:
    name: backend-fsx-ontap-nas-secret

StorageClass 정의(다른 이름으로 저장 sc-fsx-nas.yaml):

# sc-fsx-nas.yaml (storage class name is trident-csi)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: trident-csi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-nas"
  fsType: "ext4"
allowVolumeExpansion: true
reclaimPolicy: Retain
iSCSI

ROSA 클러스터에서 iSCSI 기반 블록 스토리지 프로비저닝을 활성화하기 위해 Amazon FSx for NetApp ONTAP의 ONTAP SAN용 TridentBackendConfig 및 StorageClass를 생성합니다. 백엔드 구성은 ontap-san 드라이버를 사용하며, Kubernetes Secret에 저장된 자격 증명을 포함합니다. 작업자 노드가 iSCSI 액세스를 위해 준비되어 있는지 확인합니다.

백엔드 시크릿 및 백엔드 구성 파일(다른 이름으로 저장 tbc-fsx-iscsi.yaml):

# tbc-fsx-iscsi.yaml
apiVersion: v1
kind: Secret
metadata:
  name: backend-tbc-fsx-iscsi-secret
type: Opaque
stringData:
  username: <FSx for ONTAP, for example fsxadmin>
  password: <FSx for ONTAP password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: fsx-iscsi
spec:
  version: 1
  storageDriverName: ontap-san
  managementLIF: <Management DNS name>
  backendName: fsx-iscsi
  svm: <SVM name>
  credentials:
    name: backend-tbc-fsx-iscsi-secret

StorageClass 정의(다른 이름으로 저장 sc-fsx-iscsi.yaml):

# sc-fsx-iscsi.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: sc-fsx-iscsi
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ontap-san"
  media: "ssd"
  provisioningType: "thin"
  fsType: ext4
  snapshots: "true"
allowVolumeExpansion: true

3단계: VolumeSnapshotClass 구성 파일 생성

온프레미스 및 ROSA 배포 환경 모두에 대해 VolumeSnapshotClass 정의를 생성합니다. 이 구성을 통해 영구 볼륨에 대한 스냅샷 기반 작업을 활성화할 수 있습니다.

VolumeSnapshotClass 정의(다른 이름으로 저장 snapshot-class.yaml):

# snapshot-class.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: trident-snapshotclass
driver: csi.trident.netapp.io
deletionPolicy: Retain

4단계: 구성 파일을 클러스터에 적용합니다

이전 단계에서 생성한 구성 파일을 OpenShift 클러스터에 적용합니다.

단계
  1. 구성한 각 프로토콜에 대해 TridentBackendConfig 및 StorageClass 파일을 적용하십시오.

    온프레미스 클러스터의 경우:

    oc create -f tbc-nas.yaml -n trident
    oc create -f sc-nas.yaml
    
    oc create -f tbc-iscsi.yaml -n trident
    oc create -f sc-iscsi.yaml
    
    oc create -f tbc-nvme.yaml -n trident
    oc create -f sc-nvme.yaml
    
    oc create -f tbc-fc.yaml -n trident
    oc create -f sc-fc.yaml

    ROSA 클러스터의 경우:

    oc create -f tbc-fsx-nas.yaml -n trident
    oc create -f sc-fsx-nas.yaml
    
    oc create -f tbc-fsx-iscsi.yaml -n trident
    oc create -f sc-fsx-iscsi.yaml
  2. VolumeSnapshotClass 구성을 적용합니다.

    oc create -f snapshot-class.yaml
  3. 리소스가 성공적으로 생성되었는지 확인하십시오.

    TridentBackendConfig 객체를 확인하세요:

    oc get tbc -n trident

    StorageClass 객체를 확인하세요:

    oc get storageclass

    VolumeSnapshotClass 확인:

    oc get volumesnapshotclass

5단계: 기본 Trident 스토리지 및 스냅샷 클래스 설정

OpenShift 클러스터에서 Trident StorageClass와 VolumeSnapshotClass를 기본값으로 설정합니다. 이는 OpenShift Virtualization이 VM 템플릿을 위한 골든 이미지 소스를 생성하는 데 필요합니다.

단계
  1. 기본 Trident StorageClass를 설정합니다.

    Trident 기반 StorageClass를 클러스터 기본값으로 설정하여 스토리지 클래스가 지정되지 않은 경우 PersistentVolumeClaims가 자동으로 사용하도록 합니다. 클러스터 전체 기본값용 어노테이션 하나와 OpenShift Virtualization 전용 어노테이션 하나, 총 두 개의 어노테이션을 구성해야 합니다.

    1. 클러스터 전체의 기본 StorageClass 어노테이션을 설정합니다.

      하나의 StorageClass만 기본값으로 설정되어 있는지 확인하십시오. 다른 StorageClass가 이미 기본값으로 설정되어 있는 경우 해당 주석을 false로 설정하십시오.

      콘솔에서 주석을 편집합니다.

      storageclass.kubernetes.io/is-default-class: "true"

      CLI에서:

      kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    2. OpenShift Virtualization 관련 기본 주석을 설정합니다.

      OpenShift Virtualization은 클러스터의 일반 is-default-class 어노테이션보다 우선순위가 높은 특정 어노테이션을 사용합니다. 다른 StorageClass이 이미 기본값으로 설정되어 있는 경우 해당 어노테이션을 false로 설정하십시오.

      콘솔에서 주석을 편집합니다.

      storageclass.kubevirt.io/is-default-virt-class: "true"

      CLI에서:

    kubectl patch storageclass <storage class name> -p '{"metadata": {"annotations":{"storageclass.kubevirt.io/is-default-virt-class": "true"}}}'
  2. 기본 Trident VolumeSnapshotClass를 설정합니다.

    Trident 기반 VolumeSnapshotClass를 클러스터 기본값으로 설정하면 영구 볼륨에 대한 스냅샷 기반 작업이 활성화됩니다. 이렇게 하면 스냅샷 클래스가 지정되지 않은 경우 VolumeSnapshots가 자동으로 Trident CSI 드라이버를 사용하게 되며 OpenShift Virtualization에서 골든 이미지의 스냅샷을 생성할 수 있습니다.

    VolumeSnapshotClass는 기본값으로 하나만 설정해야 합니다. 이미 다른 VolumeSnapshotClass가 기본값으로 설정되어 있는 경우, 해당 클래스의 어노테이션을 false로 설정하십시오.

    콘솔에서 주석을 편집합니다.

    snapshot.storage.kubernetes.io/is-default-class: "true"

    CLI에서:

    oc patch volumesnapshotclass <snapshot class name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'