Skip to main content
NetApp Solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

借助NetApp ONTAP在AWS上运行Red Hat OpenShift服务

贡献者

概述

在本节中、我们将介绍如何将FSx for ONTAP用作ROSA上运行的应用程序的永久性存储层。其中将显示在ROSA集群上安装NetApp Trident CSI驱动程序、配置FSx for ONTAP文件系统以及部署有状态应用程序示例的过程。同时、还会显示备份和还原应用程序数据的策略。借助这款集成解决方案、您可以建立一个共享存储框架、轻松地跨多个应用程序进行扩展、从而简化使用Trident CSI驱动程序扩展、保护和还原数据的过程。

前提条件

此图显示了部署在多个澳大利亚地区的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)、如下所示:

已创建FSxN

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
备注 根据您安装的版本、需要在显示的命令中更改version参数。有关正确的版本号、请参见"文档。"。有关安装Trident的其他方法,请参阅《Trident》"文档。"

c.Verify that all Trident Pod are in the running state

Trident Pod正在运行

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密码、如下所示。

AWS机密管理器

检索密钥

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时无PVC

*验证应用程序是否可以使用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

安装PostgreSQL

  • b.确认应用程序POD正在运行,并且为应用程序创建了PVC和PV。**

PostgreSQL Pod

PostgreSQL PVC

PostgreSQL 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

PostgreSQL客户端

*创建数据库和表。创建表的纲要并将2行数据插入表中。

PostgreSQL表、模式、行

PostgreSQL行1

PostgreSQL行2.