Voraussetzungen für das Hinzufügen eines Clusters
Sie sollten sicherstellen, dass die Voraussetzungen erfüllt sind, bevor Sie ein Cluster hinzufügen. Außerdem sollten Sie die Eignungskontrollen durchführen, um sicherzustellen, dass Ihr Cluster zum Astra Control Center hinzugefügt werden kann.
Was benötigen Sie vor dem Hinzufügen eines Clusters
-
Cluster mit OpenShift 4.6 oder 4.7, wobei Trident StorageClasses auf ONTAP 9.5 oder höher unterstützt werden
-
Ein oder mehrere Worker-Nodes mit mindestens 1 GB RAM für laufende Telemetrieservices verfügbar.
Wenn Sie planen, als gemanagte Computing-Ressource einen zweiten OpenShift 4.6- oder 4.7-Cluster hinzuzufügen, sollten Sie sicherstellen, dass die Trident Volume Snapshot-Funktion aktiviert ist. Siehe den offiziellen Trident "Anweisungen" Um Volume Snapshots mit Trident zu aktivieren und zu testen.
-
-
Der Superuser und die Benutzer-ID, die auf dem ONTAP-System für die Sicherung und Wiederherstellung von Apps mit Astra Control Center (ACC) eingestellt sind. Führen Sie die folgenden Befehle in der ONTAP-Befehlszeile aus:
export policy rule modify -vserver svm0 -policyname default -ruleindex 1 -superuser sys
export-policy rule modify -policyname default -ruleindex 1 -anon 65534
(Dies ist der Standardwert)
Führen Sie Eignungsprüfungen durch
Führen Sie die folgenden Eignungsprüfungen durch, um sicherzustellen, dass Ihr Cluster zum Astra Control Center hinzugefügt werden kann.
-
Überprüfen Sie die Trident Version.
kubectl get tridentversions -n trident
Wenn Trident vorhanden ist, wird eine Ausgabe ähnlich der folgenden ausgegeben:
NAME VERSION trident 21.04.0
Wenn Trident nicht vorhanden ist, wird eine Ausgabe wie die folgende angezeigt:
error: the server doesn't have a resource type "tridentversions"
Wenn Trident nicht installiert ist oder die installierte Version nicht die neueste ist, müssen Sie die neueste Version von Trident installieren, bevor Sie fortfahren. Siehe "Trident Dokumentation" Weitere Anweisungen. -
Prüfen Sie, ob die Storage-Klassen die unterstützten Trident Treiber verwenden. Der bereitstellungsname sollte lauten
csi.trident.netapp.io
. Das folgende Beispiel zeigt:kubectl get storageClass -A NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ontap-gold (default) csi.trident.netapp.io Delete Immediate true 5d23h thin kubernetes.io/vsphere-volume Delete Immediate false 6d
Erstellen Sie ein „admin-Role“-kubeconfig
Stellen Sie sicher, dass Sie die folgenden Schritte auf Ihrem Gerät ausführen:
-
kubectl
v1.19 oder höher installiert -
Ein aktiver kubeconfig mit Clusteradministratorrechten für den aktiven Kontext
-
Erstellen Sie ein Service-Konto wie folgt:
-
Erstellen Sie eine Dienstkontendatei mit dem Namen
astracontrol-service-account.yaml
.Passen Sie Namen und Namespace nach Bedarf an. Wenn hier Änderungen vorgenommen werden, sollten Sie die gleichen Änderungen in den folgenden Schritten anwenden.
astracontrol-service-account.yaml
+
apiVersion: v1 kind: ServiceAccount metadata: name: astracontrol-service-account namespace: default
-
Wenden Sie das Servicekonto an:
kubectl apply -f astracontrol-service-account.yaml
-
-
Gewähren Sie Cluster-Admin-Berechtigungen wie folgt:
-
Erstellen Sie ein
ClusterRoleBinding
Datei aufgerufenastracontrol-clusterrolebinding.yaml
.Passen Sie bei Bedarf alle beim Erstellen des Dienstkontos geänderten Namen und Namespaces an.
astracontrol-clusterrolebinding.yaml
+
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: astracontrol-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: astracontrol-service-account namespace: default
-
Wenden Sie die Bindung der Cluster-Rolle an:
kubectl apply -f astracontrol-clusterrolebinding.yaml
-
-
Listen Sie die Geheimnisse des Dienstkontos auf, ersetzen Sie
<context>
Mit dem richtigen Kontext für Ihre Installation:kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json
Das Ende der Ausgabe sollte wie folgt aussehen:
"secrets": [ { "name": "astracontrol-service-account-dockercfg-vhz87"}, { "name": "astracontrol-service-account-token-r59kr"} ]
Die Indizes für jedes Element im
secrets
Array beginnt mit 0. Im obigen Beispiel der Index fürastracontrol-service-account-dockercfg-vhz87
Wäre 0 und der Index fürastracontrol-service-account-token-r59kr
Sind es 1. Notieren Sie in Ihrer Ausgabe den Index für den Namen des Dienstkontos, der das Wort „Token“ darin enthält. -
Erzeugen Sie den kubeconfig wie folgt:
-
Erstellen Sie ein
create-kubeconfig.sh
Datei: Wenn der im vorherigen Schritt erwähnte Token-Index nicht 0 war, ersetzen Sie den Wert fürTOKEN_INDEX
Am Anfang des folgenden Skripts mit dem korrekten Wert.create-kubeconfig.sh
# Update these to match your environment. Replace the value for TOKEN_INDEX from # the output in the previous step if it was not 0. If you didn't change anything # else above, don't change anything else here. SERVICE_ACCOUNT_NAME=astracontrol-service-account NAMESPACE=default NEW_CONTEXT=astracontrol KUBECONFIG_FILE='kubeconfig-sa' TOKEN_INDEX=0 CONTEXT=$(kubectl config current-context) SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.secrets[TOKEN_INDEX].name}') TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.data.token}') TOKEN=$(echo ${TOKEN_DATA} | base64 -d) # Create dedicated kubeconfig # Create a full copy kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp # Switch working context to correct context kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT} # Minify kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \ config view --flatten --minify > ${KUBECONFIG_FILE}.tmp # Rename context kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ rename-context ${CONTEXT} ${NEW_CONTEXT} # Create token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-credentials ${CONTEXT}-${NAMESPACE}-token-user \ --token ${TOKEN} # Set context to use token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user # Set context to correct namespace kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --namespace ${NAMESPACE} # Flatten/minify kubeconfig kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ view --flatten --minify > ${KUBECONFIG_FILE} # Remove tmp rm ${KUBECONFIG_FILE}.full.tmp rm ${KUBECONFIG_FILE}.tmp
-
Geben Sie die Befehle an, um sie auf Ihren Kubernetes-Cluster anzuwenden.
source create-kubeconfig.sh
-
-
(Optional) Umbenennen Sie die kubeconfig in einen aussagekräftigen Namen für Ihren Cluster. Schützen Sie die Cluster-Anmeldedaten.
chmod 700 create-kubeconfig.sh mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig
Was kommt als Nächstes?
Jetzt, wo du überprüft hast, dass die Voraussetzungen erfüllt sind, bist du bereit "Fügen Sie einen Cluster hinzu".