Wechseln Sie zwischen Backend-Verwaltungsoptionen
Erfahren Sie mehr über die verschiedenen Möglichkeiten, Backends in Trident zu verwalten.
Optionen zur Verwaltung von Backends
Mit der Einführung von TridentBackendConfig haben Administratoren nun zwei einzigartige Möglichkeiten, Backends zu verwalten. Dies wirft folgende Fragen auf:
-
Können Backends, die mit
tridentctlerstellt wurden, mitTridentBackendConfigverwaltet werden? -
Können Backends, die mit
TridentBackendConfigerstellt wurden, mittridentctlverwaltet werden?
Backends mit tridentctl verwalten mittels TridentBackendConfig
Dieser Abschnitt beschreibt die Schritte, die erforderlich sind, um Backends zu verwalten, die mit tridentctl direkt über die Kubernetes-Schnittstelle durch das Erstellen von TridentBackendConfig Objekten erstellt wurden.
Dies gilt für die folgenden Szenarien:
-
Vorhandene Backends, die kein
TridentBackendConfighaben, weil sie mittridentctlerstellt wurden. -
Neue Backends, die mit
tridentctlerstellt wurden, während andereTridentBackendConfigObjekte existieren.
In beiden Szenarien bleiben die Backends weiterhin vorhanden, wobei Trident die Volumes plant und auf ihnen arbeitet. Administratoren haben hier zwei Möglichkeiten:
-
Verwenden Sie
tridentctlweiterhin, um Backends zu verwalten, die damit erstellt wurden. -
Binden Sie Backends, die mit
tridentctlerstellt wurden, an ein neuesTridentBackendConfigObjekt. Dadurch werden die Backends mitkubectlund nicht mittridentctlverwaltet.
Um ein bestehendes Backend mit kubectl zu verwalten, müssen Sie eine TridentBackendConfig erstellen, die an das bestehende Backend gebunden ist. Hier ist eine Übersicht, wie das funktioniert:
-
Erstellen Sie ein Kubernetes-Secret. Das Secret enthält die Anmeldeinformationen, die Trident für die Kommunikation mit dem Speichercluster bzw. -dienst benötigt.
-
Erstellen Sie ein
TridentBackendConfigObjekt. Dieses enthält spezifische Informationen zum Speicher-Cluster/-Dienst und verweist auf das im vorherigen Schritt erstellte Geheimnis. Achten Sie darauf, identische Konfigurationsparameter anzugeben (wiespec.backendName,spec.storagePrefix,spec.storageDriverNameusw.).spec.backendNamemuss auf den Namen des vorhandenen Backends gesetzt werden.
Schritt 0: Backend identifizieren
Um ein TridentBackendConfig zu erstellen, das an ein bestehendes Backend gebunden ist, müssen Sie die Backend-Konfiguration abrufen. In diesem Beispiel nehmen wir an, dass ein Backend mit der folgenden JSON-Definition erstellt wurde:
tridentctl get backend ontap-nas-backend -n trident +---------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +---------------------+----------------+--------------------------------------+--------+---------+ | ontap-nas-backend | ontap-nas | 52f2eb10-e4c6-4160-99fc-96b3be5ab5d7 | online | 25 | +---------------------+----------------+--------------------------------------+--------+---------+
cat ontap-nas-backend.json
{
"version": 1,
"storageDriverName": "ontap-nas",
"managementLIF": "10.10.10.1",
"dataLIF": "10.10.10.2",
"backendName": "ontap-nas-backend",
"svm": "trident_svm",
"username": "cluster-admin",
"password": "admin-password",
"defaults": {
"spaceReserve": "none",
"encryption": "false"
},
"labels": {
"store": "nas_store"
},
"region": "us_east_1",
"storage": [
{
"labels": {
"app": "msoffice",
"cost": "100"
},
"zone": "us_east_1a",
"defaults": {
"spaceReserve": "volume",
"encryption": "true",
"unixPermissions": "0755"
}
},
{
"labels": {
"app": "mysqldb",
"cost": "25"
},
"zone": "us_east_1d",
"defaults": {
"spaceReserve": "volume",
"encryption": "false",
"unixPermissions": "0775"
}
}
]
}
Schritt 1: Erstellen Sie ein Kubernetes-Secret
Erstellen Sie ein Secret, das die Anmeldeinformationen für das Backend enthält, wie in diesem Beispiel gezeigt:
cat tbc-ontap-nas-backend-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: ontap-nas-backend-secret
type: Opaque
stringData:
username: cluster-admin
password: admin-password
kubectl create -f tbc-ontap-nas-backend-secret.yaml -n trident secret/backend-tbc-ontap-san-secret created
Schritt 2: Erstellen Sie einen `TridentBackendConfig`CR
Der nächste Schritt besteht darin, eine TridentBackendConfig CR zu erstellen, die automatisch an die bereits vorhandene ontap-nas-backend gebunden wird (wie in diesem Beispiel). Stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind:
-
Der gleiche Backend-Name ist definiert in
spec.backendName. -
Die Konfigurationsparameter sind identisch mit dem ursprünglichen Backend.
-
Virtuelle Pools (sofern vorhanden) müssen die gleiche Reihenfolge wie im ursprünglichen Backend beibehalten.
-
Anmeldeinformationen werden über ein Kubernetes Secret und nicht im Klartext bereitgestellt.
In diesem Fall wird die `TridentBackendConfig`folgendermaßen aussehen:
cat backend-tbc-ontap-nas.yaml
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
name: tbc-ontap-nas-backend
spec:
version: 1
storageDriverName: ontap-nas
managementLIF: 10.10.10.1
dataLIF: 10.10.10.2
backendName: ontap-nas-backend
svm: trident_svm
credentials:
name: mysecret
defaults:
spaceReserve: none
encryption: 'false'
labels:
store: nas_store
region: us_east_1
storage:
- labels:
app: msoffice
cost: '100'
zone: us_east_1a
defaults:
spaceReserve: volume
encryption: 'true'
unixPermissions: '0755'
- labels:
app: mysqldb
cost: '25'
zone: us_east_1d
defaults:
spaceReserve: volume
encryption: 'false'
unixPermissions: '0775'
kubectl create -f backend-tbc-ontap-nas.yaml -n trident tridentbackendconfig.trident.netapp.io/tbc-ontap-nas-backend created
Schritt 3: Überprüfen Sie den Status der TridentBackendConfig CR
Nachdem das TridentBackendConfig erstellt wurde, muss seine Phase Bound sein. Es sollte außerdem denselben Backend-Namen und dieselbe UUID wie das bestehende Backend aufweisen.
kubectl get tbc tbc-ontap-nas-backend -n trident NAME BACKEND NAME BACKEND UUID PHASE STATUS tbc-ontap-nas-backend ontap-nas-backend 52f2eb10-e4c6-4160-99fc-96b3be5ab5d7 Bound Success #confirm that no new backends were created (i.e., TridentBackendConfig did not end up creating a new backend) tridentctl get backend -n trident +---------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +---------------------+----------------+--------------------------------------+--------+---------+ | ontap-nas-backend | ontap-nas | 52f2eb10-e4c6-4160-99fc-96b3be5ab5d7 | online | 25 | +---------------------+----------------+--------------------------------------+--------+---------+
Das Backend wird nun vollständig über das tbc-ontap-nas-backend TridentBackendConfig Objekt verwaltet.
Backends mit TridentBackendConfig verwalten unter Verwendung von tridentctl
`tridentctl` kann verwendet werden, um Backends aufzulisten, die mit `TridentBackendConfig` erstellt wurden. Darüber hinaus können Administratoren solche Backends auch vollständig über `tridentctl` verwalten, indem sie `TridentBackendConfig` löschen und sicherstellen, dass `spec.deletionPolicy` auf `retain` gesetzt ist.
Schritt 0: Backend identifizieren
Nehmen wir beispielsweise an, das folgende Backend wurde mit TridentBackendConfig erstellt:
kubectl get tbc backend-tbc-ontap-san -n trident -o wide NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY backend-tbc-ontap-san ontap-san-backend 81abcb27-ea63-49bb-b606-0a5315ac5f82 Bound Success ontap-san delete tridentctl get backend ontap-san-backend -n trident +-------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +-------------------+----------------+--------------------------------------+--------+---------+ | ontap-san-backend | ontap-san | 81abcb27-ea63-49bb-b606-0a5315ac5f82 | online | 33 | +-------------------+----------------+--------------------------------------+--------+---------+
Aus der Ausgabe geht hervor, dass TridentBackendConfig erfolgreich erstellt wurde und mit einem Backend verbunden ist [beachten Sie die UUID des Backends].
Schritt 1: Bestätigen Sie, dass deletionPolicy auf retain gesetzt ist
Betrachten wir den Wert von deletionPolicy. Dieser muss auf retain`gesetzt werden. Dadurch wird sichergestellt, dass beim Löschen eines `TridentBackendConfig CR die Backend-Definition weiterhin vorhanden ist und mit `tridentctl`verwaltet werden kann.
kubectl get tbc backend-tbc-ontap-san -n trident -o wide
NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY
backend-tbc-ontap-san ontap-san-backend 81abcb27-ea63-49bb-b606-0a5315ac5f82 Bound Success ontap-san delete
# Patch value of deletionPolicy to retain
kubectl patch tbc backend-tbc-ontap-san --type=merge -p '{"spec":{"deletionPolicy":"retain"}}' -n trident
tridentbackendconfig.trident.netapp.io/backend-tbc-ontap-san patched
#Confirm the value of deletionPolicy
kubectl get tbc backend-tbc-ontap-san -n trident -o wide
NAME BACKEND NAME BACKEND UUID PHASE STATUS STORAGE DRIVER DELETION POLICY
backend-tbc-ontap-san ontap-san-backend 81abcb27-ea63-49bb-b606-0a5315ac5f82 Bound Success ontap-san retain
|
|
Fahren Sie nicht mit dem nächsten Schritt fort, es sei denn, deletionPolicy ist auf retain gesetzt.
|
Schritt 2: Löschen Sie das TridentBackendConfig CR
Der letzte Schritt besteht darin, die TridentBackendConfig CR zu löschen. Nachdem Sie bestätigt haben, dass das deletionPolicy auf retain gesetzt ist, können Sie mit dem Löschen fortfahren:
kubectl delete tbc backend-tbc-ontap-san -n trident tridentbackendconfig.trident.netapp.io "backend-tbc-ontap-san" deleted tridentctl get backend ontap-san-backend -n trident +-------------------+----------------+--------------------------------------+--------+---------+ | NAME | STORAGE DRIVER | UUID | STATE | VOLUMES | +-------------------+----------------+--------------------------------------+--------+---------+ | ontap-san-backend | ontap-san | 81abcb27-ea63-49bb-b606-0a5315ac5f82 | online | 33 | +-------------------+----------------+--------------------------------------+--------+---------+
Beim Löschen des TridentBackendConfig Objekts entfernt Trident dieses einfach, ohne das Backend selbst zu löschen.