Helm 使用者指南 系列(6) 外掛程式指南

2021-09-10 05:32:10 字數 2923 閱讀 1311

helm 2.1.0引入了客戶端helm 外掛程式plugin的概念。外掛程式是一種可以通過helm cli 訪問的工具,但它不是內建helm**庫的一部分。

現有的外掛程式可以在相關部分related找到或者通過搜尋github。

本指南介紹了如何使用和建立外掛程式。

我在**  不斷更新,同時也會搬運到這裡,大家有興趣加入的可以給我提交意見和建議。

helm外掛程式是與helm無縫整合的附加工具。它們提供了擴充套件helm核心功能集的方法,但不需要將每個新功能都通過go語言寫入並新增到核心工具中。

helm外掛程式具有以下功能:

helm外掛程式放置在$(helm home)/plugins。

helm外掛程式模型部分建模在​​git的外掛程式模型上。為此,有時可能會聽到helm稱為瓷層 porcelain,外掛程式是管道 plumbing。這是揭示helm提供使用者體驗和頂級處理邏輯,而外掛程式則是執行所需操作的「細節工作」的簡略說法。

使用$ helm plugin install命令安裝外掛程式。可以將路徑設定為本地檔案系統上的外掛程式或遠端vcs repo的url。helm plugin install命令轉殖或複製該外掛程式的路徑/url到給定的$(helm home)/plugins

$ helm plugin install
也可以通過直接從url安裝tarball外掛程式helm plugin installhttp://domain/path/to/plugin.tar.gz

在很多方面,外掛程式類似於chart。每個外掛程式都有乙個頂級目錄,然後是乙個plugin.yaml檔案。

$(helm home)/plugins/

|- keybase/

||- plugin.yaml

|- keybase.sh

在上面的例子中,keybase外掛程式包含在名為keybase的目錄中。它有兩個檔案:(plugin.yaml必需)和乙個可執行指令碼keybase.sh(可選)。

外掛程式的核心是乙個簡單的yaml檔案plugin.yaml。這是乙個外掛程式的乙個外掛程式yaml,它增加了對keybase操作的支援:

name: "keybase"

version: "0.1.0"

usage: "integrate keybase.io tools with helm"

description: |-

this plugin provides keybase services to helm.

ignoreflags: false

usetunnel: false

command: "$helm_plugin_dir/keybase.sh"

name是外掛程式的名稱。當helm執行外掛程式時,這是它將使用的名稱(例如,helm name將呼叫此外掛程式)。

name應該匹配目錄名稱。 在我們上面的例子中,這意味著外掛程式name: keybase應該在乙個名為keybase的目錄中。

name的限制:

version是外掛程式的semver 2版本。usagedescription都用於生成命令的幫助文字。

ignoreflags告訴h​​elm 不會將引數傳遞給外掛程式。所以,如果乙個外掛程式被helm myplugin --foo呼叫,並且ignoreflags: true,那麼--foo將被忽略。

usetunnel指示外掛程式需要乙個隧道去連線tiller。這在任何時候外掛程式與tiller對接都應該設定為true 。它會使helm開啟乙個隧道,然後`$tiller_host為該隧道設定正確的本地位址。不用擔心:如果helm由於tiller在本地執行而檢測到隧道是不必啊喲的,它就不會建立隧道。

最後,也是最重要的是,command,是這個外掛程式在呼叫時會執行的命令。在執行外掛程式之前會插入環境變數。上面的模式說明了指出外掛程式所在位置的首選方式。

有一些使用外掛程式命令的策略:

外掛程式應在plugin.yaml檔案(頂層)中宣告這個特殊功能:

**********s:

- command: "bin/my**********"

protocols:

- "myprotocol"

- "myprotocols"

當helm執行外掛程式時,它將外部環境傳遞給外掛程式,並且還會注入一些其他環境變數。

類似kubeconfig的變數將為外掛程式設定,如果他們設定在外部環境變數中。

保證以下變數設定:

雖然helm_host可以設定,但不能保證它會指向正確的tiller例項。這是為了允許外掛程式開發人員在外掛程式本身需要手動配置連線時以其原始狀態進行訪問helm_host

如果外掛程式指定usetunnel: true,helm將執行以下操作(按順序):

解析全域性標誌和環境

建立隧道

設定tiller_host

執行外掛程式

關閉隧道 command 退出後,隧道即被移除。因此,假定乙個程序要使用該隧道,它不能是後台程序,。

在執行外掛程式時,helm會解析全域性標誌以供自己使用。其中一些引數標誌不會傳遞給外掛程式。

-h--help,外掛程式應該顯示幫助文字,然後退出。在所有其他情況下,外掛程式可以根據需要使用引數標誌。

6 系統使用者指南 軟體專案角色指南系列文章

系統使用者這個角色在專案管理過程中也是重要的一員。在實際的專案管理過程中,專案經理除了與客戶負責人進行溝通之外,還需要與系統實際的使用者進行溝通,讓客戶負責人與系統使用者等進行協調,為專案組爭取利益,讓系統實際開發出來的功能是滿足及更好的符合系統使用者的工作內容以及業務需求,還有就是使用者體驗及介面...

6 系統使用者指南 軟體專案角色指南系列文章

系統使用者這個角色在專案管理過程中也是重要的一員。在實際的專案管理過程中,專案經理除了與客戶負責人進行溝通之外,還需要與系統實際的使用者進行溝通,讓客戶負責人與系統使用者等進行協調,為專案組爭取利益,讓系統實際開發出來的功能是滿足及更好的符合系統使用者的工作內容以及業務需求,還有就是使用者體驗及介面...

Guice系列之使用者指南(十一)

injections 各種注入 常見的有建構函式注入,set方法注入,成員變數注入,前面幾篇提到過,就說說沒有提到的。optional injections 可選擇的注入 就是在注入時可以選擇使用注入,通過 inject optional true 實現。publicclasspaypalcredi...