本節說明如何從原始碼編譯、安裝和測試 NDB Operator。如果您還沒有原始碼,請參閱第 2.2 節, 「取得 NDB Operator」。
必須在系統上安裝以下先決條件才能建置和測試 NDB Operator
Golang 1.16 或更新版本,用於編譯運算子。
Docker,用於建置 NDB Operator 和其他容器映像檔。Docker 也用於執行 E2E 測試案例。
Minikube 或 KinD,用於部署和測試 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 命令載入映像檔。對於 Minikube,則取決於使用的容器執行階段;請參閱將映像檔推送到 minikube 叢集。如需有關設定 NDB Operator 並使用運算子部署 NDB Cluster 的資訊,請參閱第 3 章,使用 NDB Operator 部署 NDB Cluster。docker_image
使用 Minikube 時,預設記憶體配置可能不足以執行 NDB Operator;您可以使用 minikube config set 增加記憶體。若要部署 memory_limitdocs/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-operator 和 e2e-tests 映像檔都必須可供 Kubernetes 叢集存取。
測試工具也可以啟動自己的 KinD 叢集,然後在其中執行 E2E 測試。具有 mysql/ndb-operator 和 e2e-tests 映像檔的 Docker 執行個體必須可從執行測試的終端機存取。KinD 叢集會在此程序中做為 Docker 的一部分啟動。您可以執行此處顯示的其中一個命令來執行此操作
> go run e2e-tests/run-e2e-test.go -use-kind
> make e2e-kind