Token
Token 資源
Rancher 具有一個命令式 API 資源 tokens.ext.cattle.io,允許您產生用於向 Rancher 認證的 token。
kubectl api-resources --api-group=ext.cattle.io
要取得 Token 資源的欄位和結構的描述,請執行:
kubectl explain tokens.ext.cattle.io
建立 Token
Token 值僅在 status.value 欄位中回傳一次。
從 Rancher v2.13.0 開始,status.bearerToken 現在包含一個完全形成且可立即使用的 Bearer token,可用於向 Rancher API 認證。
只有有效且啟用的 Rancher 使用者才能建立 Token。否則,當您嘗試建立 Token 時,將會顯示錯誤 (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
Token 始終為發出請求的使用者建立。透過指定不同的 spec.userID 嘗試為不同使用者建立 Token 是被禁止的,並且會失敗。
-
spec.description欄位可以設定為 Token 用途的任意人類可讀描述。預設值為空。 -
spec.kind欄位可以設定為 Token 的種類。值session表示登入 Token。所有其他值,包括預設的空字串,都表示一種衍生的 Token。 -
metadata.name和metadata.generateName欄位會被忽略,新 Token 的名稱會使用前綴token-自動產生。kubectl create -o jsonpath='{.status.value}' -f -<<EOF
apiVersion: ext.cattle.io/v1
kind: Token
spec:
description: My Token
EOF -
如果未指定
spec.ttl,則 Token 會使用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
列出 Token
列出先前產生的 Token 可以幫助清理不再需要的 token (例如,它們是暫時發行的)。管理員可以列出所有 Token,而一般使用者只能看到自己的。
kubectl get tokens.ext.cattle.io
NAME KIND TTL AGE
token-chjc9 90d 18s
token-6fzgj 90d 16s
token-8nbrm 90d 14s
Use -o wide to get more details:
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
檢視 Token
管理員可以取得任何 Token,而一般使用者 只能取得自己的。
kubectl get tokens.ext.cattle.io token-chjc9
NAME KIND TTL AGE
token-chjc9 90d 18s
Use -o wide to get more details:
kubectl get tokens.ext.cattle.io token-chjc9 -o wide
NAME USER KIND TTL AGE DESCRIPTION
token-chjc9 user-jtghh 90d 24s example
刪除 Token
管理員可以刪除任何 Token,而一般使用者只能刪除自己的。
kubectl delete tokens.ext.cattle.io token-chjc9
token.ext.cattle.io "token-chjc9" deleted
更新 Token
只有中繼資料欄位 spec.description、spec.ttl 和 spec.enabled 可以更新。所有其他 spec 欄位都是不可變的。管理員可以延長 spec.ttl 欄位,而一般使用者只能減少該值。
編輯 Token 的 kubectl 指令範例:
kubectl edit tokens.ext.cattle.io token-zp786