|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
Kubeconfigs
Ressource Kubeconfig
Kubeconfig est une ressource Rancher kubeconfigs.ext.cattle.io qui permet de générer des fichiers kubeconfig v1.Config pour interagir avec Rancher et les clusters gérés par Rancher.
kubectl api-resources --api-group=ext.cattle.io
Pour obtenir une description des champs et de la structure de la ressource Kubeconfig, exécutez :
kubectl explain kubeconfigs.ext.cattle.io
Création d’un Kubeconfig
Depuis Rancher v2.13, le status.bearerToken contient un token Bearer entièrement formé et prêt à l’emploi qui peut être utilisé pour s’authentifier auprès de l’API Rancher.
Seul un utilisateur Rancher valide et actif peut créer un Kubeconfig. Par exemple, essayer de créer un Kubeconfig en utilisant un compte de service system:admin entraîne une erreur :
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
EOF
Error from server (Forbidden): error when creating "STDIN": kubeconfigs.ext.cattle.io is forbidden: user system:admin is not a Rancher user
|
Le contenu du kubeconfig est généré et retourné dans le champ |
Un kubeconfig peut être créé pour plus d’un cluster à la fois en spécifiant une liste de noms de clusters dans le champ spec.clusters. Vous pouvez rechercher des noms de clusters en listant les ressources clusters.management.cattle.io.
kubectl get clusters.management.cattle.io -o=jsonpath="{.items[*]['metadata.name', 'spec.displayName']}{'\n'}"
local local
c-m-p66cdvlj downstream1
Les champs metadata.name et metadata.generateName sont ignorés, et le nom du nouveau Kubeconfig est automatiquement généré en utilisant le préfixe kubeconfig-.
Vous pouvez utiliser le champ spec.currentContext pour définir le nom du cluster, et il est utilisé pour définir le contexte actuel dans le kubeconfig. Si vous ne définissez pas le champ spec.currentContext, alors le premier cluster de la liste spec.clusters est utilisé comme contexte actuel. Pour les clusters activés par ACE qui n’ont pas de FQDN défini, le premier nœud de plan de contrôle est utilisé comme contexte actuel.
Pour les clusters activés par ACE, si le FQDN est défini, alors celui-ci est utilisé comme entrée de cluster dans le kubeconfig ; sinon, des entrées pour tous les nœuds de plan de contrôle sont créées.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: [c-m-p66cdvlj, c-m-fcd3g5h]
description: My Kubeconfig
currentContext: c-m-p66cdvlj
EOF
Si "*" est spécifié comme le premier élément dans le champ spec.clusters, le kubeconfig est créé pour tous les clusters auxquels l’utilisateur a accès, le cas échéant.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: ["*"]
description: My Kubeconfig
EOF
Si spec.ttl n’est pas spécifié, les tokens du Kubeconfig sont créés avec le temps d’expiration défini dans le paramètre kubeconfig-default-token-ttl-minutes, qui est de 30 jours par défaut. Si spec.ttl est spécifié, il doit être supérieur à 0 et inférieur ou égal à la valeur du paramètre kubeconfig-default-token-ttl-minutes exprimée en secondes.
kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Kubeconfig
spec:
clusters: [c-m-p66cdvlj] # Downstream cluster
ttl: 7200 # 2 hours
EOF
Liste des Kubeconfigs
Lister les Kubeconfigs générés précédemment peut être utile pour nettoyer les jetons de sauvegarde si le Kubeconfig n’est plus nécessaire (par exemple, s’il a été émis temporairement). Les administrateurs peuvent lister tous les Kubeconfigs, tandis que les utilisateurs réguliers ne peuvent voir que les leurs.
kubectl get kubeconfig
NAME TTL TOKENS STATUS AGE
kubeconfig-zp786 30d 2/2 Complete 18d
kubeconfig-7zvzp 30d 1/1 Complete 12d
kubeconfig-jznml 30d 1/1 Complete 12d
Utilisez -o wide pour obtenir plus de détails :
kubectl get kubeconfig -o wide
NAME TTL TOKENS STATUS AGE USER CLUSTERS DESCRIPTION
kubeconfig-zp786 30d 2/2 Complete 18d user-w5gcf * all clusters
kubeconfig-7zvzp 30d 1/1 Complete 12d u-w7drc *
kubeconfig-jznml 30d 1/1 Complete 12d u-w7drc *
Visualisation d’un Kubeconfig
Les administrateurs peuvent obtenir n’importe quel Kubeconfig, tandis que les utilisateurs réguliers ne peuvent obtenir que le leur.
kubectl get kubeconfig kubeconfig-zp786
NAME TTL TOKENS STATUS AGE
kubeconfig-zp786 30d 2/2 Complete 18d
Utilisez -o wide pour obtenir plus de détails :
kubectl get kubeconfig kubeconfig-zp786 -o wide
NAME TTL TOKENS STATUS AGE USER CLUSTERS DESCRIPTION
kubeconfig-zp786 30d 2/2 Complete 18d user-w5gcf * all clusters
Suppression d’un Kubeconfig
Les administrateurs peuvent supprimer n’importe quel Kubeconfig, tandis que les utilisateurs réguliers ne peuvent supprimer que le leur. Lorsqu’un Kubeconfig est supprimé, les tokens kubeconfig sont également supprimés.
kubectl delete kubeconfig kubeconfig-zp786
kubeconfig.ext.cattle.io "kubeconfig-zp786" deleted
Pour supprimer un Kubeconfig en utilisant des préconditions :
cat <<EOF | k delete --raw /apis/ext.cattle.io/v1/kubeconfigs/kubeconfig-zp786 -f -
{
"apiVersion": "v1",
"kind": "DeleteOptions",
"preconditions": {
"uid": "52183e05-d382-47d2-b4b9-d0735823ce90",
"resourceVersion": "31331505"
}
}
EOF
Suppression d’une collection de Kubeconfigs
Les administrateurs peuvent supprimer n’importe quel Kubeconfig, tandis que les utilisateurs réguliers ne peuvent supprimer que le leur.
Pour supprimer tous les Kubeconfigs :
kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs
Pour supprimer une collection de Kubeconfigs par étiquette :
kubectl delete --raw /apis/ext.cattle.io/v1/kubeconfigs?labelSelector=foo%3Dbar
Mise à jour d’un Kubeconfig
Seul le metadata, par exemple l’ajout d’une étiquette ou d’une annotation, et le champ spec.description peuvent être mis à jour. Tous les autres champs spec sont immuables.
Pour modifier un Kubeconfig :
kubectl edit kubeconfig kubeconfig-zp786
Pour appliquer un correctif à un Kubeconfig et mettre à jour sa description :
kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"spec":{"description":"Updated description"}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched
kubectl get kubeconfig kubeconfig-fdcpl -o jsonpath='{.spec.description}'
Updated description
Pour appliquer un correctif à un Kubeconfig et ajouter une étiquette :
kubectl patch kubeconfig kubeconfig-zp786 -type merge -p '{"metadata":{"labels":{"foo":"bar"}}}'
kubeconfig.ext.cattle.io/kubeconfig-zp786 patched
kubectl get kubeconfig kubeconfig-zp786 -o jsonpath='{.metadata.labels.foo}'
bar