Red hat OpenShift Service auf AWS mit NetApp ONTAP
Überblick
In diesem Abschnitt zeigen wir, wie FSX für ONTAP als persistente Storage-Ebene für auf ROSA ausgeführte Applikationen genutzt werden kann. Es zeigt die Installation des NetApp Trident-CSI-Treibers auf einem ROSA-Cluster, die Bereitstellung eines FSX für ONTAP-Dateisystems und die Bereitstellung einer Beispielanwendung. Es zeigt auch Strategien für die Sicherung und Wiederherstellung Ihrer Anwendungsdaten auf. Mit dieser integrierten Lösung können Sie ein Shared Storage Framework entwickeln, das sich mühelos über alle Verfügbarkeitszonen hinweg skalieren lässt. Dadurch werden die Skalierungs-, Sichern- und Wiederherstellungsprozesse mit dem Trident CSI-Treiber vereinfacht.
Voraussetzungen
-
IAM-Benutzer "Mit entsprechenden Berechtigungen" zum Erstellen und Zugreifen auf ROSA-Cluster
-
Helm 3 "Dokumentation"
Dieses Diagramm zeigt den in mehreren AZS bereitgestellten ROSA-Cluster. Master-Nodes des ROSA Clusters, Infrastruktur-Nodes sind in der VPC von Red hat, während sich die Worker-Nodes in einer VPC im Konto des Kunden befinden. Wir werden ein FSX für ONTAP-Dateisystem innerhalb der gleichen VPC erstellen und den Trident-Treiber im ROSA-Cluster installieren, damit alle Subnetze dieser VPC mit dem Dateisystem verbinden können.
Ersteinrichtung
1. Bereitstellung FSX für NetApp ONTAP
Erstellen Sie ein Multi-AZ FSX für NetApp ONTAP in demselben VPC wie das ROSA-Cluster. Es gibt mehrere Möglichkeiten, dies zu tun. Die Details zur Erstellung von FSxN mit einem CloudFormation Stack werden bereitgestellt
A.Klonen Sie das GitHub Repository
$ git clone https://github.com/aws-samples/rosa-fsx-netapp-ontap.git
B.Starten Sie den CloudFormation Stack Führen Sie den folgenden Befehl aus, indem Sie die Parameterwerte durch Ihre eigenen Werte ersetzen:
$ 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
Wobei : Region-Name: Identisch mit der Region, in der der ROSA-Cluster bereitgestellt wird subnet1_ID : id des bevorzugten Subnetzes für FSxN subnet2_ID: id des Standby-Subnetzes für FSxN VPC_ID: id des VPC, in dem der ROSA-Cluster bereitgestellt wird routetable1_ID, routetable2_ID: ids der Routingtabellen, die mit den oben gewählten Subnetzen für die-Zugriffsregeln für den Zugriff auf die ONTAP-Gruppen zugeordnet sind. Sie können 0.0.0.0/0 oder jede geeignete CIDR verwenden, um allen Verkehr zu erlauben, auf die spezifischen Ports von FSX für ONTAP zuzugreifen. Administrator-Passwort definieren: Ein Passwort für die Anmeldung bei FSxN SVM-Passwort definieren: Ein Passwort für die Anmeldung bei SVM, die erstellt werden soll.
Überprüfen Sie mithilfe der Amazon FSX Konsole, ob Ihr Filesystem und Ihre Storage Virtual Machine (SVM) erstellt wurden:
2.Installieren und Konfigurieren des Trident CSI-Treibers für den ROSA-Cluster
B.Trident installieren
ROSA Cluster Worker Knoten sind vorkonfiguriert mit nfs-Tools, mit denen Sie NAS-Protokolle für Storage-Bereitstellung und -Zugriff verwenden können.
Wenn Sie stattdessen iSCSI verwenden möchten, müssen Sie die Worker-Nodes auf iSCSI vorbereiten. Ab Version Trident 25.02 können Sie die Workerknoten des ROSA-Clusters (oder eines beliebigen OpenShift-Clusters) problemlos vorbereiten, um iSCSI-Vorgänge auf dem FSxN-Speicher auszuführen. Es gibt 2 einfache Möglichkeiten zur Installation von Trident 25.02 (oder höher), die die WorkerNode-Vorbereitung für iSCSI automatisiert. 1. Verwenden des Node-prep-Flag von der Kommandozeile mit tridentctl Werkzeug. 2. Verwendung des Red hat zertifizierten Trident-Bedieners vom Operator Hub aus und Anpassung des Bedieners. 3.Verwenden Von Helm.
|
Durch die Verwendung einer der oben genannten Methoden ohne Aktivierung der Node-Vorbereitung können Sie nur NAS-Protokolle für die Bereitstellung von Speicher auf FSxN verwenden. |
Methode 1: Verwenden Sie das tridentctl-Tool
Verwenden Sie das Node-prep-Flag, und installieren Sie Trident wie in der Abbildung dargestellt. Bevor Sie den Installationsbefehl ausgeben, sollten Sie das Installationspaket heruntergeladen haben. Siehe "Die Dokumentation hier".
#./tridentctl install trident -n trident --node-prep=iscsi
Methode 2: Verwenden Sie den Red hat Certified Trident Operator und passen Sie vom OperatorHub aus an, suchen Sie den Red hat Certified Trident Operator und installieren Sie ihn.
Erstellen Sie als nächstes die Trident Orchestrator Instanz. Verwenden Sie die YAML-Ansicht, um benutzerdefinierte Werte festzulegen oder die iscsi-Node-Vorbereitung während der Installation zu aktivieren.
Durch die Installation von Trident mit einer der oben genannten Methoden werden die ROSA Cluster Worker Nodes für iSCSI vorbereitet, indem die Dienste iscsid und multipathd gestartet und die folgenden Einstellungen in der Datei /etc/multipath.conf vorgenommen werden
C.Überprüfen Sie, ob sich alle Trident-Pods im laufenden Zustand befinden
3. Konfigurieren Sie das Trident CSI-Backend für die Verwendung von FSX for ONTAP (ONTAP NAS)
Die Trident Back-End-Konfiguration sagt Trident über die Kommunikation mit dem Storage-System (in diesem Fall FSX für ONTAP). Für die Erstellung des Backends stellen wir die Anmeldeinformationen der zu verbindenen Storage Virtual-Maschine sowie die Cluster-Management- und NFS-Datenschnittstellen bereit. Wir werden die verwenden"ontap-nas-Treiber", um Speicher Volumen im FSX Dateisystem bereitzustellen.
A. Erstellen Sie zunächst einen Schlüssel für die SVM-Anmeldeinformationen mit der folgenden yaml
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>
|
Das für FSxN erstellte SVM-Passwort können Sie wie unten gezeigt im AWS Secrets Manager abrufen. |
B.als Nächstes fügen Sie den Schlüssel für die SVM-Anmeldeinformationen mit dem folgenden Befehl zum ROSA-Cluster hinzu
$ oc apply -f svm_secret.yaml
Mit dem folgenden Befehl können Sie überprüfen, ob der Geheimschlüssel im Trident-Namespace hinzugefügt wurde
$ oc get secrets -n trident |grep backend-fsx-ontap-nas-secret
c. Erstellen Sie als nächstes das Backend-Objekt dafür, gehen Sie in das fsx Verzeichnis Ihres geklonten Git-Repository. Öffnen Sie die Datei Backend-ONTAP-nas.yaml. Ersetzen Sie folgendes: ManagementLIF mit dem Management DNS-Namen dataLIF mit dem NFS DNS-Namen der Amazon FSX svm und svm mit dem svm-Namen. Erstellen Sie das Backend-Objekt mit dem folgenden Befehl.
Erstellen Sie das Backend-Objekt mit dem folgenden Befehl.
$ oc apply -f backend-ontap-nas.yaml
|
Wie in der Abbildung unten gezeigt, erhalten Sie den Management-DNS-Namen, den NFS-DNS-Namen und den SVM-Namen von der Amazon FSX-Konsole |
D. Führen Sie nun den folgenden Befehl aus, um zu überprüfen, ob das Backend-Objekt erstellt wurde und Phase „gebunden“ und Status „erfolgreich“ anzeigt.
4. Storage Class erstellen Nachdem nun das Trident-Backend konfiguriert ist, können Sie eine Kubernetes-Storage-Klasse erstellen, um das Backend zu verwenden. Storage-Klasse ist ein Ressourcenobjekt, das dem Cluster zur Verfügung gestellt wird. Es beschreibt und klassifiziert den Speichertyp, den Sie für eine Anwendung anfordern können.
A. Überprüfen Sie die Datei Storage-class-csi-nas.yaml im fsx-Ordner.
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. Erstellen Sie eine Storage-Klasse im ROSA-Cluster, und überprüfen Sie, ob die Trident-csi-Storage-Klasse erstellt wurde.
Damit ist die Installation des Trident-CSI-Treibers und dessen Anbindung an das Dateisystem FSX for ONTAP abgeschlossen. Jetzt können Sie eine Beispielanwendung für PostgreSQL Stateful auf ROSA mit Dateivolumes auf FSX für ONTAP implementieren.
c. Vergewissern Sie sich, dass keine VES und VES mit der Trident-csi-Storage-Klasse erstellt wurden.
D. Überprüfen Sie, ob Anwendungen PV mit Trident CSI erstellen können.
Erstellen Sie eine PVC mit der Datei pvc-Trident.yaml, die im Ordner fsx enthalten ist.
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["Test-PVC mit Trident erstellen"]
|
Um iSCSI zu verwenden, sollten Sie iSCSI wie oben gezeigt auf den Arbeitsknoten aktiviert haben und Sie müssen ein iSCSI-Backend und eine Storage-Klasse erstellen. Hier sind einige Beispiele für yaml-Dateien. |
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. Stellen Sie eine Beispielanwendung für PostgreSQL Stateful bereit
A. Verwenden Sie Helm, um postgresql zu installieren
$ helm install postgresql bitnami/postgresql -n postgresql --create-namespace
B. Überprüfen Sie, ob der Anwendungspod ausgeführt wird und eine PVC und ein PV für die Anwendung erstellt werden.
c. PostgreSQL-Client implementieren
Verwenden Sie den folgenden Befehl, um das Passwort für den postgresql Server zu erhalten, der installiert wurde.
$ export POSTGRES_PASSWORD=$(kubectl get secret --namespace postgresql postgresql -o jsoata.postgres-password}" | base64 -d)
Verwenden Sie den folgenden Befehl, um einen postgresql-Client auszuführen und mit dem Passwort eine Verbindung zum Server herzustellen
$ 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. Erstellen Sie eine Datenbank und eine Tabelle. Erstellen Sie ein Schema für die Tabelle und fügen Sie 2 Datenzeilen in die Tabelle ein.