Créez un fichier kubeconfig
Vous pouvez ajouter un cluster à Astra Control Service à l'aide d'un fichier kubeconfig. Selon le type de cluster à ajouter, vous devrez peut-être créer manuellement un fichier kubeconfig pour votre cluster en suivant des étapes spécifiques.
Créez un fichier kubeconfig pour les clusters Amazon EKS
Suivez ces instructions pour créer un fichier kubeconfig et un code secret de jeton permanent pour les clusters Amazon EKS. Un code secret de jeton permanent est requis pour les clusters hébergés dans EKS.
-
Suivez les instructions de la documentation Amazon pour générer un fichier kubeconfig :
-
Créer un compte de service comme suit :
-
Créez un fichier de compte de service appelé
astracontrol-service-account.yaml
.Ajustez le nom du compte de service si nécessaire. L'espace de noms
kube-system
est nécessaire pour ces étapes. Si vous modifiez le nom du compte de service ici, vous devez appliquer les mêmes modifications dans les étapes suivantes.
astracontrol-service-account.yaml
+
-
-
Appliquer le compte de service :
-
Créer un
ClusterRoleBinding
fichier appeléastracontrol-clusterrolebinding.yaml
.astracontrol-clusterrolebinding.yaml
-
Appliquer la liaison de rôle de cluster :
-
Créez un fichier secret de token de compte de service appelé
astracontrol-secret.yaml
.astracontrol-secret.yaml
-
Appliquer le secret de jeton :
-
Récupérer le secret de jeton :
-
Remplacer l'
user
Section du fichier kubeconfig AWS EKS avec le jeton, comme illustré ci-dessous :
Créez un fichier kubeconfig pour les clusters Red Hat OpenShift Service sur AWS (ROSA)
Suivez ces instructions pour créer un fichier kubeconfig pour les clusters Red Hat OpenShift Service sur AWS (ROSA).
-
Connectez-vous au cluster ROSA.
-
Créer un compte de service :
-
Ajouter un rôle de cluster :
-
À l'aide de l'exemple suivant, créez un fichier de configuration secret de compte de service :
secret-astra-sa.yaml
-
Créez le secret :
-
Modifiez le compte de service que vous avez créé et ajoutez le nom secret du compte de service Astra Control au
secrets
section : -
Indiquez les secrets du compte de service, en les remplaçant
<CONTEXT>
avec le contexte approprié pour votre installation :La fin de la sortie doit ressembler à ce qui suit :
"secrets": [ { "name": "astracontrol-service-account-dockercfg-dvfcd"}, { "name": "secret-astracontrol-service-account"} ]
Les indices pour chaque élément dans
secrets
la matrice commence par 0. Dans l'exemple ci-dessus, l'index deastracontrol-service-account-dockercfg-dvfcd
serait 0 et l'index poursecret-astracontrol-service-account
serait 1. Dans votre sortie, notez le numéro d'index du compte de service secret. Vous aurez besoin de ce numéro d'index à l'étape suivante. -
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
-
Source des commandes à appliquer à votre cluster Kubernetes.
-
-
(Facultatif) Renommer le kubeconfig pour nommer votre cluster.
mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig
Créez un fichier kubeconfig pour d'autres types de clusters
Suivez ces instructions pour créer un fichier kubeconfig de rôle limité ou étendu pour les clusters Rancher, Kubernetes en amont et Red Hat OpenShift.
Pour les clusters gérés à l'aide de kubeconfig, vous pouvez éventuellement créer une autorisation limitée ou un rôle d'administrateur d'autorisations étendues pour Astra Control Service.
Cette procédure vous aide à créer un kubeconfig distinct si l'un des scénarios suivants s'applique à votre environnement :
-
Vous souhaitez limiter les autorisations Astra Control sur les clusters qu'il gère
-
Vous utilisez plusieurs contextes et ne pouvez pas utiliser le kubeconfig Astra Control par défaut configuré lors de l'installation, sinon un rôle limité avec un seul contexte ne fonctionnera pas dans votre environnement
Assurez-vous que vous disposez des éléments suivants pour le cluster que vous souhaitez gérer avant d'effectuer la procédure suivante :
-
A "version prise en charge" de kubectl est installé.
-
Kubectl accès au cluster que vous envisagez d'ajouter et de gérer avec Astra Control Service
Pour cette procédure, vous n'avez pas besoin d'un accès kubectl au cluster exécutant Astra Control Service. -
Un kubeconfig actif pour le cluster que vous avez l'intention de gérer avec des droits d'administrateur de cluster pour le contexte actif
-
Créer un compte de service :
-
Créez un fichier de compte de service appelé
astracontrol-service-account.yaml
.astracontrol-service-account.yaml
-
Appliquer le compte de service :
-
-
Créez l'un des rôles de cluster suivants avec des autorisations suffisantes pour qu'un cluster soit géré par Astra Control :
Rôle limité du clusterCe rôle contient les autorisations minimales nécessaires à la gestion d'un cluster par Astra Control :
-
Créer un
ClusterRole
fichier appelé, par exemple,astra-admin-account.yaml
.astra-admin-account.yaml
-
(Pour les clusters OpenShift uniquement) Ajouter les éléments suivants à la fin du
astra-admin-account.yaml
fichier : -
Appliquer le rôle de cluster :
-
-
Créer la liaison de rôle cluster pour le rôle cluster vers le compte de service :
-
Créer un
ClusterRoleBinding
fichier appeléastracontrol-clusterrolebinding.yaml
.astracontrol-clusterrolebinding.yaml
-
Appliquer la liaison de rôle de cluster :
-
-
Créez et appliquez le secret de jeton :
-
Créez un fichier secret de jeton appelé
secret-astracontrol-service-account.yaml
.secret-astracontrol-service-account.yaml
-
Appliquer le secret de jeton :
-
-
Ajoutez le secret de jeton au compte de service en ajoutant son nom au
secrets
tableau (dernière ligne de l'exemple suivant) :apiVersion: v1 imagePullSecrets: - name: astracontrol-service-account-dockercfg-48xhx kind: ServiceAccount metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"ServiceAccount","metadata":{"annotations":{},"name":"astracontrol-service-account","namespace":"default"}} creationTimestamp: "2023-06-14T15:25:45Z" name: astracontrol-service-account namespace: default resourceVersion: "2767069" uid: 2ce068c4-810e-4a96-ada3-49cbf9ec3f89 secrets: - name: astracontrol-service-account-dockercfg-48xhx - name: secret-astracontrol-service-account
-
Indiquez les secrets du compte de service, en les remplaçant
<context>
avec le contexte approprié pour votre installation :La fin de la sortie doit ressembler à ce qui suit :
"secrets": [ { "name": "astracontrol-service-account-dockercfg-48xhx"}, { "name": "secret-astracontrol-service-account"} ]
Les indices pour chaque élément dans
secrets
la matrice commence par 0. Dans l'exemple ci-dessus, l'index deastracontrol-service-account-dockercfg-48xhx
serait 0 et l'index poursecret-astracontrol-service-account
serait 1. Dans votre sortie, notez le numéro d'index du compte de service secret. Vous aurez besoin de ce numéro d'index à l'étape suivante. -
Générez le kubeconfig comme suit :
-
Créer un
create-kubeconfig.sh
fichier. -
Remplacement
TOKEN_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.
-
-
(Facultatif) Renommer le kubeconfig pour nommer votre cluster.
mv kubeconfig-sa YOUR_CLUSTER_NAME_kubeconfig