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
-
Un des types de clusters suivants :
-
Clusters exécutant OpenShift 4.6.8, 4.7, 4.8 ou 4.9
-
Clusters exécutant Rancher 2.5.8, 2.5.9, ou 2.6 avec RKE1
-
Clusters qui exécutent Kubernetes 1.20 à 1.23
-
Clusters exécutant VMware Tanzu Kubernetes Grid 1.4
-
Clusters exécutant VMware Tanzu Kubernetes Grid Integrated Edition 1.12.2
Assurez-vous que vos clusters disposent d'un ou plusieurs nœuds workers 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 deuxième cluster OpenShift 4.6, 4.7 ou 4.8 en tant que ressource de calcul gérée, assurez-vous que la fonctionnalité Snapshot de volume Astra Trident est activée. Découvrez l'Astra Trident officielle "instructions" Pour activer et tester des copies Snapshot de volume avec Astra Trident. -
-
Les classes de stockage Astra Trident sont configurées avec un "système back-end pris en charge" (requis pour tout type de cluster)
-
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. Exécutez la commande suivante dans la ligne de commande ONTAP :
export-policy rule modify -vserver <storage virtual machine name> -policyname <policy name> -ruleindex 1 -superuser sysm --anon 65534
-
Découvrez Astra Trident
volumesnapshotclass
objet défini par un administrateur. Découvrez Astra Trident "instructions" Pour activer et tester des copies Snapshot de volume avec Astra Trident. -
Assurez-vous de n'avoir qu'une seule classe de stockage par défaut définie pour votre cluster Kubernetes.
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 sc 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
-
-
(Facultatif) si votre cluster utilise une politique de sécurité de pod restrictive qui ne permet pas la création de pod privilégié ou l'exécution des processus dans les conteneurs de pod en tant qu'utilisateur racine, créez une politique de sécurité de pod personnalisée pour le cluster qui permet à Astra Control de créer et de gérer des pods. Pour obtenir des instructions, reportez-vous à la section "Créez une stratégie de sécurité de pod personnalisée".
-
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. RemplacementTOKEN_INDEX
au début du script suivant avec la valeur correcte.create-kubeconfig.sh
# Update these to match your environment. # Replace TOKEN_INDEX with the correct value # from the output in the previous step. 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' 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".