NetApp Tech Blog에 갔다가 Trident 관련해서 흥미로운 주제의 글이 보여서 AI 번역(+약간 수정)의 힘을 빌려 읽어보았습니다.
출처: https://community.netapp.com/t5/Tech-ONTAP-Blogs/Leveraging-Fiber-Channel-Protocol-with-Trident-25-02-for-Persistent-Storage-on/ba-p/460091
이전 블로그 게시물 에서 Trident 25.02 릴리스가 파이버 채널(FC) 프로토콜을 사용하여 ONTAP 기반 시스템에서 블록 스토리지 프로비저닝을 지원한다고 언급했습니다. 이 게시물에서는 FC 프로토콜을 활용하여 OpenShift 컨테이너 플랫폼에서 컨테이너와 VM 모두에 영구 스토리지를 프로비저닝하는 방법을 보여드리겠습니다.
소개
Trident 25.02 출시 이전에는 사용자가 iSCSI 또는 NVMe/TCP 프로토콜을 사용하여 블록 스토리지를 프로비저닝할 수 있었습니다. 그러나 많은 NetApp ONTAP 고객은 VMware에서 워크로드를 실행하고 파이버 채널 네트워크에 상당한 투자를 하고 있습니다. Trident 25.02 출시를 통해 이러한 고객은 FC 네트워크를 스토리지 프로비저닝에 계속 사용하면서 플랫폼이나 애플리케이션을 현대화할 수 있습니다. 그 방법을 살펴보겠습니다.
필수 조건
이 예에서는 OpenShift 클러스터 버전 4.17이 있고 Red Hat 인증 Trident Operator를 사용하여 Trident 25.2.1을 설치했습니다 .
1단계: Trident 백엔드 구성 만들기
먼저 FC 프로토콜을 지정하는 Trident 백엔드 구성 파일을 만듭니다. 아래는 tbc-fc.yaml 파일의 예입니다.
apiVersion: v1
kind: Secret
metadata:
name: tbc-fc-secret
type: Opaque
stringData:
username: admin
password: <password>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: tbc-fc
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <cluster_mgmt_IP>
backendName: tbc-fc
svm: openshift-fc
sanType: fcp
storagePrefix: demofc
defaults:
nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
credentials:
name: tbc-fc-secret
Replace <password> and <cluster_mgmt_IP> with your actual credentials and cluster management IP address. Apply the backend configuration:
oc create -f tbc-fc.yaml -n trident2단계: 스토리지 클래스 만들기
다음으로, tbc-fc 백엔드를 사용하는 스토리지 클래스를 생성합니다. 아래는 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 Apply the storage class configuration: oc create -f sc-fc.yaml
3단계: VolumeSnapshotClass 만들기
스냅샷을 관리하기 위해 VolumeSnapshotClass를 생성합니다. 아래는 snapshotclass.yaml 파일입니다.
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: trident-snapshotclass driver: csi.trident.netapp.io deletionPolicy: Retain Apply the volumeSnapshotClass configuration: oc create -f snapshotclass.yaml
4단계: 기본 스토리지 클래스 및 volumeSnapshotClass 설정
다음 주석을 설정하여 sc-fc 저장 클래스를 기본 저장 클래스로 설정합니다.
storageclass.kubernetes.io/is-default-class: true
또한 다음과 같이 주석을 설정하여 trident-snapshotclass를 기본 스냅샷 클래스로 설정합니다.
snapshot.storage.kubernetes.io/is-default-class: true
위의 작업은 콘솔이나 CLI에서 모두 수행할 수 있습니다. 콘솔에서 설정을 완료했을 때의 스크린샷은 아래와 같습니다.
콘솔에서 클러스터에 설정된 백엔드 구성, 스토리지 클래스 및 volumeSnapshot 클래스는 다음과 같습니다.
스토리지 클래스 san-fc를 사용하여 OpenShift Virtualization에서 VM 만들기
OpenShift Virtualization을 설치하고 사용자 인터페이스의 가상화에서 Virtual machines을 클릭하여 새 VM을 만듭니다.
Create Virtual machine를 클릭합니다 .
From template 선택한 다음 OS를 선택하세요. “Source available” 이라고 표시된 OS를 선택하면 클러스터에 이미 있는 골든 이미지를 사용하여 VM을 생성합니다. 이 예에서는 Fedora VM을 클릭합니다.
이제 ‘Customize VirtualMachine’ 버튼을 클릭하세요. 이 페이지의 모든 기본값을 사용하고 ‘CustomizeVirtualMachine’을 클릭하세요.
Disks 탭을 선택하세요 . 이 VM에 대한 루트 디스크가 있습니다. 이 디스크의 점 세 개를 클릭하고 ‘편집’을 선택하세요. 스토리지 클래스는 sc-fc(기본값으로 설정됨)입니다.
다른 디스크를 추가합니다.(빈 디스크) 그리고 스토리지 클래스가 자동으로 sc-fc 로 선택 되고 Apply optimized StorageProfile settings이 선택되어 있는지 확인합니다.
참고: 최적화된 StorageProfile 설정을 적용하면 액세스 모드가 RWX 이고 볼륨 모드가 Block으로 설정됩니다. Trident는 볼륨 모드 Block에서 RWX 액세스 모드를 지원합니다. 나중에 VM을 한 노드에서 다른 노드로 라이브 마이그레이션해야 하는 경우 RWX가 필요합니다.
가상 머신 만들기를 클릭합니다.
가상 머신은 Provisioning 상태 에서 Starting , Running 상태 로 전환됩니다 .
이제 콘솔이나 CLI에서 VM에 생성된 PVC를 확인할 수 있습니다. 여기서는 CLI를 사용하여 보여드리겠습니다.
PVC에 사용된 저장 클래스가 san-fc인 것을 볼 수 있습니다.
이제 ONTAP 스토리지 시스템에서 VM의 각 Trident 영구 볼륨에 대해 볼륨과 LUN이 생성되었는지 확인할 수 있습니다.
참고: pv에 해당하는 ONTAP의 볼륨 이름은 describe pv 명령을 사용하여 찾을 수 있습니다.
스토리지 클래스 sc-fc를 사용하여 OpenShift 컨테이너 플랫폼에서 애플리케이션 만들기
백엔드 구성과 스토리지 클래스를 설정했으니 이제 영구 스토리지로 sc-fc 스토리지 클래스를 사용하는 PostgreSQL 애플리케이션을 만들어 보겠습니다.
1단계: PostgreSQL 배포 만들기
다음 yaml로 postgres.yaml 파일을 만듭니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:14
env:
- name: POSTGRES_USER
value: "admin"
- name: POSTGRES_PASSWORD
value: "adminpass"
- name: POSTGRES_DB
value: "mydb"
- name: PGDATA
value: "/var/lib/postgresql/data/pgdata"
ports:
- containerPort: 5432
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: sc-fc
---
apiVersion: v1
kind: Service
metadata:
name: postgres
spec:
selector:
app: postgres
ports:
- protocol: TCP
port: 5432
targetPort: 5432
type: ClusterIP
Apply the configuration to create the PostgreSQL deployment, PVC, and service:
oc apply -f postgres.yaml
2단계: 배포 확인
구성을 적용한 후 PostgreSQL Pod가 실행 중이고 PVC가 바인딩되었는지 확인하세요. 다음 명령을 사용하여 상태를 확인할 수 있습니다.
이전에 표시된 대로 ONTAP CLI를 사용하여 ONTAP 시스템에서 생성된 볼륨을 확인할 수 있습니다.
결론
파이버 채널 네트워크는 많은 고객에게 널리 사용되고 있으며, Trident를 사용하여 FC 프로토콜을 사용하여 스토리지를 프로비저닝할 수 있다는 것은 큰 이점입니다. 이 기능을 통해 기업은 워크로드를 현대화하거나 VM 워크로드를 OpenShift와 같은 최신 컨테이너 기반 플랫폼으로 마이그레이션하는 동시에 FC 네트워크에 대한 투자를 유지할 수 있습니다.
NetApp은 구축 및 관리가 간편한 강력한 엔터프라이즈급 스토리지 솔루션을 제공하여 고객에게 지속적인 역량을 제공하고 있습니다. OpenShift에서 최신 애플리케이션 워크로드든 가상 머신 워크로드든, 새로운 Trident 25.02는 스토리지 기능을 향상시키는 효율적이고 비용 효율적인 방법을 제공합니다.
이 게시물에 설명된 단계를 따르면 파이버 채널 프로토콜을 활용하여 OpenShift에서 애플리케이션과 VM에 대한 영구 저장소를 프로비저닝하여 중요한 워크로드에 대한 높은 성능과 안정성을 보장할 수 있습니다.