Kubernetes v1.34:使用者偏好設定 (kuberc) 已可在 kubectl 1.34 中進行測試
你是否曾希望能在 kubectl
中預設啟用互動式刪除功能?或者,你可能想定義一些自定義別名,但又不想手動生成數百個?現在,你的願望可以實現了。SIG-CLI 一直在努力為 kubectl 新增使用者偏好設定,我們很高興地宣佈,此功能將在 Kubernetes v1.34 版本中進入 Beta 階段。
工作原理
關於此功能的完整描述,請參閱我們的官方文件,但本文將回答文章開頭提出的兩個問題。
在深入細節之前,我們先快速瞭解一下使用者偏好檔案的外觀以及它應該放在哪裡。預設情況下,kubectl
會在你的預設 kubeconfig 目錄(即 $HOME/.kube
)中查詢 kuberc
檔案。另外,你也可以使用 --kuberc
選項或 KUBERC
環境變數來指定其位置。
與所有 Kubernetes 清單檔案一樣,kuberc
檔案以 apiVersion
和 kind
開頭
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
# the user preferences will follow here
預設值
讓我們從為 kubectl
命令選項設定預設值開始。我們的目標是始終使用互動式刪除,這意味著我們希望 kubectl delete
的 --interactive
選項始終設定為 true
。這可以透過在我們的 kuberc
檔案中新增以下內容來實現:
defaults:
- command: delete
options:
- name: interactive
default: "true"
在上面的示例中,我引入了 defaults
部分,它允許使用者為 kubectl
選項定義預設值。在本例中,我們將 kubectl delete
的 interactive 選項預設設定為 true
。如果使用者明確提供了不同的值,例如 kubectl delete --interactive=false
,則這個預設值可以被覆蓋,在這種情況下,明確指定的選項優先。
SIG-CLI 強烈推薦的另一個預設設定是使用伺服器端應用(Server-Side Apply)。為此,你可以將以下程式碼片段新增到你的偏好設定中:
# continuing defaults section
- command: apply
options:
- name: server-side
default: "true"
別名
定義別名的功能可以讓我們在輸入命令時節省寶貴的時間。我敢打賭,你很可能為 kubectl
定義了一個別名,因為輸入七個字母肯定比只按一個 k
要長。
因此,在我們決定實現使用者偏好設定時,除了預設值設定外,定義別名的功能也是必不可少的。要為任何內建命令定義別名,請在你的 kuberc
檔案中新增以下內容:
aliases:
- name: gns
command: get
prependArgs:
- namespace
options:
- name: output
default: json
上面的內容有點複雜,讓我來分解一下。首先,我們引入了一個新部分:aliases
。在這裡,我們定義了一個新別名 gns
,它被對映到 get
命令。接下來,我們定義了引數(namespace
資源),這些引數將緊跟在命令名之後插入。此外,我們還為這個別名設定了 --output=json
選項。options
塊的結構與 defaults
部分中的結構相同。
你可能已經注意到,我們引入了一種用於在前面新增引數的機制,你可能會想知道是否有相應的設定用於在後面追加引數(換句話說,就是在命令末尾、使用者提供的引數之後新增)。這可以透過 appendArgs
塊來實現,如下所示:
# continuing aliases section
- name: runx
command: run
options:
- name: image
default: busybox
- name: namespace
default: test-ns
appendArgs:
- --
- custom-arg
在這裡,我們引入了另一個別名:runx
,它呼叫 kubectl run
命令,傳遞帶有預定義值的 --image
和 --namespace
選項,並在呼叫結束時追加 --
和 custom-arg
。
除錯
我們希望 kubectl
的使用者偏好功能能為我們的使用者帶來新的可能性。每當你不確定時,可以隨時以更高的詳細級別執行 kubectl
。在 -v=5
級別下,你應該能獲得該功能所有可能的除錯資訊,這在報告問題時至關重要。
參與其中
Kubectl 使用者偏好功能已進入 Beta 階段,我們非常期待你的反饋。我們很想知道你喜歡它的哪些方面,以及你希望它解決哪些問題。歡迎加入 SIG-CLI Slack 頻道,或在 kubectl 程式碼倉庫中提交 issue。你也可以參加我們每隔一個星期三舉行的社群會議,與我們分享你的使用體驗。