借助NetApp ONTAP在AWS上运行Red Hat OpenShift服务
概述
在本节中、我们将介绍如何将FSx for ONTAP用作ROSA上运行的应用程序的永久性存储层。其中将显示在ROSA集群上安装NetApp Trident CSI驱动程序、配置FSx for ONTAP文件系统以及部署有状态应用程序示例的过程。同时、还会显示备份和还原应用程序数据的策略。借助这款集成解决方案、您可以建立一个共享存储框架、轻松地跨多个应用程序进行扩展、从而简化使用Trident CSI驱动程序扩展、保护和还原数据的过程。
前提条件
-
IAM用户"具有适当的权限"、用于创建和访问ROSA集群
-
"OpenShift命令行界面"(OC)
-
Helm 3"文档。"
此图显示了部署在多个澳大利亚地区的ROSA集群。罗莎集群的主节点、基础架构节点位于Red Hat的VPC中,而工作节点位于客户帐户的VPC中。我们将在同一个VPC中创建一个FSx for ONTAP文件系统、并在ROSA集群中安装Trident驱动程序、从而允许此VPC的所有子网连接到文件系统。
初始设置
1.为FSX配置NetApp ONTAP
在与ROSA集群相同的VPC中创建适用于NetApp ONTAP的多可用性FSx。可通过多种方法实现此操作。提供了使用CloudFormation堆栈创建FSxN的详细信息
a.Clone the GitHub re듦 퓚 处
$ git clone https://github.com/aws-samples/rosa-fsx-netapp-ontap.git
b.Run the CloudFormation 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:sas the region where the ROSA cluster is才会部署subnet1_ID:FSxN subnet2_ID的首选子网的ID:FSxN的备用子网的ID VPC_ID:部署ROSA集群的ONTAP的VPC的ID routetable1_ID、routetable2_ID:与所选CIDR规则关联的路由表的ID:允许对所选Sx访问的子网进行控制。您可以使用0.0.0.0/0或任何适当的CIDR允许所有流量访问FSx for ONTAP的特定端口。定义管理员密码:用于登录到FSxN的密码定义SVM密码:用于登录到要创建的SVM的密码。
验证是否已使用Amazon FSx控制台创建文件系统和Storage Virtual Machine (SVM)、如下所示:
2.为ROSA群集安装和配置Trident CSI驱动程序
a.Add the Trident Helm re듦 在处
$ helm repo add netapp-trident https://netapp.github.io/trident-helm-chart
b.Install Trident using Helm
$ helm install trident netapp-trident/trident-operator --version 100.2406.0 --create-namespace --namespace trident
c.Verify that all Trident Pod are in the running state
3.配置Trident CSI后端以使用FSx for ONTAP (ONTAP NAS)
Trident后端配置指示Trident如何与存储系统通信(在本示例中为FSx for ONTAP)。要创建后端、我们将提供要连接到的Storage Virtual Machine的凭据、以及集群管理和NFS数据接口。我们将使用"ontap-NAS 驱动程序"在FSx文件系统中配置存储卷。
**…首先、使用以下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机密管理器检索为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目录。打开文件backend-ams-naS.yaml ONTAP。将以下内容: ManagementLIF替换为管理DNS名称 dataLIF,替换为Amazon FSx SVM的NFS DNS名称,并将 SVM**替换为SVM名称。使用以下命令创建后端对象。
使用以下命令创建后端对象。
$ oc apply -f backend-ontap-nas.yaml
您可以从Amazon FSx控制台获取管理DNS名称、NFS DNS名称和SVM名称、如以下屏幕截图所示 |
*现在,运行以下命令以验证是否已创建后端对象,并且Phase (阶段)显示bound and Status (绑定)为Success (成功)
4.创建存储类配置Trident后端后,您可以创建一个Kubbernetes存储类以使用后端。存储类是可供集群使用的资源对象。它介绍并分类您可以为应用程序请求的存储类型。
…查看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已创建ROSA-CSI存储类。**
至此、Trident CSI驱动程序的安装完成、并完成了它与FSx for ONTAP文件系统的连接。现在、您可以使用FSx for ONTAP上的文件卷在ROSA上部署示例PostgreSQL有状态应用程序。
-
C.确认没有使用PVC-sI存储类创建Trident和PV。**
*验证应用程序是否可以使用Trident Csi.创建PV
使用FSX文件夹中提供的PVC-AML.YAML文件创建Trident。
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"]
5.部署示例PostgreSQL有状态应用程序
…使用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客户机,并使用口令连接到服务器
$ 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
*创建数据库和表。创建表的纲要并将2行数据插入表中。