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.

Jetons

Deprecation of v3 API tokens

Rancher v2.13 introduced a new token resource in the ext.cattle.io API group to serve as the public API for tokens, which was only accessible through kubectl.

Starting with Rancher v2.14.1:

  • Legacy v3 API tokens (tokens.management.cattle.io) are being phased out and scheduled for removal in a future release. If you currently rely on legacy tokens for automation or API access, transition to the new tokens.ext.cattle.io tokens to ensure continued compatibility.

  • The Rancher dashboard provides basic support for tokens.ext.cattle.io (create, view or list, and delete).

Ressource de token

Rancher dispose d’une ressource API impérative tokens.ext.cattle.io qui vous permet de générer des tokens pour vous authentifier auprès de Rancher.

kubectl api-resources --api-group=ext.cattle.io

Pour obtenir une description des champs et de la structure de la ressource de token, exécutez :

kubectl explain tokens.ext.cattle.io

Création d’un token

La valeur du token n’est renvoyée qu’une seule fois dans le champ status.value.

Seul un utilisateur Rancher valide et actif peut créer un token. Sinon, vous obtiendrez une erreur affichée (Error from server (Forbidden)…​) lors de la tentative de création d’un token.

kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Token
EOF
Error from server (Forbidden): error when creating "STDIN": tokens.ext.cattle.io is forbidden: user system:admin is not a Rancher user

Un token est toujours créé pour l’utilisateur effectuant la demande. Tenter de créer un token pour un autre utilisateur, en spécifiant un spec.userID différent, est interdit et échouera.

  • Le champ spec.description peut être défini sur une description lisible par l’homme de l’objectif du token. La valeur par défaut est vide.

  • Le champ spec.kind peut être défini sur le type de token. La valeur session indique un token de connexion. Toutes les autres valeurs, y compris la chaîne vide par défaut, indiquent un type de token dérivé.

  • Les champs metadata.name et metadata.generateName sont ignorés, et le nom du nouveau token est automatiquement généré en utilisant le préfixe token-.

    kubectl create -o jsonpath='{.status.value}' -f -<<EOF
    apiVersion: ext.cattle.io/v1
    kind: Token
    spec:
      description: My Token
    EOF
  • Si le spec.ttl n’est pas spécifié, le token est créé avec le temps d’expiration défini dans le paramètre auth-token-max-ttl-minutes. Le temps d’expiration par défaut est de 90 jours. Si spec.ttl est spécifié, il doit être supérieur à 0 et inférieur ou égal à la valeur du paramètre auth-token-max-ttl-minutes exprimée en millisecondes.

    kubectl create -o jsonpath='{.status.value}' -f -<<EOF
    apiVersion: ext.cattle.io/v1
    kind: Token
    spec:
      ttl: 7200000 # 2 hours
    EOF

Liste des tokens

Lister les tokens précédemment générés peut aider à nettoyer les tokens qui ne sont plus nécessaires (par exemple, ils ont été émis temporairement). Les administrateurs peuvent lister tous les tokens, tandis que les utilisateurs réguliers ne peuvent voir que les leurs.

kubectl get tokens.ext.cattle.io
NAME          KIND   TTL   AGE
token-chjc9          90d   18s
token-6fzgj          90d   16s
token-8nbrm          90d   14s

Utilisez -o wide pour obtenir plus de détails :

kubectl get tokens.ext.cattle.io -o wide
NAME          USER         KIND   TTL   AGE   DESCRIPTION
token-chjc9   user-jtghh          90d   24s   example
token-6fzgj   user-jtghh          90d   22s   box
token-8nbrm   user-jtghh          90d   20s   jinx

Affichage d’un token

Les administrateurs peuvent obtenir n’importe quel token, tandis que les utilisateurs réguliers ne peuvent obtenir que le leur.

kubectl get tokens.ext.cattle.io token-chjc9
NAME          KIND   TTL   AGE
token-chjc9          90d   18s

Utilisez -o wide pour obtenir plus de détails :

kubectl get tokens.ext.cattle.io token-chjc9 -o wide
NAME          USER         KIND   TTL   AGE   DESCRIPTION
token-chjc9   user-jtghh          90d   24s   example

Suppression d’un token

Les administrateurs peuvent supprimer n’importe quel token, tandis que les utilisateurs réguliers ne peuvent supprimer que le leur.

kubectl delete tokens.ext.cattle.io token-chjc9
token.ext.cattle.io "token-chjc9" deleted

Mise à jour d’un token

Seuls les champs de métadonnées spec.description, spec.ttl et spec.enabled peuvent être mis à jour. Tous les autres champs spec sont immuables. Les administrateurs peuvent étendre le champ spec.ttl, tandis que les utilisateurs réguliers ne peuvent que réduire la valeur.

Un exemple de commande kubectl pour éditer un token :

kubectl edit tokens.ext.cattle.io token-zp786