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

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

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

必須在系統上安裝以下先決條件才能建置和測試 NDB Operator

Golang 1.16 或更新版本,用於編譯運算子。

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

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

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

> make build

自訂資源定義和其他 manifest 檔案會由 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 並使用運算子部署 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 類型進行任何變更,您必須重新產生用戶端集、informer 和 lister。您可以在 pkg/generated 中執行以下命令來執行此操作

> make generate
警告

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

測試 NDB Operator。 NDB Operator 專案隨附使用 go testing 套件開發的單元測試,以及建立在 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