Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado.

Tokens

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).

Recurso de token

Rancher tiene un recurso API imperativo tokens.ext.cattle.io que te permite generar tokens para autenticarte con Rancher.

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

Para obtener una descripción de los campos y la estructura del recurso token, ejecuta:

kubectl explain tokens.ext.cattle.io

Creación de un token

El valor del token solo se devuelve una vez en el campo status.value.

Solo un usuario de Rancher válido y activo puede crear un token. De lo contrario, al intentar crear un token se mostrará un error (Error from server (Forbidden)…​).

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 siempre se crea para el usuario que realiza la solicitud. Intentar crear un token para un usuario diferente, especificando un spec.userID diferente, está prohibido y fallará.

  • El campo spec.description se puede establecer en una descripción legible por humanos del propósito del token. El valor por defecto está vacío.

  • El campo spec.kind se puede establecer en el tipo de token. El valor session indica un token de inicio de sesión. Todos los demás valores, incluido el valor por defecto de cadena vacía, indican un tipo de token derivado.

  • Los campos metadata.name y metadata.generateName se ignoran, y el nombre del nuevo token se genera automáticamente utilizando el prefijo token-.

    kubectl create -o jsonpath='{.status.value}' -f -<<EOF
    apiVersion: ext.cattle.io/v1
    kind: Token
    spec:
      description: My Token
    EOF
  • Si no se especifica spec.ttl, el token se crea con el tiempo de expiración definido en la configuración auth-token-max-ttl-minutes. El tiempo de expiración por defecto es de 90 días. Si se especifica spec.ttl, debe ser mayor que 0 y menor o igual al valor de la configuración auth-token-max-ttl-minutes expresado en milisegundos.

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

Listado de tokens

Listar los tokens generados anteriormente puede ayudar a limpiar los tokens que ya no son necesarios (por ejemplo, si fueron emitidos temporalmente). Los administradores pueden listar todos los tokens, mientras que los usuarios regulares solo pueden ver los suyos.

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

Usa -o wide para obtener más detalles:

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

Visualizando un token

Los administradores pueden obtener cualquier token, mientras que los usuarios regulares solo pueden obtener los suyos.

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

Usa -o wide para obtener más detalles:

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

Eliminar un token

Los administradores pueden eliminar cualquier token, mientras que los usuarios regulares solo pueden eliminar los suyos.

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

Actualizar un token

Solo se pueden actualizar los campos de metadatos spec.description, spec.ttl y spec.enabled. Todos los demás campos spec son inmutables. Los administradores pueden ampliar el campo spec.ttl, mientras que los usuarios regulares solo pueden reducir el valor.

Un ejemplo de comando kubectl para editar un token:

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