NDB Operator 9.0 手冊  /  NDB Operator 安裝  /  從原始碼建置 NDB Operator 映像檔

2.5 從原始碼建置 NDB Operator 映像檔

本節說明如何從原始碼編譯、安裝和測試 NDB Operator。如果您還沒有原始碼,請參閱第 2.2 節,「取得 NDB Operator」

若要建置和測試 NDB Operator,必須在系統上安裝下列先決條件

Golang 1.16 或更新版本,用於編譯 operator。

Docker,用於建置 NDB Operator 和其他容器映像檔。Docker 也用於執行 E2E 測試案例。

MinikubeKinD,用於部署和測試 NDB Operator。也需要 Kubernetes 1.19 或更新版本。

原始碼隨附的 Makefile 包含建置 operator 所需的所有目標;這可以使用此處顯示的命令完成

> make build

自訂資源定義和其他資訊清單檔案會由 build 目標重新產生。

預設情況下,NDB Operator 會以發行模式建置。若要在開發中使用偵錯模式來建置,請在叫用建置時將 WITH_DEBUG 環境變數設定為 1,如下所示

> WITH_DEBUG=1 make build

若要產生 NDB Operator Docker 映像檔,請執行此處顯示的命令

> make operator-image

建立映像檔後,必須使其可供 Kubernetes 叢集存取。對於 KinD,您可以使用 kind load docker_image 命令來載入映像檔。對於 Minikube,則取決於使用的容器執行階段;請參閱將映像檔推送至 minikube 叢集。如需設定 NDB Operator 和使用 operator 部署 NDB Cluster 的相關資訊,請參閱第 3 章,「使用 NDB Operator 部署 NDB Cluster」

使用 Minikube 時,預設記憶體配置可能不足以執行 NDB Operator;您可以使用 minikube config set memory_limit 來增加記憶體配置。若要部署 docs/examples/example-ndb.yaml 的範例,Minikube 至少需要 5GB 的記憶體;您可以如下所示設定此值

> minikube config set memory 5GB

變更 NdbCluster 類型。如果對 pkg/apis/ndbcontroller/v1/types.go 中的 NdbCluster 類型進行任何變更,您必須重新產生用戶端集、資訊器和清單器。您可以在 pkg/generated 中執行以下命令來執行此操作

> make generate
警告

在 NDB Operator 升級進行時,請勿嘗試修改 NdbCluster 類型。如需更多資訊,請參閱第 2.7 節,「升級 NDB Operator」

測試 NDB Operator。NDB Operator 專案隨附使用 go 測試套件開發的單元測試,以及建置於 Ginkgo/Gomega 測試架構之上的更精密的端對端 (E2E) 測試套件。

大多數單元測試都與套件放置在一起,並測試這些套件內的方法。它們有時會使用模擬的 Kubernetes 用戶端來驗證 NDB Operator 傳送的要求是否符合預期。

E2E 測試案例是整合測試的集合,這些測試會變更 NdbCluster 資源物件,並驗證由該物件控制的 NDB Cluster 組態是否會相應地變更。測試案例會使用內部開發且建置於 Ginkgo 測試架構之上的 E2E 架構。應該使用 e2e-tests/run-e2e-test.go 執行測試;此測試工具的選項可以在 e2e-tests/README.md 中找到。測試可以在現有的 Kubernetes 叢集中執行,也可以使用 KinD 在新的叢集中執行。

若要產生 E2E 測試映像檔,請在命令列上執行 make e2e-tests

若要在現有的 Kubernetes 叢集中執行 E2E 測試,請將此叢集的 kubeconfig 檔案路徑傳遞至 run-e2e-test.go 工具,如下所示

> go run e2e-tests/run-e2e-test.go -kubeconfig=path/to/file

mysql/ndb-operatore2e-tests 映像檔都必須可供 Kubernetes 叢集存取。

測試工具也可以啟動自己的 KinD 叢集,然後在其中執行 E2E 測試。具有 mysql/ndb-operatore2e-tests 映像檔的 Docker 執行個體必須可從正在執行測試的終端機存取。KinD 叢集會在 Docker 內部啟動,作為此程序的一部分。您可以執行以下其中一個顯示的命令來執行此操作

> go run e2e-tests/run-e2e-test.go -use-kind

> make e2e-kind