Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

AWSでのRed Hat OpenShiftサービスとNetApp ONTAP

共同作成者

概要

このセクションでは、ROSAで実行されるアプリケーションの永続的ストレージレイヤとしてFSx for ONTAPを活用する方法を説明します。ROSAクラスタへのNetApp Trident CSIドライバのインストール、FSx for ONTAPファイルシステムのプロビジョニング、サンプルステートフルアプリケーションの導入について説明します。また、アプリケーションデータをバックアップおよび復元するための戦略も示します。この統合ソリューションにより、AZ間で容易に拡張できる共有ストレージフレームワークを確立し、Trident CSIドライバを使用してデータのスケーリング、保護、リストアのプロセスを簡素化できます。

前提条件

この図は、複数のAZに展開されたROSAクラスタを示しています。Rosaクラスタのマスターノード、インフラノードはRed HatのVPCにあり、ワーカーノードはお客様のアカウントのVPCにあります。同じVPC内にFSx for ONTAPファイルシステムを作成し、TridentドライバをROSAクラスタにインストールして、このVPCのすべてのサブネットがファイルシステムに接続できるようにします。

Rosaアーキテクチャ

初期セットアップ

  • 1.FSx for NetApp ONTAPのプロビジョニング**

ROSAクラスタと同じVPC内にマルチAZ FSx for NetApp ONTAPを作成します。これにはいくつかの方法があります。CloudFormationスタックを使用したFSxNの作成の詳細が記載されています。

  • a. GitHubリポジトリのクローン**

$ git clone https://github.com/aws-samples/rosa-fsx-netapp-ontap.git
  • B. CloudFormationスタックの実行**パラメータ値を独自の値に置き換えて、以下のコマンドを実行します。

$ 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

WHERE: region-name: ROSAクラスタが展開されているリージョンと同じsubnet1_ID: FSxNサブネットの優先サブネットのid 2_ID: FSxNのスタンバイサブネットのid VPC_ID: ROSAクラスタが展開されているVPCのid routetable1_ID, routetable2_ID: ONTAPすべてのトラフィックがFSx for ONTAPの特定のポートにアクセスできるようにするには、0.0.0.0/0または適切なCIDRを使用します。Define Admin password:FSxNにログインするためのパスワードDefine SVM password:作成されるSVMにログインするためのパスワード。

以下に示すAmazon FSxコンソールを使用して、ファイルシステムとStorage Virtual Machine(SVM)が作成されていることを確認します。

FSxNが作成されました

  • 2. ROSAクラスタ用のTrident CSIドライバのインストールと設定**

  • B. Tridentのインストール**

RosaのクラスタワーカーノードにはNFSツールがあらかじめ設定されており、ストレージのプロビジョニングやアクセスにNASプロトコルを使用できます。

代わりにiSCSIを使用する場合は、ワーカーノードをiSCSI用に準備する必要があります。Trident 25.02リリース以降では、FSxNストレージでiSCSI操作を実行するためのROSAクラスタ(または任意のOpenShiftクラスタ)のワーカーノードを簡単に準備できます。Trident 25.02(またはそれ以降)をインストールする簡単な方法は2つあります。この方法を使用すると、iSCSIのワーカーノードの準備を自動化できます。1. tridentctlツールを使用してコマンドラインからnode-prep-flagを使用します。2.オペレータハブからRed Hat認定のTridentオペレータを使用してカスタマイズします。3. Helmを使用する。

メモ node-prepを有効にせずに上記のいずれかの方法を使用すると、FSxNでのストレージのプロビジョニングにNASプロトコルのみを使用できます。

方法1: tridentctlツールを使用

node-prepフラグを使用してTridentをインストールします(図を参照)。インストールコマンドを実行する前に、インストーラパッケージをダウンロードしておく必要があります。を参照してください "ドキュメントはこちら"

#./tridentctl install trident -n trident --node-prep=iscsi
YAML

方法2: Red Hat認定Tridentオペレータを使用してカスタマイズ OperatorHubから、Red Hat認定Tridentオペレータを見つけてインストールします。

Operator HubのOperator

オペレータ1のインストール

オペレータ2のインストール

オペレータによるインストール

次に、Trident Orchestratorインスタンスを作成します。YAMLビューを使用してカスタム値を設定するか、インストール時にiSCSIノードの準備を有効にします。

Orchestratorの作成

NodePrepを有効にする

Orchestratorをインストール

Tridentインストール済み

上記のいずれかの方法を使用してTridentをインストールすると、iscsidサービスとmultipathdサービスを開始し、/etc/multipath.confファイルに次のように設定することで、iSCSI用のROSAクラスタワーカーノードが準備されます。

iscsidアクティブ

multipathd active

multipath.confフアイル

  • C.すべてのTridentポッドが実行中状態であることを確認します**

実行中のTridentポッド

  • 3.FSx for ONTAP(ONTAP NAS)を使用するようにTrident CSIバックエンドを構成**

Tridentバックエンド構成では、ストレージシステムとの通信方法(ここではFSx for ONTAP)をTridentに設定します。バックエンドの作成にあたっては、クラスタ管理インターフェイスとNFSデータインターフェイスに接続するSVMのクレデンシャルを指定します。を使用して、FSxファイルシステムでストレージボリュームをプロビジョニングします"ONTAP - NAS ドライバ"

  • 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>
メモ 以下に示すように、FSxN用に作成したSVMのパスワードをAWS Secrets Managerから取得することもできます。

AWS Secrets Manager

シークレットを取得

  • B.次に、次のコマンドを使用してSVMクレデンシャルのシークレットをROSAクラスタに追加します**

$ oc apply -f svm_secret.yaml

シークレットがTridentネームスペースに追加されたことを確認するには、次のコマンドを使用します。

$ oc get secrets -n trident |grep backend-fsx-ontap-nas-secret

シークレットの適用

  • C。次に、このためのバックエンドオブジェクトを作成し、クローンされたGitリポジトリの FSXディレクトリに移動します。backend-ansc-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名を確認できます。

LIFの取得

  • d。次に、次のコマンドを実行して、バックエンドオブジェクトが作成され、[フェーズ]が[バインド済み]、[ステータス]が[成功]になっていることを確認します**

バックエンドの作成

  • 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ドライバのインストールとFSx for ONTAPファイルシステムへの接続は完了です。FSx for ONTAPのファイルボリュームを使用して、サンプルのPostgreSQLステートフルアプリケーションをROSAに導入できるようになりました。

  • C。Trident CSIストレージクラスを使用して作成されたPVCおよびPVCがないことを確認します。**

Tridentを使用したPVCなし

  • d。アプリケーションがTrident CSIを使用してPVを作成できることを確認します。**

  • fsx**フォルダにあるpvc-pvc.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の作成"]
メモ 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
YAML
  • 5.サンプルのPostgreSQLステートフルアプリケーションの導入**

  • a。Helmを使用してPostgreSQLをインストール**

$ helm install postgresql bitnami/postgresql -n postgresql --create-namespace

PostgreSQLのインストール

  • B.アプリケーションポッドが実行中であること、およびアプリケーション用にPVCとPVが作成されていることを確認します。**

PostgreSQLポッド

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クライアント

  • d。データベースとテーブルを作成します。テーブルのスキーマを作成し、テーブルに2行のデータを挿入します。**

PostgreSQLテーブル、スキーマ、行

PostgreSQL行1

PostgreSQL行2