本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

词元

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

词元资源

Rancher 有一个强制性的 API 资源 tokens.ext.cattle.io,允许您生成用于与 Rancher 进行身份验证的词元。

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

要获取词元资源的字段和结构描述,请运行:

kubectl explain tokens.ext.cattle.io

创建词元

词元值仅在 status.value 字段中返回一次。

只有 有效且活跃 的 Rancher 用户才能创建词元。否则,在尝试创建词元时,您将看到错误信息 (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

词元始终为发出请求的用户创建。尝试为其他用户创建词元,指定不同的 spec.userID 是被禁止的,并且会失败。

  • spec.description 字段可以设置为词元目的的任意人类可读描述。默认值为空。

  • spec.kind 字段可以设置为词元的类型。值 session 表示登录词元。所有其他值,包括默认的空字符串,表示一种派生词元。

  • metadata.namemetadata.generateName 字段被忽略,新词元的名称使用前缀 token- 自动生成。

    kubectl create -o jsonpath='{.status.value}' -f -<<EOF
    apiVersion: ext.cattle.io/v1
    kind: Token
    spec:
      description: My Token
    EOF
  • 如果未指定 spec.ttl,则词元将使用 auth-token-max-ttl-minutes 设置中定义的过期时间创建。默认过期时间为 90 天。如果指定了 spec.ttl,则它应大于 0 且小于或等于以毫秒表示的 auth-token-max-ttl-minutes 设置的值。

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

列出词元

列出之前生成的词元可以帮助清理不再需要的词元(例如,它们是临时发放的)。管理员可以列出所有词元,而普通用户只能查看自己的。

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

使用 -o wide 获取更多详细信息:

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

查看词元

管理员可以获取任何词元,而普通用户只能获取自己的。

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

使用 -o wide 获取更多详细信息:

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

删除词元

管理员可以删除任何词元,而普通用户只能删除自己的。

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

更新词元

只有元数据字段 spec.descriptionspec.ttlspec.enabled 可以被更新。所有其他`spec`字段都是不可变的。管理员可以扩展 spec.ttl 字段,而普通用户只能减少其值。

编辑词元的示例 kubectl 命令:

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