Conditions préalables à l'ajout d'un cluster
Assurez-vous que les conditions préalables sont remplies avant d'ajouter un cluster. Vous devez également effectuer les vérifications d'admissibilité pour vous assurer que votre grappe est prête à être ajoutée au Centre de contrôle Astra.
Ce dont vous avez besoin avant d'ajouter un cluster
-
Cluster OpenShift 4.6 ou 4.7 avec des classes de stockage Trident combinées à ONTAP 9.5 ou une version ultérieure.
-
Un ou plusieurs nœuds de travail avec au moins 1 Go de RAM disponible pour l'exécution des services de télémétrie.
Si vous prévoyez d'ajouter un second cluster OpenShift 4.6 ou 4.7 comme ressource de calcul gérée, assurez-vous que la fonctionnalité Snapshot des volumes Trident est activée. Voir le Trident officiel "instructions" Pour activer et tester des snapshots de volume avec Trident.
-
-
Le superutilisateur et l'ID utilisateur définis sur le système ONTAP de sauvegarde pour sauvegarder et restaurer des applications avec le Centre de contrôle Astra (ACC). Exécutez les commandes suivantes dans la ligne de commande ONTAP :
export policy rule modify -vserver svm0 -policyname default -ruleindex 1 -superuser sys
export-policy rule modify -policyname default -ruleindex 1 -anon 65534
(il s'agit de la valeur par défaut)
Effectuer des vérifications d'éligibilité
Effectuez les contrôles d'éligibilité suivants pour vous assurer que votre grappe est prête à être ajoutée au Centre de contrôle Astra.
-
Vérifiez la version de Trident.
kubectl get tridentversions -n trident
Si Trident est présent, vous voyez des valeurs de sortie similaires à celles illustrées dans l'exemple suivant :
NAME VERSION trident 21.04.0
Si Trident n'existe pas, vous voyez des résultats similaires à ce qui suit :
error: the server doesn't have a resource type "tridentversions"
Si Trident n'est pas installé ou si la version installée n'est pas la dernière, vous devez installer la dernière version de Trident avant de continuer. Voir la "Documentation Trident" pour obtenir des instructions. -
Vérifiez si les classes de stockage utilisent les pilotes Trident pris en charge. Le nom de provisionnement doit être
csi.trident.netapp.io
. Voir l'exemple suivant :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
Créez un kubeconfig. Rôle admin
Avant d'effectuer les étapes suivantes, assurez-vous que vous disposez des éléments suivants sur votre machine :
-
kubectl
v1.19 ou version ultérieure installé -
Un kubeconfig actif avec des droits d'administrateur de cluster pour le contexte actif
-
Créer un compte de service comme suit :
-
Créez un fichier de compte de service appelé
astracontrol-service-account.yaml
.Ajustez le nom et l'espace de noms selon vos besoins. Si des modifications sont apportées ici, vous devez appliquer les mêmes modifications dans les étapes suivantes.
astracontrol-service-account.yaml
+
apiVersion: v1 kind: ServiceAccount metadata: name: astracontrol-service-account namespace: default
-
Appliquer le compte de service :
kubectl apply -f astracontrol-service-account.yaml
-
-
Accordez des autorisations d'administration du cluster comme suit :
-
Créer un
ClusterRoleBinding
fichier appeléastracontrol-clusterrolebinding.yaml
.Ajustez les noms et espaces de noms modifiés lors de la création du compte de service, le cas échéant.
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
-
Appliquer la liaison de rôle de cluster :
kubectl apply -f astracontrol-clusterrolebinding.yaml
-
-
Indiquez les secrets du compte de service, en les remplaçant
<context>
avec le contexte approprié pour votre installation :kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json
La fin de la sortie doit ressembler à ce qui suit :
"secrets": [ { "name": "astracontrol-service-account-dockercfg-vhz87"}, { "name": "astracontrol-service-account-token-r59kr"} ]
Les indices pour chaque élément dans
secrets
la matrice commence par 0. Dans l'exemple ci-dessus, l'index deastracontrol-service-account-dockercfg-vhz87
serait 0 et l'index pourastracontrol-service-account-token-r59kr
serait 1. Dans votre résultat, notez l'index du nom du compte de service qui contient le mot "jeton". -
Générez le kubeconfig comme suit :
-
Créer un
create-kubeconfig.sh
fichier. Si l'index de jeton que vous avez noté dans l'étape précédente n'était pas 0, remplacez la valeur pourTOKEN_INDEX
au début du script suivant avec la valeur correcte.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
-
Source des commandes à appliquer à votre cluster Kubernetes.
source create-kubeconfig.sh
-
-
(Facultatif) Renommer le kubeconfig en un nom significatif pour votre grappe. Protéger les informations d'identification du cluster.
chmod 700 create-kubeconfig.sh mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig
Et la suite ?
Maintenant que vous avez vérifié que les conditions préalables sont remplies, vous êtes prêt à "ajouter un cluster".