Wechseln Sie zwischen den Back-End-Managementoptionen
Erfahren Sie mehr über die verschiedenen Möglichkeiten für das Management von Back-Ends in Trident.
Optionen für das Management von Back-Ends
Mit der Einführung von TridentBackendConfig haben Administratoren nun zwei einzigartige Möglichkeiten, Back-Ends zu managen. Dies stellt die folgenden Fragen:
-
Können Back-Ends erstellt
tridentctlwerden mitTridentBackendConfig? -
Können Back-Ends erstellt mit
TridentBackendConfigverwaltet werdentridentctl?
Managen von tridentctl Back-Ends mit TridentBackendConfig
In diesem Abschnitt werden die Schritte zum Management von Back-Ends behandelt, die durch das Erstellen von Objekten direkt über die Kubernetes-Schnittstelle erstellt TridentBackendConfig wurden tridentctl.
Dies gilt für die folgenden Szenarien:
-
Bereits vorhandene Backends, die nicht über ein verfügen
TridentBackendConfig, weil sie mit erstellt wurdentridentctl. -
Neue Backends, die mit erstellt wurden
tridentctl, während andereTridentBackendConfigObjekte existieren.
In beiden Szenarien sind Back-Ends weiterhin vorhanden, wobei Trident Volumes terminiert und darauf ausgeführt werden. Administratoren können hier eine von zwei Möglichkeiten wählen:
-
Verwenden Sie weiter
tridentctl, um Back-Ends zu verwalten, die mit ihm erstellt wurden. -
Binden von Back-Ends, die mit erstellt
tridentctlwurden, an ein neuesTridentBackendConfigObjekt. Dies würde bedeuten, dass die Back-Ends mit und nichttridentctlverwaltet werdenkubectl.
Um ein vorvorhandenes Backend mit zu verwalten kubectl, müssen Sie ein erstellen TridentBackendConfig, das an das vorhandene Backend bindet. Hier eine Übersicht über die Funktionsweise:
-
Kubernetes Secret erstellen: Das Geheimnis enthält die Anmeldeinformationen, die Trident zur Kommunikation mit dem Storage-Cluster/Service benötigt.
-
Erstellen Sie ein
TridentBackendConfigObjekt. Dies enthält Angaben zum Storage-Cluster/Service und verweist auf das im vorherigen Schritt erstellte Geheimnis. Es ist darauf zu achten, identische Konfigurationsparameter anzugeben (z. B.spec.backendName, ,spec.storagePrefixspec.storageDriverNameund so weiter).spec.backendNameMuss auf den Namen des vorhandenen Backends gesetzt werden.
Schritt 0: Identifizieren Sie das Backend
Um ein zu erstellen TridentBackendConfig, das an ein vorhandenes Backend bindet, müssen Sie die Backend-Konfiguration abrufen. In diesem Beispiel nehmen wir an, dass ein Backend mithilfe 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: Ein Kubernetes Secret erstellen
Erstellen Sie einen geheimen Schlüssel, der 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 eines TridentBackendConfig CR
Im nächsten Schritt wird ein CR erstellt TridentBackendConfig, der automatisch an das bereits vorhandene bindet ontap-nas-backend (wie in diesem Beispiel). Stellen Sie sicher, dass folgende Anforderungen erfüllt sind:
-
Der gleiche Backend-Name ist in definiert
spec.backendName. -
Die Konfigurationsparameter sind mit dem ursprünglichen Back-End identisch.
-
Virtuelle Pools (falls vorhanden) müssen dieselbe Reihenfolge wie im ursprünglichen Backend beibehalten.
-
Anmeldedaten werden bei einem Kubernetes Secret und nicht im Klartext bereitgestellt.
In diesem Fall sieht das TridentBackendConfig wie folgt aus:
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 des TridentBackendConfig CR
Nachdem der TridentBackendConfig erstellt wurde, muss seine Phase sein Bound. Sie sollte außerdem den gleichen Backend-Namen und die gleiche UUID wie das vorhandene Backend widerspiegeln.
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 Objekt verwaltet tbc-ontap-nas-backend TridentBackendConfig.
Managen von TridentBackendConfig Back-Ends mit tridentctl
`tridentctl` Kann verwendet werden, um Back-Ends aufzulisten, die mit erstellt wurden `TridentBackendConfig`. Darüber hinaus können Administratoren auch wählen, um vollständig verwalten solche Back-Ends durch durch `tridentctl` Löschen `TridentBackendConfig` und sicherstellen, `spec.deletionPolicy` ist auf gesetzt `retain`.
Schritt 0: Identifizieren Sie das Backend
Nehmen wir zum Beispiel an, dass das folgende Backend mit erzeugt wurde TridentBackendConfig:
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 wird ersichtlich, dass sie TridentBackendConfig erfolgreich erstellt wurde und an ein Backend gebunden ist [Observe the Backend's UUID].
Schritt 1: Bestätigen deletionPolicy ist auf eingestellt retain
Lassen Sie uns einen Blick auf den Wert von deletionPolicy. Dies muss auf eingestellt werden retain. Dadurch wird sichergestellt, dass beim Löschen eines TridentBackendConfig CR die Backend-Definition weiterhin vorhanden ist und mit verwaltet werden kann tridentctl.
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, es deletionPolicy ist auf eingestellt retain.
|
Schritt 2: Löschen Sie den TridentBackendConfig CR
Der letzte Schritt besteht darin, den CR zu löschen TridentBackendConfig. Nach der Bestätigung, dass der deletionPolicy auf gesetzt ist retain, 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 es einfach, ohne das Backend selbst zu löschen.