官术网_书友最值得收藏!

2.2 本地環境構建

使用本地環境構建時,如果讀者使用的是macOS系統,其中可能會附帶過時的BSD工具。Kubernetes官方的建議是安裝macOS GNU工具,詳情見官方Kubernetes開發指南。執行構建操作的命令示例如下:

執行make或make all命令,會編譯Kubernetes的所有組件,組件二進制文件輸出的相對路徑是_output/bin/。如果我們需要對Makefile的執行過程進行調試,可以在make命令后面加-n參數,輸出但不執行所有執行命令,這樣可以展示更詳細的構建過程。假設我們想單獨構建某一個組件,如kubectl組件,則需要指定WHAT參數,命令示例如下:

2.2.1 一切都始于Makefile

Go語言開發者習慣于手動執行go build(構建)和go test(單元測試)命令,因為Go語言為開發者提供了便捷的工具。但在一些生產環境或復雜的大型項目中,這是一種不好的開發習慣,而在實際的Go語言開發項目中使用Makefile是好的約束規范。

Makefile是一個非常有用的自動化工具,可以用來構建和測試Go語言應用程序。Makefile還適用于大多數編程語言,如C++等。在Kubernetes的源碼根目錄中,有兩個與Makefile相關的文件,分別介紹如下。

Makefile:頂層Makefile文件,描述了整個項目所有代碼文件的編譯順序、編譯規則及編譯后的二進制輸出等。

Makefile.generated_files:描述了代碼生成的邏輯。

通過make help命令,可以展示出所有可用的構建選項,從構建到測試的選項都有。首先,看一下make all命令在Makefile中的定義,代碼示例如下:

若要在Kubernetes的Makefile文件中定義,其步驟為:第1步,執行generated_files命令(在Makefile中稱其為目標),用于代碼生成(Code Generation);第2步,通過調用hack/make-rules/build.sh腳本開始執行構建操作,其中的$(WHAT)參數表示要指定構建的Kubernetes組件名稱,不指定該參數則默認構建Kubernetes的所有組件。

2.2.2 本地構建過程

通過調用hack/make-rules/build.sh腳本開始構建組件,傳入要構建的組件名稱,不指定組件名稱則構建所有組件。hack/make-rules/build.sh代碼示例如下:

build_binaries接收構建的組件名稱,設置構建所需的環境及一些編譯時所需的Go flags選項,然后通過go install構建組件:

在go install命令執行完成后,二進制輸出的目錄為_output/bin/。通過make all命令構建所有組件,二進制輸出如下(只展示了核心組件):

最后,可以使用make clean命令來清理構建環境。

主站蜘蛛池模板: 天镇县| 宁海县| 甘南县| 宁阳县| 定州市| 武山县| 新巴尔虎右旗| 顺义区| 保定市| 寿宁县| 濮阳县| 荔浦县| 凌云县| 康定县| 会同县| 三都| 周至县| 万源市| 上杭县| 凤阳县| 凌海市| 新丰县| 莱阳市| 唐山市| 平武县| 浦江县| 怀仁县| 兴义市| 承德县| 来宾市| 嘉定区| 麟游县| 安图县| 云南省| 北流市| 新沂市| 洮南市| 大埔区| 滕州市| 南乐县| 荣成市|