AWS 上的 Red Hat OpenShift 服務搭配 NetApp ONTAP
總覽
在本節中、我們將說明如何將適用於 ONTAP 的 FSX 作為在 ROSA 上執行之應用程式的持續儲存層。它將顯示在 ROSA 叢集上安裝 NetApp Trident CSI 驅動程式、為 ONTAP 檔案系統提供 FSX 、以及部署可設定狀態的應用程式範例。它也會顯示備份及還原應用程式資料的策略。有了這套整合式解決方案、您就能建立共享儲存架構、輕鬆地在各個 AZs 之間擴充、簡化擴充、保護及還原資料的程序、並使用 Trident CSI 驅動程式。
先決條件
-
IAM 使用者"具有適當權限"可建立及存取 ROSA 叢集
-
"OpenShift 命令列介面"( OC )
-
船舵 3."文件"
此圖顯示部署在多個 AZs 中的 ROSA 叢集。ROSA 叢集的主節點、基礎架構節點位於 Red Hat 的 VPC 中、而工作節點則位於客戶帳戶的 VPC 中。我們將在同一部 VPC 中建立適用於 ONTAP 檔案系統的 FSX 、並在 ROSA 叢集中安裝 Trident 驅動程式、讓此 VPC 的所有子網路都能連線至檔案系統。
初始設定
**1.為 NetApp ONTAP * 配置 FSX
在與 ROSA 叢集相同的 VPC 中、為 NetApp ONTAP 建立多 AZ FSX 。有幾種方法可以做到這一點。我們將提供使用 CloudForgation Stack 建立 FSxN 的詳細資料
-
完整複製 GitHub 儲存庫 **
$ git clone https://github.com/aws-samples/rosa-fsx-netapp-ontap.git
-
b 。執行 CloudForomation Stack** 執行下列命令、將參數值取代為您自己的值:
$ cd rosa-fsx-netapp-ontap/fsx
$ aws cloudformation create-stack \
--stack-name ROSA-FSXONTAP \
--template-body file://./FSxONTAP.yaml \
--region <region-name> \
--parameters \
ParameterKey=Subnet1ID,ParameterValue=[subnet1_ID] \
ParameterKey=Subnet2ID,ParameterValue=[subnet2_ID] \
ParameterKey=myVpc,ParameterValue=[VPC_ID] \
ParameterKey=FSxONTAPRouteTable,ParameterValue=[routetable1_ID,routetable2_ID] \
ParameterKey=FileSystemName,ParameterValue=ROSA-myFSxONTAP \
ParameterKey=ThroughputCapacity,ParameterValue=1024 \
ParameterKey=FSxAllowedCIDR,ParameterValue=[your_allowed_CIDR] \
ParameterKey=FsxAdminPassword,ParameterValue=[Define Admin password] \
ParameterKey=SvmAdminPassword,ParameterValue=[Define SVM password] \
--capabilities CAPABILITY_NAMED_IAM
其中: region-name :與部署 ROSA 叢集的區域相同 subnet1_ID : FSxN 子網路偏好的子網路 ID 2_ID : FSxN VPC_ID 的待命子網路 ID :部署 ROSA 叢集的 VPC ID routetable1_ID 、 routetable2_ID :允許使用 CIDR 子網路 ONTAP 存取的路由表 ID 。您可以使用 0.0.0.0/0 或任何適當的 CIDR 來允許所有流量存取適用於 ONTAP 的特定 FSX 連接埠。定義管理員密碼:登入 FSxN 的密碼定義 SVM 密碼:登入將要建立的 SVM 的密碼。
確認您的檔案系統和儲存虛擬機器( SVM )已使用 Amazon FSX 主控台建立、如下所示:
2. 安裝及設定 ROSA 叢集的 Trident CSI 驅動程式
-
b.Install Trident *
ROSA 叢集工作節點預先設定了 NFS 工具,可讓您使用 NAS 傳輸協定進行儲存資源配置和存取。
如果您想改用 iSCSI ,則需要為 iSCSI 準備工作節點。從 Trident 25.02 版本開始,您可以輕鬆準備 ROSA 叢集(或任何 OpenShift 叢集)的工作節點,以便在 FSxN 儲存設備上執行 iSCSI 作業。安裝 Trident 25.02 (或更新版本)有兩種簡單的方法,可自動為 iSCSI 準備工作節點。1. 使用 tridentctl 工具從命令列使用 node-preper-flag 。2.使用營運商中樞的 Red Hat 認證 Trident 營運商並進行自訂。使用 Helm 。
|
在不啟用節點準備的情況下使用上述任何方法,只能使用 NAS 傳輸協定來在 FSxN 上配置儲存設備。 |
-
方法 1 :使用 tridentctl 工具 **
使用 node-prepRep 標誌並安裝 Trident ,如圖所示。在發出 install 命令之前,您應該已經下載安裝程式套件。請參閱 "此處的文件"。
#./tridentctl install trident -n trident --node-prep=iscsi
-
方法 2 :使用 Red Hat 認證的 Trident 操作員並從 OperatorHub 自訂 ** ,找出 Red Hat 認證的 Trident 操作員並加以安裝。
接下來,建立 Trident Orchestrator 執行個體。使用 YAML 檢視來設定任何自訂值,或在安裝期間啟用 iSCSI 節點準備。
使用上述任一方法安裝 Trident ,將會啟動 iscsid 和 multipathd 服務,並在 /etc/multipath.conf 檔案中設定下列項目,以準備用於 iSCSI 的 ROSA 叢集工作節點
c. 驗證所有 Trident Pod 是否都處於運行狀態
3.將 Trident CSI 後端設定為使用適用於 ONTAP 的 FSX ( ONTAP NAS )
Trident 後端組態會告訴 Trident 如何與儲存系統通訊(在此案例中為 ONTAP 的 FSX )。為了建立後端、我們會提供要連線的儲存虛擬機器認證、以及叢集管理和 NFS 資料介面。我們將使用"ONTAP-NAS驅動程式"在 FSX 檔案系統中配置儲存磁碟區。
a.首先、使用下列 yaml 建立 SVM 認證的機密
apiVersion: v1
kind: Secret
metadata:
name: backend-fsx-ontap-nas-secret
namespace: trident
type: Opaque
stringData:
username: vsadmin
password: <value provided for Define SVM password as a parameter to the Cloud Formation Stack>
|
您也可以從 AWS Secrets Manager 擷取為 FSxN 建立的 SVM 密碼、如下所示。 |
-
b.Next :使用下列命令將 SVM 認證的機密新增至 ROSA 叢集 **
$ oc apply -f svm_secret.yaml
您可以使用下列命令來驗證是否已將機密新增至 Trident 命名空間
$ oc get secrets -n trident |grep backend-fsx-ontap-nas-secret
-
c.接下來、為此建立後端物件 、移至複製 Git 儲存庫的 FSX 目錄。開啟檔案 ONTAP NAS 。 yaml 。將以下內容替換爲: managementLIF 和管理 DNS 名稱 dataLIF ,用 Amazon FSX SVM 的 NFS DNS 名稱和使用 SVM 名稱的 SVM** 。使用下列命令建立後端物件。
使用下列命令建立後端物件。
$ oc apply -f backend-ontap-nas.yaml
|
您可以從 Amazon FSX 主控台取得管理 DNS 名稱、 NFS DNS 名稱和 SVM 名稱、如下面的螢幕擷取畫面所示 |
-
d.現在、請執行下列命令、確認已建立後端物件、且 Phase 顯示「界限」和「狀態」為「成功」 **
4.建立儲存類別 現在 Trident 後端已設定好、您可以建立 Kubernetes 儲存類別以使用後端。儲存類別是可供叢集使用的資源物件。它說明並分類您可以申請應用程式的儲存類型。
a.檢閱 FSX 資料夾中的檔案 storage class-csi - nas . yaml 。
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
-
b.在 ROSA 叢集中建立儲存類別、並確認已建立 Trident CSI 儲存類別。 **
這將完成 Trident CSI 驅動程式的安裝、以及其與適用於 ONTAP 檔案系統之 FSX 的連線。現在您可以使用適用於 ONTAP 的 FSX 上的檔案磁碟區、在 ROSA 上部署 PostgreSQL 狀態應用程式範例。
-
c.確認沒有使用 Trident 儲存類別建立的 PVCs 和 PVs 。 **
-
d.確認應用程式可以使用 Trident CSI 建立 PV 。 **
使用在 fsx 文件夾中提供的 Trident . yaml 文件創建 PVC 。
pvc-trident.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: basic
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: trident-csi
You can issue the following commands to create a pvc and verify that it has been created. image:redhat_openshift_container_rosa_image11.png["使用 Trident 建立測試 PVC"]
|
若要使用 iSCSI ,您應該已在工作節點上啟用先前所示的 iSCSI ,而且需要建立 iSCSI 後端和儲存類別。以下是一些範例 yaml 檔案。 |
cat tbc.yaml
apiVersion: v1
kind: Secret
metadata:
name: backend-tbc-ontap-san-secret
type: Opaque
stringData:
username: fsxadmin
password: <password for the fsxN filesystem>
---
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: backend-tbc-ontap-san
spec:
version: 1
storageDriverName: ontap-san
managementLIF: <management lif of fsxN filesystem>
backendName: backend-tbc-ontap-san
svm: svm_FSxNForROSAiSCSI
credentials:
name: backend-tbc-ontap-san-secret
cat sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: trident-csi
provisioner: csi.trident.netapp.io
parameters:
backendType: "ontap-san"
media: "ssd"
provisioningType: "thin"
snapshots: "true"
allowVolumeExpansion: true
5.部署 PostgreSQL 有狀態應用程式的範例
**a.使用 helm 來安裝 PostgreSQL *
$ helm install postgresql bitnami/postgresql -n postgresql --create-namespace
-
b.確認應用程式 Pod 正在執行、並為應用程式建立了 PVC 和 PV 。 **
-
c.部署 PostgreSQL 用戶端 **
-
使用下列命令取得安裝的 PostgreSQL 伺服器密碼。 **
$ export POSTGRES_PASSWORD=$(kubectl get secret --namespace postgresql postgresql -o jsoata.postgres-password}" | base64 -d)
-
使用下列命令來執行 PostgreSQL 用戶端、並使用 password** 連線至伺服器
$ kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace postgresql --image docker.io/bitnami/postgresql:16.2.0-debian-11-r1 --env="PGPASSWORD=$POSTGRES_PASSWORD" \
> --command -- psql --host postgresql -U postgres -d postgres -p 5432
-
d.建立資料庫和資料表。為表格建立架構、並將 2 列資料插入表格。 **