文件選單 +
文件/CLI 參考

CLI 參考

CLI 指令不提供互動操作。除非設定支援的 --dry-run 旗標,否則寫入指令會立即執行。請將旗標放在子指令後。使用 kticket <command> --help 或 kticket access <command> --help 查看各指令的選項。

長選項使用兩個連字號,例如 --username alice 或 --username=alice。說明及範例統一採用此格式;為保持相容性,仍接受既有的單連字號長選項。

--kubeconfig 和 --lang 也可放在子命令之前。子命令指定的 --kubeconfig 會覆寫根層級的值。--lang 的值僅影響 TUI,CLI 命令會忽略它。

指令

指令用途
kticket [flags]開啟終端機介面
kticket license顯示授權狀態與本機機器 ID
kticket issue簽發單一帳戶的權杖並寫入 kubeconfig
kticket list列出受管理帳戶;可包含憑證記錄
kticket revoke刪除帳戶並撤銷全部憑證
kticket access list列出已知的受管理與外部 RBAC 指派
kticket access grant新增授權
kticket access replace取代授權
kticket access remove移除授權
kticket access plan預覽 YAML 檔案描述的變更
kticket access apply套用 YAML 授權設定
kticket access check檢查特定操作的授權

TUI 支援批次簽發及多選命名空間。CLI issue 每次呼叫僅接受一個帳戶和一組授權選項。

授權指令

kticket license machine-id
kticket license install /path/to/kticket-license.ktlicense
kticket license status
kticket license inspect /path/to/kticket-license.ktlicense

購買、安裝路徑、--force 與 KTICKET_LICENSE_FILE 的說明請參閱授權購買與啟用。

叢集與帳戶選擇

CLI 帳戶指令接受 --kubeconfig 與 --context。kubeconfig 預設先使用 KUBECONFIG,再使用 ~/.kube/config;情境預設為該設定的目前情境。情境名稱必須已存在於 kubeconfig。

--namespace 選擇 ServiceAccount 所在的帳戶命名空間。對 issue、revoke 與 access 指令,預設為 kticket-users。對 list,省略命名空間表示所有命名空間。

帳戶命名空間與授予存取權的目標命名空間彼此獨立。指定目標時,issue 使用 --role-namespace,access 指令使用 --target-namespace。

簽發憑證

在 app-prod 中授予既有的 edit ClusterRole:

kticket issue --username bob --duration 8h \
  --access namespace --role edit --role-namespace app-prod \
  --output ./bob.kubeconfig

繫結既有的命名空間 Role:

kticket issue --username carol --access role \
  --role support --role-namespace app-prod

不新增授權,僅簽發憑證:

kticket issue --username alice --access none \
  --duration 1h --output ./alice-laptop.kubeconfig

--access none 保留既有權限。為既有帳戶重新簽發會替同一個 ServiceAccount 建立另一個權杖,不會取代先前的權杖。

收件者使用不同 API 端點時:

kticket issue --username eve --access namespace \
  --role view --role-namespace app-prod \
  --server https://api.example.com:6443

帳戶命名空間與 ServiceAccount 若不存在,將予以建立。角色與目標命名空間必須已存在。唯一例外是在此次簽發建立的帳戶命名空間中繫結既有的 ClusterRole。

簽發選項

旗標預設值意義
--username必填ServiceAccount 名稱:DNS-1123 標籤,最多 63 個字元;使用小寫字母、數字與連字號,且以字母或數字開頭及結尾
--namespacekticket-users帳戶命名空間
--duration24h要求的權杖有效期間;Go 格式、整秒,至少 10m
--accessclustercluster、namespace、role 或 none
--rolecluster-admin要繫結的既有角色
--role-namespace空白namespace 與 role 存取模式的必填欄位
--server所選叢集的 URL嵌入輸出檔的 API 端點
--insecure-skip-tls-verifyfalse為收件者停用 API 伺服器憑證驗證
--output~/<accountName>.<clusterName>.kubeconfig新的輸出檔;拒絕既有檔案及符號連結

省略存取旗標會授予叢集範圍的 cluster-admin 存取權。 需要較小範圍時,請明確指定旗標。issue 沒有 --dry-run 選項。

存取模式建立的繫結範圍
cluster指向 ClusterRole 的 ClusterRoleBinding整個叢集
namespace指向 ClusterRole 的 RoleBinding僅限 --role-namespace
role指向 Role 的 RoleBinding僅限 --role-namespace
none不新增繫結保留既有存取權

產生的 kubeconfig

檔案包含 Bearer 權杖、API 端點及已設定的 CA 資料,包括從管理員 kubeconfig 所參照檔案讀取的 CA 資料。未設定 CA 時,用戶端使用系統信任根憑證。不安全模式下,輸出不包含 CA 資料。

叢集名稱來自所選管理員情境。產生的情境為 <account>@<cluster>,並設為 current-context。其預設命名空間是帳戶命名空間;其他位置的工作負載請使用 kubectl --namespace。--server 只改變端點,不改變叢集名稱。若無法取得叢集名稱,kticket 使用 cluster。

預設檔名包含帳戶及叢集名稱,例如 alice.production-eu.kubeconfig。CLI --output 指定檔案;TUI 則要求既有目錄。

每份簽發的憑證都有獨立的 kubeconfig 使用者別名。簽發及到期時間請參閱憑證記錄。

列出帳戶與憑證

kticket list
kticket list --context my-cluster --namespace kticket-users
kticket list --credentials

帳戶清單包含受管理的角色繫結。--credentials 會加入已記錄的憑證 ID、時間戳記及稽核 ID。這些記錄描述由 kticket 簽發並記錄的憑證,並非所有可用權杖的完整清單。

撤銷帳戶

kticket revoke --context my-cluster --namespace kticket-users --username alice

撤銷會先刪除受管理的 ServiceAccount,再清理其受管理繫結。這會影響該帳戶 UID 的每個權杖,不會刪除命名空間或本機 kubeconfig 檔案。使用者名稱必須指向既有的受管理帳戶。

繫結清理失敗的帳戶,在重新建立前請參閱撤銷與失敗處理。

管理授權

所有 access 指令都需要 --username,並接受上述叢集與帳戶選擇旗標。可選的 --expected-uid 要求特定的 ServiceAccount UID,讓指令碼拒絕已刪除並重新建立的帳戶。

為既有帳戶新增授權,先預覽變更:

kticket access grant --username alice \
  --target-namespace app-staging --cluster-role edit --dry-run
kticket access grant --username alice \
  --target-namespace app-staging --cluster-role edit

命名空間 Role 使用 --role support。--cluster-role 與 --role 必須擇一。預設範圍為 namespace;叢集範圍的授權需要 --scope cluster --cluster-role NAME,且不指定目標命名空間。

列出授權,再用授權 ID 取代或移除:

kticket access list --username alice

# Replace GRANT_ID with an ID from the list.
kticket access replace --username alice --grant-id GRANT_ID \
  --target-namespace app-staging --cluster-role view

# List again, then use the current grant ID for removal.
kticket access list --username alice
kticket access remove --username alice --grant-id CURRENT_GRANT_ID

grant、replace 與 remove 支援 --dry-run,只計算計畫而不寫入資源。未指定時,變更立即套用。移除授權會保留帳戶及其憑證。外部指派不受 kticket 控制。

所有參照的角色及目標命名空間必須已存在。存取指令不會建立命名空間。同一命名空間可有多項授權。變更適用於帳戶的所有有效憑證,但不延長其到期時間。

宣告授權集合

建立 alice-access.yaml:

grants:
  - scope: namespace
    namespace: app-prod
    roleKind: ClusterRole
    roleName: view
  - scope: namespace
    namespace: app-staging
    roleKind: ClusterRole
    roleName: edit

預覽並套用:

kticket access plan --username alice --file alice-access.yaml
kticket access apply --username alice --file alice-access.yaml

此檔案描述該帳戶所需的完整kticket 管理的授權集合。未列出的受管理授權會被移除,外部指派則保留。grants: [] 移除全部受管理授權。grants 欄位必須明確指定陣列;不接受 null、重複授權或未知欄位。

命名空間 Role 使用 roleKind: Role。叢集範圍授權使用 scope: cluster 與 roleKind: ClusterRole,並省略 namespace。

apply 根據檔案及叢集目前狀態計算新計畫,不會執行先前儲存的計畫。取代時先移除舊繫結再建立新繫結,可能短暫中斷存取。部分失敗的行為請參閱權限變更。

檢查操作

檢查帳戶能否讀取 Pod 日誌:

kticket access check --username alice \
  --target-namespace app-staging --resource pods/log --verb get
旗標意義
--target-namespace既有目標命名空間;叢集範圍資源則省略
--api-groupAPI 群組,例如 apps;核心資源則省略
--resource必填的資源或子資源,例如 pods 或 pods/log
--verb必填的 API 操作,例如 get、list 或 create
--resource-name授權查詢中可選的資源名稱

檢查使用帳戶的 Kubernetes 身分與群組發出 SubjectAccessReview。指定的資源不必存在:這是授權查詢,不是資源請求。結果為 ALLOWED、DENIED 或 UNAVAILABLE;除非結果是 ALLOWED,否則 CLI 以非成功狀態結束。

授權清單顯示已知的 RBAC 指派,而非所有有效權限。移除受管理授權後,外部指派仍可能允許操作。